vuoi
o PayPal
tutte le volte che vuoi
Vantaggio: riduzione del tempo globale dei processi
Svantaggio: aumento del tempo di risposta per un singolo programma
2
1.3.1 Sistemi Multiprogrammati con Spooling
Lo spooling permette di gestire task di tipo differente (I/O), cosi’ da creare
una sorta di pipeline e quindi velocizzare l’esecuzione dei processi.Lo spool-
ing sovrappone le istruzioni di I/O con quelle di calcolo.
1.4 Time-Sharing
Per ogni processo il S.O. assegna ciclicamente un intervallo di tempo della
CPU per cui quel processo viene eseguito.
Vantaggio: maggior interattivita’, il processo viene eseguito circa la chia-
mata di quel processo, favorisce i tempi I/O bound
Svantaggio: ogni processo preso singolarmente richieder molto pi tempo di
risposta, penaliza i tempi CPU bound
Nota:
• I/O bound sono i processi che richiedono interazione con l’utente, pro-
cessi che richiedono risosrse di input o output (esempio word)
• CPU bound sono i processi che richiedono un lavoro da parte della
CPU (esempio calcoli matematici)
1.5 Overhead per la gestione del multi-tasking
L’overhead e’ il tempo necessario che richiede un processo per far eseguire
il processo successivo. Esso gestisce
• Il cambio di contesto, cioe’ l’esecuzione di un nuovo processo che
richiede quindi nuove risorse di memoria, e di aggiornare quelle vecchie
(in pratica pulisce la RAM)
• Il time-slice
• Le interruzioni (esempio il timer)
Cambio di contesto
Un processo in esecuzione deve essere interrotto dal sistema operativo (che
pero’ per essere eseguito richiede la CPU gia’ in esecuzione dal processo
stesso), questo viene risolto dagli interrupt, il quale setta ad 1 un bit nel
processo che deve essere interrotto. La CPU prima di fare il fetch, fa un check
interrputs, se ne vede uno carica nel program counter l’indirizzo di memoria
associato a quell’interrput e lo aggiorna ad un indirizzo di memoria per
l’esecuzione del sistema operativo (in pratica chiamo la funzione interrput).
3
Mentre vengono eseguiti i processi primitivi (di servizio) gli interrput
sono disabilitate. Questo e’ l’unico caso in cui gli interrput sono disabilitati,
altrimenti il time sharing non avrebbe piu’ senso.
1.6 Sistemi in tempo reale
Sono particolari sistemi, per cui il processo deve essere eseguito entro brevi
istanti temporali.
Sistema in tempo reale -¿ Attuatori -¿ Ambiente Operativo -¿ Sensori
e da ”Sensori” ancora all’inizio.
1.7 Architettura di un sistema di elaborazione
Ogni risorsa puo’ essere caricata in un tipo di memoria differente. Ogni dato
viene trasmesso da una memoria all’altra attraverso il bus
1.8 Funzionamento del Meccanismo di Interruzione
L’hardware riconosce gli interrupt se abilitati. La gestione degli interrupt e’
strutturata in quattro fasi:
1. Salvare il contesto
2. Eseguire la routine del S.O.
3. Ripristinare il contesto
4. Esegue l’IRET, cioe’ ricarica in PC e in PS gli indirizzi di memoria
corretti (precedenti alla chiamata di interrupt)
4
Ad ogni interruzione corrisponde un vettore di interruzione. Quando il pro-
cessore salva il PS in memoria, allora esegue un interrupt e passa dallo stato
utente al supervisore. Finita la routine di interrupt, e eseguito l’IRET il
bit di interrupt viene azzerato (clear interrupt).
Nota:
• PS: registro che contiene i condition code (risultati JEQ...) un bit che
dice se gli interrupt sono abilitati (l’informazioni relative al programma
utente) lo stato del processore
• PC: registro program counter che contiene l’indirizzo di memoria dell’istruzione
da eseguire. Registri 0 PC | PSW
generali 1 PC | PSW
2 PC | PSW
PC 3 PC | PSW
4 PC | PSW
PS 5 PC | PSW
6 PC | PSW
7 PC | PSW
CPU
Vettore di Interrupt
0 1 2 3 4 5 6 7
1 | 0 | 0 | 1 | 0 | 0 | 0 | 0
1.9 Meccanismi di Protezione
L’esecuzioni di piu’ programmi in memoria puo’ creare problemi di pro-
tezione, sia dalla parte dell’utente che del S.O. e’ quindi essenziale garan-
tire l’integrita’ dei dati utente.
1.9.1 Stato utente
Usato per l’esecuzione di programmi critici, non vengono eseguite istruzioni
privilegiate e l’accesso alle risorse e’ limitato dal sistema di protezione
(memoria o dispositivi I/O)
1.9.2 Supervisore (Kernel Mode)
Vengono eseguite solo istruzioni privilegiate, come modificare i registri PS e
PC per servire gli interrupt, l’accesso alle risorse e’ illimitato
5
1.9.3 Transazione Stato Utente - Supervisore
La transizione da stato utente a stato supervisore e’ attivata da inter-
ruzioni di tipo:
• Esterne o hardware (periferiche esterne)
• Eccezioni
• Interruzioni interne o software (istruzioni INT o SVC)
• Effetto: salvataggio della PSW (Program Status Word) del modo
utente e caricamento nella modo supervisore.
La transizione da stato supervisore a stato utente e’ attivata dall’istruzione
IRET:
• Ripristina la PS del modo utente, precedentemente salvata
Le istruzioni STI (Set-Interrupt) (interruzioni software) e CLI (Clear-
Interrupt) vengono eseguite in modo privilegiato.
L’istruzione INT e’ l’istruzione per l’interrupt, l’SVC e’ l’istruzione Super-
visorCall
2 Gestione dei processi
2.1 Direct Memory Access (DMA)
Attivato mediante registri puntatore, il dispositivo opera in parallelo alla
CPU. Alla fine del trasferimento viene generato un interrupt.
Il Cycle Stealing e’ il dispositivo che sottrae alla CPU i cicli di accesso alla
memoria.
I dispositivo I/O e CPU accedono alla stessa memoria, sono cioe’ in con-
correnza.
2.2 Struttura dei Sistemi Operativi
• Sistema Monolitico: il S.O. e’ compsto da un unico programma
contenente un insieme di procedure. Le applicazioni richiedono i servizi
S.O. che attivano le modalita’ utente o supervisore
• Sistemi Modulari: ogni modulo gestisce una funzione. Ciascun
corpo e’ composto da un corpo (funzioni non visibili dall’esterno) e
una interfaccia (funzioni offerte dal modulo).
• Struttura di un Sistema Modulare: composto da una parte hard-
ware, un’interfaccia hardware, le relative API ed infine i programmi
applicativi. 6
• Struttura a livelli gerarchici: le funzioni del S.O. sono organizzate
a livelli gerarchici. I livelli vanno a complessita’ crescente (Unix e’
gestito in questo modo).
• Stuttura a microkernel: i componenti del S.O. sono divisi in due
parti: meccanismi per la gestione (esempio time sharing) e politiche di
gestione della risorsa (esempio come fare il content switch). Questa
struttura e’ poco utilizzata.
2.3 Processi concorrenti
• Processi indipendenti: due processi sono indipendenti se il processo P1
non influenza l’esecuzione di P2 = proprieta’ della riproducibilita’
• Processi interagenti: due processi sono interagenti se l’esecuzione di P1
influenza l’esecuzione di P2. Un esempio e’ l’uso della stessa risorsa
(stampante).
2.4 Tipi di interazione tra Processi
• Competizione: un solo processo alla volta deve avere accesso all’oggetto
condiviso, al fine di evitare interferenze tra processi (mutua esclusione)
= sincronizzazione diretta
• Cooperazione: due processi comunicano tra loro per scambiarsi infor-
mazioni (come utilizzo di una risorsa) = sincronizzazione indiretta
o implicita
2.5 Sincronizzazione
Se due processi non ammettono l’utilizzo della stessa risorsa, allora devono
comunicare per utilizzare correttamente la risorsa in modo sincronizzato. I
vincoli sono dovuti dalla competizione e la cooperazione visti prima.
Esempio Modello produttore-costruttore (cooperazione):
Il produttore e il costruttore collaborano per uno scopo comune. Essi condi-
vidono le stesse informazioni attraverso un buffer. Il produttore P1 fornisce
attraverso al buffer le informazioni a P2 (l’inofrmazione e’ unidirezionale).
I processi si sincronizzano per scambiarsi correttamente nel tempo le infor-
mazioni.
Per esempio P1 inserisce l’informazione, P2 la preleva, P1 inserisce e P2
preleva di nuovo e’ un informazione corretta e sincronizzata. Diverso invece
se P1 fornisce due informazioni e P2 ne preleva solo una, in questo caso si ha
l’overflow cioe una perdita di dati. Si ha invece underflow se P2 preleva
due volte, ma P1 ha fornito un solo dati, l’interazione tra i dati e’ errata,
infatti P2 non riesce a prelevare correttamente due dati.
7
Esempio Modello produttore-costruttore (competizione):
Due processi condividono la stessa informazione, per esempio l’istruzione
incremento
contatore=contatore + 1
i processi condividono la variabile contatore. La variabile contatore per
essere incrementata deve essere eseguita mutualmente cioe’ in modo coor-
dinato, sincronizzato nel tempo tra i due processi.
2.6 Nucleo di un sistema a processi
il kernel e’ il componente di un S.O., e’ una CPU virtuale. Esso
• Gestisce le interruzioni
• Gestisce il cambio di contesto
• Foscnisce le primitive (System Call)
• Fornisce le PCB (strutture dati dei processi)
2.7 Scheduling
Esso si occupa di effettuare la scelta dei processi che vengono eseguiti.
1. Assegna/revoca i processi alla CPU (scheduling a breve termine)::
sceglie tra i processi pronti quale assegnare alla CPU, e’ il pi frequente.
2. Include un processo nel sistema (scheduling a medio termine): questo
swapping trasferisce temporaneamente i processi nella memoria secon-
daria e/o nella memoria principale.
3. Esclusione di un processo dal sistema (scheduling a lungo termine)
Lo scheduling puo’ essere:
• non-preemptive: lo scheduler interviene se un processo viene inter-
rotto a causa di un SVC o per un evento esterno.
• preemptive: lo scheduler interviene se un processo viene interrotto a
causa di un SVC, per un evento esterno, I/O o timer.
Parametri di valutazione degli algoritmi di scheduling
• Equita’: processi dello stesso tipo vengono trattati allo stesso modo
(priorita’ uguale)
• Balancing: 8
• Proporzionalita’:
Per sistemi Batch
• Utilizzo della CPU: percentuale di utilizzo della CPU
• Tempo di completamento
• Tempo medio di completamento
• Produttivita’
Per sistemi interattivi
• Tempo di risposta
• Tepo di attesa
E’ importante quindi minimizzare il tempo di risposta e di attesa e
rispettare la proporzionalita’.
Alcuni algoritmi importanti: FCFS, SJF, SRTF, RR, Schedulazione su base
prioritaria e Schedulazione ”a code multiple”.
2.7.1 Sch