Upload
eustorgio-donati
View
218
Download
0
Embed Size (px)
Citation preview
CONCLUSIONE - Nucleo (o Kernel)
• Interagisce direttamente con l’hardwareInteragisce direttamente con l’hardware• Si occupa dell’esecuzione dei programmiSi occupa dell’esecuzione dei programmi e della risposta agli e della risposta agli
eventi esterni generati dalle unità periferiche.eventi esterni generati dalle unità periferiche.• Scopo principaleScopo principale: : gestire i processigestire i processi corrispondenti ai corrispondenti ai
programmi che sono contemporaneamente attiviprogrammi che sono contemporaneamente attivi applicazioni utente processi di servizio
• Fornisce alle macchine virtuali di livello superiore la Fornisce alle macchine virtuali di livello superiore la visione di visione di un insieme di unità di elaborazione virtualiun insieme di unità di elaborazione virtuali ciascuna dedicata ciascuna dedicata a un processo presente in memoriaa un processo presente in memoria
• Gestisce il contesto di esecuzione dei vari processiGestisce il contesto di esecuzione dei vari processi• Attua una politica di alternanza (Attua una politica di alternanza (schedulingscheduling) nell’accesso alla ) nell’accesso alla
CPU da parte dei processi in esecuzione.CPU da parte dei processi in esecuzione.
CPU
dati
controllo
indirizziBUS
Memoriadi lavoro
Memoria di massa
Interfaccia I/O
Video/tastiera(terminale)
Interfaccia I/O
Nucleo: macchina astrattaNucleo: macchina astratta
dati
controllo
indirizziBUS
Memoriadi lavoro
Memoria di massa
Interfaccia I/O
Video/tastiera(terminale)
Interfaccia I/O
CPUvirtuale
processo
CPUvirtuale
processo
CPUvirtuale
processo
CPUvirtuale
processo
CPUvirtuale
processo
… … …
Interruzione interna
• L’esecuzione 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 l’utilizzo della CPU)
Interruzioni interne
attivopronto
Salvastato
Ripristinastato
Fine
Inizio
Interruzioni esterne• Una periferica segnala la fine di un operazione• L’esecuzione 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 un’altro 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
attivopronto
attesa
Salvastato
Ripristinastato
Fine
Inizio
Acknowledg. operazione
CREAZIONE: un processo utente INVOCA l’operazione
processo padre: processo invocanteprocesso 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 l’avvio 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 un’anomalia nell’esecuzione del processo• un’operazione di I/O di cui non si avevano i diritti
COMMUTAZIONE DI UN PROCESSO (context switch)
OPERAZIONE CHE DETERMINA L’AVVICENDAMENTO DEI PROCESSI NELL’USO 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 all’avanzamento 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 all’entità 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 l’esecuzione del processo (ad ex 2502, 2503, 2504, 2505, 2506, 2504, 2505, 2506, 2504, 2505, 2506, 2507
L’esistenza 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 un’altra 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 l’esecuzione 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ù threadIn 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:L’applicazione che lo gestisce si chiama server, è
sempre attiva in attesa delle richieste dei client.Quando arriva la richiesta di utilizzo di un file,
l’applicazione server risponde inviando le informazioni richieste.
Si può pensare di avviare un processo per ogni client riducendo i tempi di risposta del server.