Professional Documents
Culture Documents
OPERATIVI
1. INTRODUZIONE
Sistema operativo: programma che agisce come intermediario fra utente programmatore e
hardware del calcolatore. Il Sistema Operativo un assegnatore di risorse e un programma di
controllo.
Componenti di un sistema di calcolo: Hardware(CPU, memoria, I/O); Sistema Operativo;
altri programmi di sistema(compilatori, editor); programmi applicativi; utenti(persone,
macchine).
Lobbiettivo di un S.O. realizzare una macchina astratta(che esegue programmi utente e
pi facile soluzione problemi; sistema di calcolo pi facile di programmare) e gestione delle
risorse del sistema(hardware del calcolatore in modo sicuro ed efficiente).
Job: processo, programma in esecuzione.
Primi sistemi (primi anni50): grossi calcolatori funzionanti da console. Primi Software
(assemblatori, compilatori, linker);
Sistemi Batch: si riduce il tempo di setup, raggruppano Job simili in batch. Lutente
diverso dalloperatore (loperatore passa dati dalle schede perforate al nastro. Si aggiunge
quindi un lettore di schede. Tra i primi S.O. abbiamo FMS(Fortran Monitor System).
Schede di controllo: schede speciali che indicano al monitor residente quali programmi
mandare in esecuzione. Caratteri speciali distinguono le schede di controllo dalle schede di
programma o di dati. Una parte del monitor residente : Loader (carica programmi di
sistema), driver dei dispositivi. Problema: bassa performance, molto lenti.
Funzionamento off-line: il computer non limitato dalla velocit dei lettori di schede o
stampanti, ma sono dalle velocit delle unit nastro.
Batch Multiprogrammati (anni 60): pi job tenuti in memoria nello stesso momento, e la
CPU fa a turno su tutti i job, cio la CPU alterna lesecuzione. Il sistema deve allocare memoria
per pi job(processi).
Spooling: mentre un processo utilizza lI/O, laltro utilizza la CPU simultaneamente. Cio
c sovrapposizione dellI/O di un job con la computazione di un altro job.
Sistemi Time-Sharing (anni 70): viene fornita una comunicazione on-line tra utente e
sistema; quando il S.O. termina lesecuzione di un comando, attende il prossimo statement di
controllo non dal lettore di schede, bens dalla tastiera dellutente.
Personal Computer (anni 80): sistemi di calcolo dedicati ad un singolo utente; dispositivi
I/O, tastiere, mouse, schermi, stampanti piccole; comodit per lutente; interfaccia grafica.
Sistemi Operativi di rete (anni 90): distribuzione tra pi processori, ogni processore ha la
sua memoria. Ogni nodo/calcolatore ha il proprio sistema operativo.
Sistemi Operativi distribuiti(futuro): lutente ha una visione unitaria del sistema di calcolo.
Un S.O. distribuito pi complesso di un S.O. di rete.
Ci sono diversi S.O. a seconda delle esigenze:
S.O. per Mainframe: grosso uso di I/O in confronto ai supercalcolatori; enormi quantit di
dati; gestione di grosse basi di dati; assoluta stabilit.
S.O. per Supercalcolatori: grandi quantit di dati; enormi potenze di calcolo; architettura
NUMA o NORMA(migliaia di CPU); elaborazione batch non interattiva; Es: Unix.
S.O. per Server: sistemi multiprocessore con spesso pi di una CPU in comunicazione
stretta; alta tolleranza a errori e guasti; riconfigurazione hardware a caldo; elaborazione su
richiesta (semi-interattiva);Es: Unix, Linux, Windows.
S.O. per personal computer: dedicati a un singolo utente, Interfaccia utente evoluta,
grande variet di dispositivi I/O. Es: Windows 7, Linux, Macintosh.
S.O. Real time: vincoli temporali fissati e ben definiti.
Sistemi hard-real-time: i vincoli devono essere soddisfatti;
Sistemi soft-real-time: i vincoli possono anche non essere soddisfatti ma il S.O. deve
fare del suo meglio.
S.O. per palmari e embedded: hanno spesso caratteristiche real time; limitate risorse
hardware.
S.O. per smart card: girano sulla CPU delle smartcard; implementano funzioni minime
(Es: pagamento elettronico); stretti vincoli sulluso della memoria e alimentazione; Es: Java
Card.
2. STRUTTURA DEI CALCOLATORI
Struttura della memoria: Memoria principale(memoria che la CPU pu accedere
direttamente) e Memoria secondaria( memoria non volatile solitamente pi grande).
Dischi magnetici: piatti di metallo rigido ricoperti di materiale ferromagnetico in rotazione.
Superficie divisa in tracce, che sono sottodivise in settori.
Caching: duplicare i dati pi frequentemente usati di una memoria, in unaltra pi veloce.
Gerarchia memoria: Registri(<1 kB); Cache(1 MB); Main Memory(64-512 MB); magnetic
disk(5-50 GB); Magnetic Tape(20-100 GB).
Operazioni dei sistemi di calcolo: i dispositivi I/O e la CPU possono funzionare
concorrentemente; ogni controller di dispositivo gestisce un particolare tipo di dispositivo; ogni
controller ha un buffer locale; lI/O avviene tra il dispositivo e il buffer locale del controller; il
controller informa la CPU quando ha terminato la sua operazione, generando un Interrupt.
METODI DI INPUT/OUTPUT:
1. Busy Wait(attesa attiva): un programma utente emette una chiamata di sistema, che il
kernel traduce in una chiamata di procedura al driver appropriato; dopodich il server da il
via alloperazione di ingresso/uscita e entra in un ciclo serrato, durante il quale continua a
interrogare il dispositivo per verificare se questo ha terminato loperazione. Quando
loperazione di I/O terminata, il driver restituisce i dati richiesti, se ce ne sono, e
termina; il S.O. quindi restituisce il controllo al chiamante.
Vantaggio: la pi semplice; Svantaggio: tiene occupata la CPU nellinterrogazione del
dispositivo(pooling) finche loperazione di I/O non finita.
2. Interrupt: il driver fa partire il dispositivo, e questo manda uninterruzione al driver
quando ha finito, dopodich il driver termina la sua esecuzione. Il S.O., nel frattempo,
blocca il programma chiamante, se necessario, e controlla se ci sono altri lavori da fare.
Quando il controllore rileva la fine di un trasferimento, genera una
interruzione(interrupt) per segnalare il completamento delloperazione.
Pu essere eseguito tramite pooling e vettore di interruzioni(parte di memoria che
contiene gli indirizzi dei gestori delle interruzioni)
3. DMA(Direct Memory Access): chip speciale che pu controllare il flusso dei bit tra
memoria e controllori senza il continuo intervento della CPU. La CPU avvia il chip DMA,
specificando quanti bit deve trasferire, il dispositivo e gli indirizzi di memoria coinvolti, la
direzione e cosi via; quando il chip DMA ha terminato, genera un interrupt, che viene
gestita dal gestore delle interruzioni.
Trap: interrupt generato dal software; causato da errori o da una richieste utente.
I/O sincrono: dopo che lI/O partito, il controllo ritorna al programma utente solo dopo che
lI/O stato completato.
I/O asincrono: dopo che lI/O partito, il controllo ritorna al programma utente senza
aspettare ce lI/O sia completato.
System Call (chiamata di sistema): richiede al S.O. di sospendere il processo in attesa del
completamento dellI/O.
Funzionamento Dual-mode: la CPU ha un mode bit che indica in quale modo si trova:
monitor(0, la CPU sta eseguendo codice del sistema operativo) o user(1, la CPU sta eseguendo
codice di un utente); quando avviene un interrupt, lhardware passa in modo monitor.
Protezione dellI/O: assicurarsi che programma utente non vada in modo supervisore.
Protezione della memoria: proteggere almeno il vettore delle interruzioni e la routine di
gestione degli interrupt. Si aggiungono due registri che determinano il range di indirizzi a cui
un programma pu accedere per avere la protezione. Al di fuori di questo range la memoria
protetta.
Protezione della CPU: il Timer interrompe la computazione dopo periodi prefissati, per
assicurare che periodicamente il S.O. riprenda il controllo. Quando il timer va a 0, avviene
linterrupt.
Invocazione del S.O.: attraverso la System Call.
3. COMPONENTI E STRUTTURA DEI SISTEMI OPERATIVI
Batch: processo che non ha nessuna iterazione con lutente.
COMPONENTI E STRUTTURA S.O.: componenti del sistema; servizi del Sistema Operativo;
chiamate di sistema; programma di sistema; struttura di sistema; macchine virtuali.
COMPONENTI COMUNI DEI SISTEMI:
1. Gestione dei processi: Il S.O. responsabile delle attivit relative alle gestione dei
processi: creazione e cancellazione del processo; sospensione e resume dei processi; fornire
meccanismi per sincronizzare e comunicare tra processi e gestione dei deadlock.
Processo: programma in esecuzione. Esso necessita di tempo di CPU, memoria, file,
dispositivi I/O, per svolgere il suo compito.
2. Gestione Memoria principale: memoria principale grande array di parole, ognuna
identificata da un preciso indirizza; essa volatile; bisogna decidere quale processo caricare
in memoria.
3. Gestione Memoria secondaria: memoria di supporto a quella principale. I dischi sono i
principali supporti. Il S.O. responsabile di gestire spazio libero e riallocare lo spazio.
4. Gestione I/O: sistema di I/O consiste in: sistema di caching, buffering, spooling;
interfaccia generale ai gestori dei dispositivi; driver per ogni specifico hardware.
5. Gestione File: i file rappresentano programmi e dati. Il S.O. responsabile di:
creazione/cancellazione di file o directory; allocazione dei file nella memoria secondaria.
6. Sistemi di protezione: il meccanismo di protezione deve: distinguere tra uso autorizzato e
non; fornire un modo per specificare i controlli da imporre; forzare utenti e processi a
sottostare ai controlli richiesti.
Protezione: meccanismo per controllare laccesso da programmi, processi e utenti al
sistema e alle risorse degli utenti.
7. Networking(Sistemi distribuiti): collezione di processi che non condividono memoria o
clock. I processi sono connessi attraverso rete di comunicazione. Laccesso a una risorsa
condivisa permette: aumento prestazione computazionali; incremento quantit dati
disponibili; aumento affidabilit;
8. Interprete comandi: programma che interpreta i comandi ha diversi nomi: shell;
interprete linee comando(Dos, Windows); interprete schede controllo(sistemi batch). La sua
funzione ricevere un comando, eseguirlo e ripetere.
Servizi dei Sistemi Operativi:
esecuzione programmi: caricamento programmi in memoria e esecuzione;
operazioni di I/O: S.O. deve fornire un modo per condurre le operazioni I/O;
manipolazione dei file system: capacit di creare, cancellare, leggere, scrivere file.
Comunicazioni: scambio informazioni tra processi in esecuzione su stesso computer o
sistemi collegati da una rete;
individuazione errori.garantire computazione corretta individuando errori.
Funzionalit addizionali: servono per assicurare lefficienza del sistema, piuttosto che
aiutare lutente: allocazione risorse; accounting(tener traccia di chi usa cosa); protezione.
System Calls (chiamate di sistema): formano linterfaccia tra un programma in esecuzione
e il S.O. Generalmente sono disponibili come speciali instruzioni assembler.
Tre metodi per passare parametri tra programma e S.O: passare parametri nei registri;
memorizzare parametri in tabella in memoria, passando indirizzo come parametro in un
registro; programma fa push dei parametri su stack, e S.O. fa il pop.
Tipi di System Calls:
Controllo dei processi: creazione/terminazione processi, esecuzione programmi,
allocazione memoria, attesa di eventi, impostazione attributi;
Gestione dei file: creazione/cancellazione, apertura/chiusura, lettura/scrittura,
impostazione attributi;
Gestione dei dispositivi: allocazione/rilascio dispositivi, lettura/scrittura, collegamento
logico dispositivi;
Informazioni di sistema: leggere/scrivere data e ora sistema, info su hw/sw installato;
Comunicazioni: creare/cancellare connessioni, spedire/ricevere messaggi.
Struttura Sistemi Operativi: approccio semplice: MS-DOS pensato per fornire massime
funzionalit nel minore spazio possibile; UNIX limitato da funzionalit Hw; approccio
stratificato: S.O. diviso in strati(livelli). Strato di base(0) hw, il pi alto linterfaccia
utente. Prima stratificazione usata: 0-Hardware; 1-CPU Scheduling; 2-Memory Management;
3-Operator devide driver; 4-buffering for I/O devices; 5-User programs.
Macchina virtuale: porta approccio stratificato allestremo, cio tratta hw e S.O. come se
fosse tutto hw. Scheduling CPU crea illusione che ogni processo abbia suo processore dedicato.
La macchina virtuale fornisce una protezione completa delle risorse di sistema, non permette
per condivisione diretta delle risorse. Essa perfetta per lemulazione di altri S.O..
Exokernel: estensionsione dellidea di macchina virtuale. Le risorse vengono richieste
allexokernell, che tiene traccia di quali risorse sono usate da chi. Deve solo tenere separati
domini di allocazione risorse.
Microkernel: kernel ridotto allosso, fornisce solo meccanismi di comunicazione tra pocessi,
minima gestione della memoria e dei processi e gestione dellhw di basso livello(driver). Tutto
il resto viene gestito da processo in spazio utente.
4. PROCESSI E THREAD
(A) CONCETTO DI PROCESSO: un S.O. esegue diversi programmi: nei sistemi batch i
jobs; nei sistemi time-shared i programmi utente. Lesecuzione sequenziale.
Multiprogrammazione: pi processi in memoria, per tener occupate le CPU.
Time-sharing: CPU vengono commutate tra pi processi.
Switch di contesto: quando CPU passa ad un altro processo, il sistema deve salvare lo stato
del vecchio processo e caricare quello del nuovo processo. Il tempo impiegato per lo switch
dipende dal supporto hw.
(B) OPERAZIONI PROCESSI: viene creato un processo al boot del sistema su richiesta
dellutente; inizio di un job.
Esecuzione: il padre attende che i figli terminino per riprendere lesecuzione.
Condivisione: padre e figli condividono le stesse risorse; padre e figli non condividono
nessuna risorsa.
Terminazinazione processi: terminazione volontario a con errore(exit); terminazione
involontaria(errore fatale); terminazione da parte di un altro processo; terminazione da parte
del Kernel.
Gerarchia dei processi: si formano famiglie di processi; utili per comunicazione tra processi;
in windows non c gerarchia.
(C) STATO DEL PROCESSO: durante lesecuzione un processo cambia stato. 5 stati:
new: processo appena creato; running: istruzioni programma eseguite da CPU; waiting:
processo attende qualche evento; ready: attende di essere assegnato; terminated: processo
ha completato la sua esecuzione.
Il passaggio da uno stato allaltro avviene in seguito a interruzioni, richieste di risorse non
disponibili, selezione da parte dello scheduler.
Gestione e implementazione processi in UNIX: lutente pu creare e manipolare pi
processi. Sono rappresentati da process control block.
Proces Control Block: contiene informazioni: stato del processo; dati identificativi; program
counter; registri CPU; Info per scheduling CPU, gestione memoria; info utilizzo risorse; stato
segnali. La struttura base pi importante la process structure: contiene stato del processo,
puntatori alla memoria.
Text structure: sempre residente in memoria. Le info sui processi che sono richieste solo
quando il processo residente in memoria sono mantenure nella user structure.
Code di scheduling dei processi: cosa dei processi(insieme di tutti i processi del sistema);
ready queue(processi residenti in memoria principale, pronti e in attesa di essere messi in
esecuzione); code dei dispositivi( processi in attesa di un dispositivo di I/O).
I processi, durante lesecuzione, migrano da una coda allaltra.
GLI SCHEDULER: scelgono quali processi passano da una coda allaltra.
Scheduler a lungo termine: seleziona i processi da portare nella ready queue. Esso
invocato raramente, pu essere lento e sofisticato. Inoltre controlla il grado di
multiprogrammazione e il job mix(giusto equilibrio tra processi I/O e CPU bound.
Scheduler di breve termine: seleziona quali processi ready devono essere eseguiti, e quindi
assegna la CPU. Esso invocato decine di volte al secondo.
Alcuni sistemi hanno anche lo scheduler di medio termine: sospende temporaneamente i
processi per abbassare il livello di multiprogrammazione.
I processi possono essere descritti come: I/O bound: lunghi periodi di I/O, brevi periodi di
calcolo; CPU-bound: lunghi periodi di intensiva computazione, pochi(ma lunghi) cicli di I/O.
Processi in UNIX tradizionale: ogni processo UNIX ha uno spazio indirizzi separato. Tre
segmenti: Stack: stack di attivazione delle subroutine, cambia dinamicamente; Data:
contiene heap e dati inizializzati al caricamento del programma; Text: codice eseguibile.
Segmenti dei dati di sistema: la maggior parte della computazione viene eseguita in user
mode; le system call vengono eseguite in modo di sistema. Le due fasi di un processo non si
sovrappongono mai: un processo si trova sempre in una o nellaltra fase. Per lesecuzione in
modo kernel, il processo usa uno stack separato, invece di quello del modo utente.
CREAZIONE DI UN PROCESSO: la fork alloca una nuovo process structure per il processo
figlio. La execve non crea nessun nuovo processo, i segmenti dati e stack vengono
rimpiazzati. La vfork non copia i segmenti data e stack, vengono condivisi. Il processo padre
usa vfork per produrre il figlio, che usa execve per cambiare lo spazio di indirizzo virtuale.
Stati di processo in UNIX:
User running: esecuzione in modo utente;
Kernell running: esecuzione in modo kernel;
Ready to run, in memory: pronto per andare in esecuzione;
Asleep in memory: in attesa di un evento; processo in memoria;
Ready to run, swapped: eseguibile, ma swappato su disco;
Sleeping, swapped: in attesa di un evento; processo swappato;
Preempted: il kernel lo blocca per mandare un altro processo;
Zombie: il processo non esiste pi, si attende che il padre riceva linfpormazione dello stato
di ritorno.
(D) THREAD: o processo leggero, una unit di esecuzione: program counter, insieme di
registri; stack del processore; stato di esecuzione. Un thread condivide con i thread suoi pari
un allocazione risorse: codice eseguibile; dati; risorse richieste al S.O..
Task: unit di risorse + i thread che vi accedono.
CONDIVISIONE RISORSE TRA THREAD:
Vantaggi: maggiore efficienza. Creare e calcellare thread pi veloce; scheduling tra thread
dello stesso processo molto pi veloce che tra processi; cooperazione di pi thread nello
stesso stack porta maggiore throughput e performance.
Svantaggi: maggiore complessit di programmazione e progettazione; inadatto per situazioni
in cui i dati devono essere protetti.
Esempi di applicazioni multithread: lavoro foreground/background: mentre un thread
gestisce lI/O con lutente, altri thread operano sui dati in background; elaborazione
asincrona: operazioni asincrone possono essere implementate come thread; task
intrinsicamente paralleli: vengono implementati e eseguiti pi efficacemente con i thread.
STATI E OPERAZIONI SUI THREAD: Stati: running, ready, blocked.
Operazioni sui thread:
Creazione(spawn): un nuovo thread viene creato allinterno di un processo;
Blocco: un thread si ferma e lesecuzione passa ad un altro thread;
Sblocco: quando un thread passa dallo stato blocked al ready;
Cancellazione: il thread chiede di essere cancellato.
USER LEVEL THREAD(ULT): stack, program counter, e operazioni su thread sono
implementati in librerie a livello utente. Vantaggi: efficiente(non c costo della system call);
portabile. Svantaggi: non c scheduling automatico tra thread (non c prelazione dei
thread); accesso kernel sequenziale; non sfrutta sistemi multiprocessore; poco utile per
processo I/O bound.
KERNEL LEVEL THREAD(KLT): il kernel gestisce direttamente i thread. Le operazioni sono
ottenute attraverso system call. Vantaggi: un thread che si blocca non blocca lintero
processo; utile per processi di I/O bounds. Svantaggi: meno efficienza; necessit aggiunta e
riscrittura di system call dei kernel preesistenti; meno portabile; politica di scheduling non pu
essere modificata.
Implementazioni ibride ULT/KLT: Sistemi ibridi: permettodo sia thread livello utente che
kernel. Vantaggi: quelli di ULT e KLT; alta flessibilit. Svantaggio: portabilit;
Thread Pop-up: sono creati in modo asincrono da eventi esterni; molto utili in contesti
distribuiti; bassi tempi di latenza. Complicazioni: dove eseguirli? In user space, in kernel
space. Implementato in Solaris.
THREAD DI SOLARIS(TRADIZIONALE):
Processo: normale processo UNIX;
User-level thread: implementato da una libreria a livello utente. Invisibili al kernel.
Lightweight process: assegnamento di ULT ad un thread in kernel. Ogni LWP supporta uno o
pi ULT, ed gestito da kernel.
Kernel thread: entit gestite dallo scheduler.
Task con paralellismo logico hanno pi ULT su un solo LWP. Task con paralellismo fisico
hanno pi ULT su pi LWP. I task di sistema vengono implementato come kernel thread non
associati a LWP.
STATI di ULT e LWP di Solaris tradizionela:
Sleep: un ULT esegue una primitiva sincronizzazione e si sospende.
Wakeup: condizione viene soddisfatta;
Dispatch: LWP libero, il thread viene selezionato;
Preempt: si sblocca un ULT a priorit maggiore;
Yielding: un ULT rilascia il controllo eseguendo thr-yield.
STATI dei processi/thread con LINUX: fornisce una peculiare system call che generalizzi la
fork. I flag descrivono cosa il thread figlio deve condividere con il parent.
Stati: ready, running, waiting, stopped(esecuzione sospesa), zombie(terminata).
STATI dei processi/thread con WINDOWS:
Job: collezione di processi che condividono quota e limiti.
Processo: dominio di allocazione risorse.
Thread: entit schedulata dal kernel; alterna modo user e modo kernel; doppio stack.
Fibra(thread leggero): thread a livello utente; invisibili al kernel.
Stati: ready(pronto per essere schedulato), standby(selezionato per essere eseguito),
running, waiting, transition(eseguibile ma in attesa di risposta), terminated(terminato ma non
ancora cancellabile).
5. SCHEDULING DELLA CPU
Scheduling CPU: uso della CPU attraverso multiprogrammazione; Ciclo Burst CPU I/O:
esecuzione consiste in un ciclo di periodi di esecuzione di CPU ed attesa I/O.
+
Scheduler a breve termine: seleziona tra i processi in memoria e pronti per lesecuzione
quello a cui allocare la CPU. La decisione dello scheduler avviene quando un processo: 1-passa
da running a waiting; 2-da running a ready; 3-da waiting a new a ready; 4-termina. 1 e 4
senza prelazione, gli altri con prelazione.
Dispatcher: modulo che da il controllo della CPU al processo selezionato dallo scheduler di
breve termine. Comporta switch di contesto; passaggio della CPU da supervisore a user. E
veloce(essenziale). La latenza di dispatch il tempo necessario per fermare un processo e
riprenderne un altro.
Criteri di valutazione scheduling: utilizzo della CPU; throughput(processi completati
nellunit di tempo); Turnaround(tempo per lesecuzione di un processo); tempo di
attesa(attende in ready); tempo di risposta(dallinvio alla risposta); varianza tempo di
risposta.
SCHEDULING FIRST-COME, FIRST-SERVED(FCFS): ai processi viene assegnata la CPU
nellordine in cui lhanno richiesta. Fondamentalmente c una sola coda di processi nello stato
di pronto, e quando il primo job arriva al sistema, inizia immediatamente e pi stare in
esecuzione quanto a lungo vuole. Quando arrivano altri job, questi vengono messi in coda;
quando il processo in esecuzione si blocca, il prima processo in coda il prossimo processo che
viene eseguito; e in seguito, quando il processo bloccato passa allo stato di pronto, viene
messo in fondo alla coda come un job appena arrivato.
senza prelazione(inadatto per time-sharing); equo(no pericolo di starvation).
SCHEDULER SHORTEST-JOB-FIRST(SJF): processi ordinate e schedulati per tempi
crescenti. Due schemi possibili: nonpreempitive: quando la CPU viene assegnata ad un
processo, questo lo mantiene fuori finche non termina il suo burst); preempitive: se nella
ready queue arriva un nuovo processo il cui prossimo burst minore del tempo rimanente per
il processo in esecuzione, questultimo viene prelazionato. SJF ottimale: fornisce il minimo
tempo di attesa per un dato insieme di processi.
Come determinare la lunghezza del prossimo ciclo di burst? Si pu dare solo una stima.
Nei sistemi batch il tempo viene stimato dagli utenti. Nei sistemi time sharing possono
essere usati i valori burst precedenti, con una media pesata esponenziale.
SCHEDULING A PRIORITA: un numero di pririt associato ad ogni processo. CPU viene
allocata al processo con priorit pi alta. Priorit possono essere definite: internamente: in
base a parametri misurati dal sistema sul processo; esternamente: importanza del processo,
del processo, dellutente proprietario, dei soldi pagati.
Essi possono essere preemptive o non preemptive. SJF uno scheduling a priorit, dove la
priorit il prossimo burst di CPU previsto.
Problema: starvation(processi a bassa priorit possono venire bloccati da un flusso continuo
di processi a priorit maggiore). Vengono eseguiti quando la macchina molto scarica, oppure
possono non venire mai eseguiti.
Soluzione: invecchiamento(con il passare del tempo, i processi non eseguiti aumentano la
loro priorit).
ROUND ROBIN(RR): algoritmo con prelazione specifico del time-sharing. Simile al FCFS ma
con prelazione quantizzata. Ogni processo riceve una piccola unit di tempo di CPU il
quanto(10-100 ms). Dopo questo periodo il processo viene prelazionato e rimesso nella coda
di ready. Se ci sono n processi in ready, e il quanto q, allora ogni processo riceve 1/n del
tempo di CPU in periodi di durata max q. Nessun processo attende pi di (n-1)q.
Tipicamente si ha un tempo di turnaround medio maggiore, ma minore tempo di risposta.
Prestazioni: q grande degenera nellFCFS ; q piccolo q deve comunzie essere grande
rispetto al tempo di context switch, altrimenti lover head elevato. L80% della CPU burst
dovrebbe essere inferiore a q.
SCHEDULING CON CODE MULTIPLE: la coda di ready partizionata in pi code separata:
ES: processi foreground, processi background. Ogni coda ha un suo algoritmo di scheduling:
Es: RR per i foreground, FCFS o SJF per i background. Lo scheduling deve avvenire tra tutte le
code, altrimenti: scheduling a priorit fissa: eseguire processi di una coda solo se code di
priorit superiore sono vuote; quanti di tempo per code: ogni coda riceve un certo ammontare
di tempo di CPU per i suoi processi.
Scheduling a code multiple con FEEDBACK: I processi vengono spostati da una coda
allaltra dinamicamente. Uno scheduling a code multiple con feedback viene definito da: -
numero di code; -algoritmo di scheduling per ogni coda; -come determinare quando
promuovere un processo; -quando degradare un processo; -come determinare la coda in cui
mettere un processo che entra nello stato ready.
SCHEDULAZIONA GARANTITA: se ci sono n utenti, ad ogni utente si promette 1/n della
CPU. Implementazione: -per ogni processo Tp si tiene un contatore del tempo di CPU
utilizzato da quando stato lanciato; -il tempo di cui avrebbe diritto tp=T/n, dove T=tempo
trascorso dallinizio del processo; -priorit di P=Tp/tp(pi bassa maggiore la priorit).
SCHEDULAZIONE A LOTTERIA: esistono biglietti per ogni risorsa; ogni utente(processo)
acquisisce un sottoinsieme di tali biglietti; viene estratto casualmente un biglietto, e la risorsa
assegnata al vincitore. Alla lunga laccesso alla risorsa proporzionale al numero di biglietti.
Biglietti possono essere passati da processo allaltro per cambiare priorit(Es: client/server).
SCHEDULING MULTIPROCESSORE: Pi complesso quando pi CPU sono disponibili; sistemi
omogenei: indifferente su quale processore esegue il prossimo task; pu comunque essere
richiesto che un certo task venga eseguito su un preciso processore(pinning). Bilanciare il
carico(load sharing): tutti i processorei selezionano i processo dalla stessa ready queue.
Problema accesso condiviso alle strutture del kernel: Asymmetric multiprocessing(AMP):
solo un processore per volta pu accedere alle strutture dati del kernel. Pi semplice, ma
meno prestazioni. Symmetric multiprocessing(SMP): condivisione strutture dati. Servono
hardware particolari e controlli di sincronizzazione in kernel.
SCHEDULING REAL-TIME:
Hard real-time: si richiede che un task critic venga completato entro un tempo ben preciso e
garantito: prenotazione delle risorse; determinazione di tutti i tempi di risposta; solitamente
ristretti a hardware dedicati;
Soft real-time: i processi critici sono prioritati rispetto agli altri: possono coesistere con i
normali processi time-sharing; lo scheduler deve mantenere i processi real-time prioritati;
latenza di dispatch deve essere pi bassa possibile.
Eventi aperiodici: imprevedibili. Eventi periodici: ad intervallo di tempo regolari o
prevedibili. Dati m eventi periodici, sono schedulabili se