CONCLUSIONE - Nucleo (o Kernel) Interagisce direttamente con lhardware Interagisce direttamente con lhardware Si occupa dellesecuzione dei programmi e della risposta agli eventi esterni generati dalle unità periferiche. Si occupa dellesecuzione dei programmi e della risposta agli eventi esterni generati dalle unità periferiche. Scopo principale: gestire i processi corrispondenti ai programmi che sono contemporaneamente attivi Scopo principale: gestire i processi corrispondenti ai programmi che sono contemporaneamente attivi applicazioni utente processi di servizio Fornisce alle macchine virtuali di livello superiore la visione di un insieme di unità di elaborazione virtuali ciascuna dedicata a un processo presente in memoria Fornisce alle macchine virtuali di livello superiore la visione di un insieme di unità di elaborazione virtuali ciascuna dedicata a un processo presente in memoria Gestisce il contesto di esecuzione dei vari processi Gestisce il contesto di esecuzione dei vari processi Attua una politica di alternanza (scheduling) nellaccesso alla CPU da parte dei processi in esecuzione. Attua una politica di alternanza (scheduling) nellaccesso alla CPU da parte dei processi in esecuzione.
CPU dati controllo indirizziBUS Memoria di lavoro Memoria di massa Interfaccia I/O Video/tastiera (terminale) Interfaccia I/O Nucleo: macchina astratta
dati controllo indirizziBUS Memoria di lavoro Memoria di massa Interfaccia I/O Video/tastiera (terminale) Interfaccia I/O CPU virtuale processo CPU virtuale processo CPU virtuale processo CPU virtuale processo CPU virtuale processo … … …
Interruzione interna Lesecuzione di un processo attivo si interrompe ad es. per operazioni di input/output (operazioni costose in termini di tempo) Lo stato corrente (contenuto registri ecc) del processo interrotto viene salvato in memoria Il processo passa allo stato in attesa Il controllo passa ad un processo di sistema che assegna la CPU ad un altro processo (per poter ottimizzare lutilizzo della CPU)
Interruzioni interne attivo pronto Salva stato Ripristina stato Fine Inizio
Interruzioni esterne Una periferica segnala la fine di un operazione Lesecuzione del processo corrente viene interrotta (il processo passa allo stato pronto) e passa al gestore delle interruzioni – Quindi interruzioe esterna perche riguarda le operazioni di unaltro processo! Il gestore delle interruzioni provvede a trasferire dati in memoria e risvegliare il processo in attesa che passa allo stato pronto Il controllo passa poi al nucleo che manda in esecuzione uno dei processi in stato pronto Il gestore lavora con interruzioni disabilitate
Interruzioni esterne attivo pronto attesa Salva stato Ripristina stato Fine Inizio Acknowledg. operazione
CREAZIONE: un processo utente INVOCA loperazione processo padre: processo invocante processo figlio: processo creato caratteristiche del processo ereditate dal processo padre parametri interni fasi verifica della congruità dei parametri di chiamata assegnazione di un identificatore valido individuazione delle risorse necessarie
TERMINAZIONE DI UN PROCESSO Determina il rilascio delle risorse possedute e lavvio delle attività previste per la chiusura del programma Invocato dal programma stesso dal s.o. per necessità interne Richiesto da un altro processo quando avviene unanomalia nellesecuzione del processo unoperazione di I/O di cui non si avevano i diritti
COMMUTAZIONE DI UN PROCESSO (context switch) OPERAZIONE CHE DETERMINA LAVVICENDAMENTO DEI PROCESSI NELLUSO DELLA CPU I valori posseduti nei registri vengono salvati nel PCB, mente i valori del nuovo processo (quando passa in stato di run) vengono prelevati dal PCB e spostati nei registri della CPU. Tale operazione impiega fino ad 1 millisecondo
LIMITI DEL MODELLO A PROCESSI Lentezza delle operazioni fondamentali: – Creazione e commutazione sono operazioni complesse Inadeguatezza dello scambio dati: – Lo scambio messaggi utilizzato per il trasferimento di un dato da un processo ad un altro è accettabile solo per poche informazioni Funzioni e informazioni necessarie allo scambio di contesto e allavanzamento del processo Funzioni e informazioni necessarie al possesso e controllo delle risorse
IL THREAD (flusso di esecuzione) Si è scomposto il processo in un insieme di flussi sequenziali di istruzioni (ll thread) ognuno caratterizzato dalla propria evoluzione anche contemporanea con altri flussi, mentre si è lasciato allentità logica processo il compito di possedere e condividere tutti i thread.
APPROCCIO TRADIZIONALE – processo un solo thread (single-thread) In genere il thread è dato dalla sequenza del PC durante lesecuzione del processo (ad ex 2502, 2503, 2504, 2505, 2506, 2504, 2505, 2506, 2504, 2505, 2506, 2507 Lesistenza di un solo thread in un processo significa che al processo può essere assegnato un solo processore In memoria ci sono il codice del programma, i dati, lo stack, il PCB, lo spazio di servizio per la gestione del thread da parte del s.o.
APPROCCIO TRADIZIONALE – processo con un solo thread (single-thread) Il processo è contraddistinto dal PCB con tutte le informazioni, ma le informazioni dinamiche (dati codici, diritti, informazioni sulla risorse) sono contenute in unaltra tabella chiamata TCB = thread control block che segue la vita del thread. CREAZIONE, TERMINAZIONE, COMMUTAZIONE coinvolgono solo il TCB. Quando più processi sono in esecuzione, ad ogni processo è associato un solo thread.
PROCESSO con più thread In sistemi dove sono presenti più di un processore e quando i s.o. sanno gestire processi con più flussi di informazione (più thread), è possibile fare eseguire i thread contemporaneamente in parallelo rendendo più veloce lesecuzione del programma. In questo caso i thread condividono lo stesso spazio di memoria e lo stesso file. La struttura complessiva del processo è diversa perché deve tener conto della presenza di più thread.
PROCESSO con più thread Esempio: thread di WORD: Gestione tastiera – immissione testo - memorizzazione in MC Formattazione del testo Salvataggio periodico sull HD
PROCESSO con più thread In comune ai thread di uno stesso processo ci sono: il codice I dati Il PCB Lo spazio per la gestione dei file Ogni thread ha un proprio PC Ogni thread ha propri registri Ogni thread ha propri stack Le informazioni contenute nel PC, registri e stack servono per tener conto dello stato di esecuzione del singolo thread e sono contenute nel TCB
PROCESSO con più thread Il processo ha un suo PCB, ma ogni thread del processo: è indipendente dagli altri Ha un suo TCB riservato Condivide le informazioni comuni con tutti gli altri thread Ogni thread può avanzare – parallelamente agli altri thread del processo stesso (multiprocessor) oppure – avanzamento alternato (monoprocessor)
PROCESSO con più thread risolve: problema della lentezza delle operazioni fondamentali : scambio di poche informazioni (nei registri : + veloce) problema dello scambio delle informazioni : si utilizza la memoria comune assegnata al processo dove le informazioni sono a disposizione di tutti i thread alla quale tutti i thread possono accedere non si ha più lo scambio delle informazioni che sono sempre a disposizione.
PROCESSO con più thread esempio: SITO WEB: Lapplicazione che lo gestisce si chiama server, è sempre attiva in attesa delle richieste dei client. Quando arriva la richiesta di utilizzo di un file, lapplicazione server risponde inviando le informazioni richieste. Si può pensare di avviare un processo per ogni client riducendo i tempi di risposta del server.