Riassunto funzioni (WIP) AXO Matteo Guarnerio
1
Nucleo e commutazione di processi
Riferimento alla slide: AXO -‐ 02 -‐ Gestione del processo.pdf
Lo scheduler decide su un processo può essere eseguito o se è scaduto il suo quanto di tempo.
Lista primitive di sistema:
Change E’ un’istruzione atomica e quindi indivisibile.
Cambia processo salvando lo stato attuale.
Preempt_1 Rischedula il processo nel caso serva, controllando la variabile need_scheduling se è impostata a 1.
Chiama la funzione Change.
Preempt_2 E’ il ritorno dalla Change chiamata dalla Preempt_1.
Sleep_on_1 Mette il processo in attesa di un evento.
Chiama la funzione Change.
Sleep_on_2 Ritorno dalla Change chiamata dalla Sleep_on_1.
Wake_up Riporta il processo in stato di Pronto.
Lista primitive di sistema gestite dal Gestore delle Supervisor Call:
R_INT(CK)_1 Interrupt di clock.
Serve a controllare se è scaduto il quanto di tempo di un processo. Nel caso sia scaduto, prepara il processo alla rischedulazione.
Quindi controllo il tempo residuo ed eventualmente rischedulo passando a Pronto come stato per il processo.
R_INT(CK)_2 Ritorno in modalità U.
Chiamo la funzione Preempt per controllare se il processo ha ancora tempo per essere eseguito.
R_INT(E)_1 Interrupt di evento.
Chiama la funzione Wake_up(E), andando quindi a controllare quale processo era in Sleep su quell’evento.
R_INT(E)_2 Esegue una Preempt sul processo appena svegliato per verificare se è eseguibile.
R_INT(E)_3 Ritorno dalla chiamata, quindi torno in modo U.
G_SVC_1 Gestore di SVC. Gestisce le librerie sys_enter, sys_exit e l’interrupt 80. Ha una visione di tutte le tabelle con gli indici.
Codice programmazione semplificato:
case “fork”:
case “exit”:
end case;
G_SVC_2 Eseguo una Preempt per verificare se non è scaduto il quanto di tempo del processo.
G_SVC_3 Ritorno dalla chiamata. Ritorno in modalità U.
Riassunto funzioni (WIP) AXO Matteo Guarnerio
2
Se un sistema non dovesse ascoltare gli interrupt, eseguirebbe sicuramente dei processi atomici, poiché non vi sarebbe l’interazione con l’utente.
Iterazione delle funzioni C con le primitive del sistema operativo:
fork Quando il padre esegue l’istruzione, viene copiata la tabella dei file aperti (Process File Table) nel figlio.
exec Viene eseguita conservando le connessioni acquisite, come file aperti e socket. Il processo eseguito tramite questa istruzione avrà quindi una vista globale di tutte queste connessioni.
Esistono delle sottocategorie di questa funzione che si differenziano per il modo nel quale vengono passati i parametri opzionali all’eseguibile lanciato:
execl – Vengono passati sotto forma di lista.
execv – Vengono passati come vettore, un array.
execp – Cerca nel path corrente l’eseguibile da lanciare.