kernel il nucleo del sistema operativo hw. la contesa della cpu la cpu è la componente più costosa...
TRANSCRIPT
Kernel
Kernel
Kernel
Kernel
Il nucleo delSistema Operativo
HWHW
La Contesa della CPU
• La CPU è la componente più costosa e più importante di un computer
• Tutti i programmi necessitano della CPU per essere eseguiti ma la CPU è in genere unica
• Esiste un meccanismo di “contesa” della CPU• È quindi molto importante quel modulo del S.O. che organizza
la modalità con cui la CPU viene assegnata ai programmi
Compiti del Kernel
Le funzioni del “nucleo” di un S.O. sono:
1. Aggiornare lo “Stato” della CPU.
2. Decidere a chi assegnare la CPU
3. Assegnare la CPU
4. Rilasciare la CPU
Configurazione hardware
Sui PC la configurazione HW più frequente è:
1. Sistema multiprogrammabile.2. Cpu Unica 3. Più processori dedicati di i/o (controller usb,
hdmi, lan, wifi….)4. Più periferiche standard (mouse, printer, video…)5. Più memorie di massa (hdd, dvd…)
Processo
• Algoritmo = istruzioni organizzate e scritte che l’elaboratore deve eseguire secondo un certo ordine.
• Processo = fase di esecuzione dell’algoritmo a cui sono assegnate le risorse che egli chiede (cpu, ram, video, tastiera, mouse…)
Stati di un processo
Diagramma degli stati
Liste
• Nel Kernel esistono delle “liste” per ogni possibile stato di un processo
• In ogni lista ci sono indicati tutti i processi che si trovano nella specifica condizione
• Per esempio questa è la lista dei “ready”:
3156
1021
1022
3150
2040
2041
2045
1007
Kernel
La gestione dei processi è affidata ad una serie di
programmi che:
• Costituiscono il kernel• Sono sempre caricati e residenti in memoria centrale.
Programmi del Kernel
Job scheduler: si occupa di selezionare un lavoro dalle liste.
Process scheduler : sceglie il processo che potrà usare la cpu
Traffic controller: sposta i processi e aggiorna le liste
Interrupt manager: segnala alla cpu lo scambio di processi
Sincronizzazione : permette la comunicazione tra processi.
Job scheduler
1. Quando un lavoro viene richiesto dall’utente, viene messo nello stato HOLD (in un file speciale sul hdd)
2. Lo Schedulatore accede alla lista degli hold in cui ogni lavoro (job) è identificato da un numero (JCB job control block)
3. Ammissione: al momento opportuno lo Schedulatore dei lavori lo selezionerà tra gli altri per portarlo in memoria centrale passando allo stato READY.
HddLista hold
Lista ready
job
Job scheduler (JS)
• Lo JS preleva un lavoro dalla lista hold su disco fisso e lo manda in memoria nella lista dei ready.
JCB = job control block
1. Identificativo del programma2. Occupazione in memoria (KB)3. Indirizzo sulla memoria di massa4. Identificativo periferica5. Puntatore allo JCB successivo
1. Identificativo del programma2. Occupazione in memoria (KB)3. Indirizzo sulla memoria di massa4. Identificativo periferica5. Puntatore allo JCB successivo
Il jcb contiene informazioni su:
Traffic controller
1. Il Controllore del traffico elimina il JCB dalla lista degli hold e crea un PCB (process control block) nella lista dei ready.
3156 1021 1022 3150 2040 2041 2045 1007 1009
PCB = process control blockInformazioni nel PCB 1. PID, numero progressivo che identifica un processo2. ID del padre (il PCB che puntava ed esso)3. Il puntatore ai figli4. Lo stato del processo (ready, run…)5. Registro di salvataggio6. Indirizzo in memoria centrale7. Identificatore periferica8. File aperti
From ready to run (dispatching)
• Quando la cpu è libera il Process Scheduler (PS) sceglie un processo ready da mandare alla cpu
• il Traffic Controller (TC) modifica il campo “stato” in “run”
A B C
HH LL
Uscita dallo stato run
1. Ci sono 3 eventi che portano a liberare la CPU da un processo e sono:
Lista dei running
Il processo
chiede i/o
processo
Il processo
ha terminat
o
È scaduto
il Time slice
HDD(ready)
Stato end
• Il passaggio allo stato end è detto “terminazione”.• Viene cancellato il suo PCB• Viene liberata la memoria
PCB 07 PCB 84
LISTA DEI READY (IN RAM)
Ritorno allo stato di ready o wait
• Se viene esaurito il time slice il processo viene rimesso in coda alla cpu nello stato ready
• Se invece il processo chiede un i/o allora viene messo in attesa del device (wait), dopo aver utilizzato la risorsa i/o viene riportato in coda ready.