Capitolo 1
Sistema multiprocessore simmetrico
Si spieghi brevemente qual è la caratteristica fondamentale di un sistema multiprocessore conforme al paradigma simmetrico. Un sistema multiprocessore presenta più processori all'interno della stessa macchina che condividono la stessa memoria. Questo permette maggiore efficienza nello svolgimento dei processi permettendo una esecuzione parallela dei task e una maggiore affidabilità (fault tolerance e graceful degradation). Nel paradigma simmetrico ogni processore è sullo stesso piano degli altri (non c'è un processore master che gestisce gli altri) ed ognuno di essi esegue una copia del s.o. Il sistema simmetrico determina problemi nella schedulazione della CPU poiché possono capitare situazioni di sovraccarico di alcuni processori rispetto ad altri.
Tassonomia dei sistemi multiprocessore
Si descriva la tassonomia dei sistemi multiprocessore. Si chiarisca in particolare la differenza tra multicalcolatori strettamente e debolmente accoppiati. I sistemi multiprocessore sono dei sistemi in cui le operazioni di calcolo ed elaborazione dei dati vengono suddivise su più processori per migliorare la velocità di elaborazione. Nei sistemi debolmente accoppiati come quelli distribuiti, ogni calcolatore ha un proprio processore e memoria ma si connette con gli altri calcolatori distribuiti in punti differenti, generando una rete di calcolatori che condividono l'elaborazione dei dati. Nei sistemi strettamente accoppiati invece il calcolatore è dotato di più processori che condividono la stessa memoria.
Caratteristiche principali di un HRT OS
Si descrivano le caratteristiche principali di un HRT OS. Si chiarisca in dettaglio cosa differenzia tali sistemi operativi da quelli general purpose. Un hard real-time o.s. è un sistema operativo utilizzato in contesti critici in cui è necessario che delle operazioni vengano svolte rispettando una certa tempistica. Negli HRTOS sono presenti delle deadline in cui il s.o. deve rispondere a determinate richieste. Non supportano il time-sharing della CPU e solitamente non necessitano della memorizzazione di dati. I s.o. general purpose invece sono orientati maggiormente ad un utilizzo da parte di utenti.
Capitolo 2
Gestione interrupt-driven dell'I/O
Si chiariscano brevemente i vantaggi derivanti da una gestione interrupt-driven dell'I/O. Nei sistemi I/O interrupt-driven la gestione dell'I/O è attuata mediante delle interruzioni del flusso di esecuzione che portano alla gestione delle operazioni mediante delle routine contenute nell'interrupt vector. Il vantaggio sta nel non dover assegnare parti della RAM per la gestione dell'I/O mappato in memoria e mediante gli interrupt la CPU continua ad eseguire processi durante la gestione dell'interrupt.
Tipologie di interrupt
Un interrupt può, per definizione, determinarsi solo a seguito di un evento hardware. Nell'ambito delle interruzioni si possono definire:
- Interrupt: sono delle interruzioni asincrone dette anche interruzioni hardware; avvengono in maniera casuale e non prevedibile da parte del sistema (esempio: input/output).
- Trup: sono delle interruzioni sincrone dette anche interruzioni software determinate da errori nei codici dei programmi o utilizzate dal sistema per compiere determinate operazioni.
Device Status Table
La Device Status Table non memorizza molteplici richieste di I/O relative ad un dispositivo. Si schematizzi la struttura e si descriva il funzionamento della Device Status Table. La DST è una tabella che memorizza un identificativo per la periferica di input/output, lo stato della periferica e eventuali richieste. Ad una periferica possono essere associate più operazioni che vengono messe in coda ordinandole in base all'arrivo.
Direct Memory Access (DMA)
Il DMA è usato solo per dispositivi di I/O ad alta velocità. Il Direct Memory Access è un processore molto piccolo che permette il trasferimento di dati input/output dalla memoria alle periferiche. Il suo utilizzo è associato agli I/O asincroni e permette, soprattutto nelle periferiche ad alta velocità, di evitare che per ogni byte inserito, la CPU riceva un interrupt bloccante. Il DMA raccoglie una quantità di dati provenienti in input o output e li invia in blocco determinando un interrupt solo all'avvio e al termine dell'operazione.
Interrupt vector
Spiegare la struttura e descrivere le funzionalità dell’interrupt vector. Nell’ambito della gestione degli interrupt, l’interrupt vector è un vettore contenente delle routine di gestione degli interrupt associati ad eventi di sistema o eventi esterni come I/O. L’accesso a questo vettore avviene mediante un indice prodotto tramite funzione di hash che permette di associare a un singolo “errore” una routine di gestione univoca. Il vettore degli interrupt viene implementato dai programmatori, con tutte le routine di gestione di errori base ma può essere aggiornato con nuove routine ad esempio quando vengano installate nuove periferiche con i relativi driver.
Meccanismi di protezione hardware
Spiegare quali sono e a cosa servono i meccanismi di protezione hardware comunemente adottati nei calcolatori moderni. I principali meccanismi di protezione hardware sono:
- Protezione dell’I/O: l’I/O deve essere protetto mediante modalità differenziata poiché tali operazioni permettono l’accesso a zone critiche della memoria come l’interrupt vector.
- Protezione della memoria: La memoria centrale deve essere protetta poiché contiene il kernel e l’interrupt vector. La protezione viene assicurata mediante modalità differenziata e proteggendo gli indirizzi critici con i registri base e limite. Ogni processo può accedere alla memoria solo a partire dall’registro base fino a un set di indirizzi definiti dal registro limite. L’accesso ad altri indirizzi non è consentito.
- Protezione della CPU: la CPU viene protetta mediante un timer che permette ad un processo di occuparla soltanto per un quanto di tempo prestabilito, facendo tornare il sistema in modalità supervisore ogni tot di tempo.
Capitolo 3
--nessuna domanda---
Capitolo 4
Process Control Block (PCB)
Si tracci lo schema del contenuto di un Process Control Block evidenziando per ciascuna componente in quale circostanza della vita del processo viene creata/aggiornata. Il PCB è una struttura dati del kernel creata nella fase di inizializzazione di un processo. Esso contiene informazioni sul processo come:
- Stato
- Program Counter
- Stack
- Register set
- Info per la schedulazione
- Info per la memoria centrale
- Info per l’I/O
Il PCB viene creato durante la fase di "hold" dove aggiorna il suo stato passando da new--->ready e riceve l'assegnazione delle risorse e la priorità. Il PCB viene modificato ogni qual volta il processo subisce un context switching ovvero ogni volta che passa in una coda differente e viene aggiornato in modo da permettere alla CPU di riprendere la sua esecuzione da dove aveva terminato.
Short-term scheduler e long-term scheduler
Si spieghi brevemente qual è la differenza (funzionale ed architetturale) tra lo short-term scheduler ed il long-term scheduler. Entrambi gli schedulatori sono utilizzati nella gestione dei processi. Il long-term scheduler effettua una macroschedulazione dei processi controllando le code di submit e hold, assicurandosi che il numero di processi di tipo I/O Bound e CPU Bound siano equivalenti per evitare scompensi nelle code successive (coda di wait vuota o CPU inutilizzata). Lo schedulatore a lungo termine viene attivato con tempistiche più lunghe. Lo short-term scheduler si occupa invece di gestire la microschedulazione sui processi della coda di ready, stabilendo la priorità e la logica per cui questi verranno spostati nella CPU. Viene eseguito in tempi molto più brevi rispetto al long-term scheduler.
Remote Procedure Call (RPC)
Si spieghi brevemente a cosa serve una Remote Procedure Call e qual è la funzione del client-stub all'interno di essa. La Remote Procedure Call è una chiamata a procedura remota che simula l’IPC ma tra sistemi collegati in rete. Viene utilizzata in un sistema client-server per la comunicazione e per la richiesta di esecuzione di un metodo da parte del client. Lo stub-client permette di mantenere attivo il collegamento tra la porta del client e quella del server effettuando il marshalling dei parametri passati alla procedura in modo che siano comprensibili per il server.
Upcall manager e schedulatore
Si descriva brevemente il funzionamento di un upcall manager nell’ambito del meccanismo di attivazione dello schedulatore. Si spieghi brevemente le caratteristiche e la funzione del meccanismo di attivazione dello schedulatore in uno schema di esecuzione multithread. Nell’ambito dell’esecuzione dei thread un upcall manager è un meccanismo adottato dalla libreria dei thread per la loro gestione. In particolare viene spesso utilizzata nel caso di thread che compiono operazioni bloccanti per permettere di assegnare al kernel thread che sta per essere bloccato, un altro user thread mediante l’intermediazione della LWP (lightweight Processor). Quando il thread sta per compiere l’operazione bloccante, viene creata una nuova LWP che permette l’attivazione dello schedulatore. Lo schedulatore assegna quindi al thread lato kernel che sta per andare in blocco un nuovo thread lato utente in modo da preservare il numero di kernel thread. La LWP viene utilizzata nei modelli molti a molti e a due livelli per mantenere il numero di kernel thread.
-
Sistemi operativi (teoria completa + domande)
-
Domande di teoria Android,Ios,PX4,NuttX, Sistemi operativi
-
Domande Sistemi operativi
-
Sistemi operativi - domande esame