Practice Known Questions
Stay up to date with your due questions
Complete 5 questions to enable practice
Exams
Exam: Test your skills
Test your skills in exam mode
Learn New Questions
Popular in this course
Learn with flashcards
Manual Mode [BETA]
Select your own question and answer types
Other available modes
Complete the sentence
Listening & SpellingSpelling: Type what you hear
multiple choiceMultiple choice mode
SpeakingAnswer with voice
Speaking & ListeningPractice pronunciation
TypingTyping only mode
sistemi operativi - Leaderboard
sistemi operativi - Details
Levels:
Questions:
229 questions
🇮🇹 | 🇮🇹 |
Nella creazione di un sistema operativo, che cosa prevede la fase preliminare? | - uno studio preliminare o progettazione - definizione degli scopi del sistema operativo - definire una architettura di partenza - definizione dei meccanismi (come vengono fatte le cose dal SO) e criteri(ordine e quali cose fare) |
Nella creazione di un sistema operativo, che cosa prevede la fase preliminare? | - uno studio preliminare o progettazione - definizione degli scopi del sistema operativo - definire una architettura di partenza - definizione dei meccanismi (come vengono fatte le cose dal SO) e criteri(ordine e quali cose fare) |
Quali sono gli svantaggi di un sistema operativo monolitico? | - Se una parte del SO fallisce di conseguenza altre parti possono fallire - È difficile da mantenere poiche ogni modifica al sistema potrebbe influire indirettamente su altre parti. - Difficilmente scalabile. |
Quali sono i vantaggi di un sistema operativo stratificato? | - Piu sicuro per la suddivisione dei ruoli del SO e se una parte fallisce allora puo' essere sostituita - È efficiente. - Piu' facilmente scalabile e - Facilmente manutenibile |
NA | NA |
Qual è lo svantaggio di un sistema operativo a microkernel? | - sovraccarico di lavoro per il kernel le chiamate fra un modulo utente e un altro devono passare sempre dal kernel - Piu complesso di altri sistemi |
NA | NA |
Quali sono i vantaggi di un sistema operativo stratificato? | - Facile da mantenere poiche lavora a compartimenti stagni fra moduli - Facile da espandere. |
Quali sono gli svantaggi di un sistema operativo a macchina virtuale? | - Difficile condivisione fra macchine virtuali (a meno che non si utilizzi un disco condiviso) - Non è efficiente. una chiamata deve passare per il kernel della VM e dal kernel del OS |
Quali sono i vari modelli di thread ? lo svantaggio di ciascuno ? | Molti a uno: un unico thread kernel gistisce piu thread a livello utente - se uno dei thread si blocca (per un errore o per una chiamata bloccante tipo IO) allora anche gli possono risentirne Uno a uno: fornisce piu concorrenza del precedente anche perche piu kernel possono essere eseguiti in parallelo su diversi processori - overhead: considerato come uno spreco di risorse e diminuzione dellefficienza complessiva Molti a Molti raggruppa un numero di thread utente verso un numero uguale o inferiore di thread kernel - nessun difetto noto A due livelli: permette anche di vincolare un thread utente a un solo thread del kernel |
Spiega il sistema monolitico | Esegue tutte le funzioni del sistema dalla gestione della CPU all’interfaccia utente. Non vi è alcun ordinamento tra le funzioni del sistema: tutte le funzioni e le strutture dati sono accessibili da qualsiasi punto del kernel. Manutenzione ed espansione sono molto di ffcili: ad esempio un bug nella funzione potrebbe causare il blocco dell’intero sistema, e trovarlo e risolverlo potrebbe essere complicato. Il vantaggio principale di quest’approccio è che il sistema è compatto, veloce ed e ciente, quindi è un approccio adatto a sistemi semplici. |
Qual è il vantaggio di un sistema operativo a thread? | Sfrutta le architetture multiprocessore. |
Quali tipi di cooperazioni fra thread esistono ? | Thread simmetrici -> i thread sono equipotenti: e’ possibile scegliere di attivarne uno qualunque per servire una richiesta esterna thread gerarchici -> i thread vengono suddivisi in lavoratori(eseguono il lavoro dato dai coordinatori) e coordinatori (ricevono richieste esterne e affidano il lavoro ai lavoratori) thread in pipeline -> ogni thread svolge una porzione del lavoro complessivo essendo specializzato in un preciso sottoinsieme delle funzioni |
Spiega un sistema a struttura gerarchica | Organizza il sistema su livelli funzionali. Una funzione di un certo livello può chiamare solo funzioni di livello inferiore. Non vi è comunque una separazione tra le componenti del SO. - Distinguere le dipendenze gerarchiche potrebbe non essere immediato. - Manutenzione ed espansione rimangono di cili, ma sono più gestibili di un sistema monolitico. |
Qual è lo svantaggio di un sistema operativo a thread? | È difficile da mantenere e espandere. |
Spiega il sistema stratificato | È scomposto in un certo numero di livelli (il più basso è l’hw). Ogni livello è un modulo che implementa un componente del SO (gestione CPU, memoria, ...), nasconde i propri dettagli implementativi agli altri e può comunicare con il livello sottostante attraverso un’interfaccia ben definita. Lo sviluppo e il debug del sistema sono facilitati: quando si implementa un nuovo livello, si presume che quelli sottostanti funzionino correttamente, poiché sono già stati testati; e dopo aver implementato e testato anche il nuovo livello, si può passare a un livello superiore in modo analogo. - I vantaggi quindi sono la modularità e la facilità di sviluppo e manutenzione. - Gli svantaggi sono la possibile di coltà nell’identificare i livelli e l’e cienza limitata: una chiamata a una funzione di un certo livello deve passare attraverso tutti i livelli sopra ad esso, riducendo le prestazioni del sistema. |
Spiega il sistema a microkernel | - struttura il sistema rimuovendo dal kernel tutte le funzioni non indispensabili, implementandole come servizi a livello utente. - Il kernel così creato è molto piccolo e ha solo funzioni minime di gestione processi, memoria e comunicazione. Lo scopo principale del microkernel è di permettere la comunicazione tra programmi client e servizi, oltre che tra i servizi stessi così che possano richiedersi funzioni l’un l’altro. - La comunicazione avviene tramite messaggi scambiati dal kernel, quindi c’è un grande sovraccarico di gestione, che incide sull’e cienza del sistema. - Questo modello permette la massima separazione tra meccanismi e politiche (è sempre bene separare il “come si fa” dal “cosa si fa”), una facile modificabilità, la massima portabilità (basta reimplementare le poche funzioni del microkernel utilizzate dai servizi per far funzionare il sistema su una macchina diversa) e a dabilità: - se un servizio fallisce, il resto del sistema rimane inalterato, e si può riavviare il servizio. |
Spiega il sistema modulare | Quest’approccio coinvolge l’uso di tecniche di programmazione a oggetti, ed è il più utilizzato. Come nell’approccio a microkernel, il kernel possiede solo un insieme minimo di funzioni, ma qui si collega dinamicamente ai moduli che implementano le varie funzioni del sistema al boot e durante l’esecuzione. Come nel modello a strati, le implementazioni di ogni modulo sono nascoste agli altri ma hanno interfacce ben definite per comunicare. La comunicazione è diretta, migliorando così le prestazioni rispetto all’approccio a microkernel (rimangono però limitate). Gli altri vantaggi di questa implementazione sono gli stessi dei sistemi a microkernel. |
Come il sistema operativo è in grado di misurare le sue performance? | Esistono due modi principali: - viene implementato un codice che esegue delle misurazioni sul comportamento come la stesura dei timestamp delle esecuzioni di processi e ne mostra i risultati (es dei file di log) successivamente un programma di analisi è in grado di estrapolarnele informazioni sulle performacne - includere nel sistema stru menti interattivi che permettano a utenti e amministratori di interrogare lo status dei vari componenti del sistema per individuare i colli di bottiglia |
Come vengono gestiti i segnali e i messaggi fra processi? | Le comunicazioni fra processi possono avvenire in 2 modi principalmente - comunicazione diretta: i processi sono identificati e i messaggi sono spediti ad uno specifico destinatario (es. messaggi, memoria condivisa, socket) - comunicazione indiretta: in cui i processi comunicanti non si conoscono direttamente ma comunicano attraverso un terzo mezzo (es. mailbox, file, socket) |
Come possono essere gestiti i deadlocks? | Metodi per affrontare i deadlocks sono : - Ignorando: il sistema si ferma e viene riavviato il tutto - Prevenzione : eliminazione di una delle cause del deadlock (mutua esclusione, possesso e attesa, preemption, attesa circolare) - Avoidance : verificare in anticipo se le risorse possono essere assegnate al processo( grafo di allocazione delle risorse, Algoritmo del banchiere) - Rilevazione e recupero: viene utilizzato il grafo di attesa per stabilire la presenza di un deadlock, nel caso vengono terminati i processi ritenuti responsabili del deadlock |
Che cosa sono le race condition e come possono essere affrontate dal sistema? | Si definisce race condition quando piu processi accedono alle stesse variabili modificandole in modo concorrente. questo può generare errori e incongruenze fra i dati, per evitare le Race Conditions deve essere implementata una buona sincronizzazione dei processi |
Che cosa e' il bootstrap e quali tipi ne esistono? | E' la procedura di avviamento di un sistema da parte del kernel i vari tipi sono: - a un passo: il SO si trova in memoria ROM (caricamento veloce ma non modificabile, poco sicuro) - a due passi: in ROM e' presente solo il bootloader che carica dalla memoria di massa il SO in RAM(piu scalabile e facile da implementare del primo, piu lento del primo) - a tre passi : in ROM c'e' un base loader che carica il loader che carica solo le sezioni del SO che sono necessarie (piu lento, piu flessibile, occupa meno memoria RAM, piu sicuro dei tre) |
I vantaggi dell'utilizzo di thread | La condivisione delle risorse fra processi Miglioramento dell'economia del sistema I programmi diventano sfruttabili delle architetture multiprocessore. |
Quali sono i diversi servizi forniti da un sistema operativo? | Interfaccia con l'utente: consente all'utente di interagire con il sistema operativo e di eseguire programmi. Esecuzione di un programma: carica un programma in memoria e lo avvia. Operazioni di I/O: consente ai programmi di accedere ai dispositivi di I/O. Gestione del file system: consente ai programmi di creare, leggere, scrivere e cancellare file. Comunicazioni: consente ai processi di scambiare informazioni tra loro. Rilevamento degli errori: rileva e gestisce gli errori che possono verificarsi nel sistema. Assegnazione delle risorse: alloca le risorse del sistema agli utenti e ai processi. Contabilizzazione dell'uso delle risorse: registra l'utilizzo delle risorse da parte degli utenti. Protezione e sicurezza: protegge le informazioni e il sistema da accessi non autorizzati. |
Che tipo di supporto è previsto per la gestione dei thread? | - spazio utente: la gestione del THREAD UTENTE viene lasciata ad un processo(il kernel è sollevato dalla gestione del thread) il tutto è reso possibile dalle librerie per la gestione dei thread rese disponibili a livello utente - spazio kernel: per la gestione dei TREAD KERNEL è del tutto gestita dal sistema operativo con una libreria a livello kernel le funzioni sono quindi chiamate di sistema |
Come funziona la schedulazione a feedback (C+LR)? | La schedulazione a feedback (C+LR) è una tecnica di schedulazione che consente ai processi di migrare da una coda a un'altra, in base alle loro prestazioni. I processi che si eseguono in modo efficiente vengono promossi a code con priorità più alta, mentre i processi che si eseguono in modo inefficiente vengono degradati a code con priorità più bassa. Questo tipo di schedulazione può aiutare a migliorare le prestazioni complessive del sistema, assicurando che i processi più importanti ricevano la maggiore attenzione. |
Quali sono i criteri che si desiderano ottimizzare nella scelta di un algoritmo di schedulazione? | Sfruttamento del processore Throughput Tempo di attesa Tempo di risposta |
Quali sono i diversi tipi di schedulazione? | FCFS (First Come First Served) Priorità RR (Round Robin) Coda a più livelli (C+L) Coda a più livelli con retroazione (C+LR) |
Come funziona la schedulazione FCFS? | La schedulazione FCFS gestisce la coda dei processi pronti con una politica FIFO; i processi ottengono la CPU nell'ordine in cui entrano nella coda. È una politica facile da implementare e molto veloce da eseguire, tuttavia il tempo di attesa medio dipende fortemente dall'ordine di arrivo dei processi (effetto convoglio). |
Come funziona la schedulazione a priorita? | La schedulazione a priorità permette di associare ad ogni processo un indice di priorità definito internamente (in base a parametri misurabili), oppure esternamente (dall'utente o dall'amministratore del sistema), quindi ordina la coda in base a questi indici. Può essere realizzata con o senza preemption: nel primo caso quando un processo diventa pronto, richiede schedulazione, e se ha priorità maggiore rispetto a quello in esecuzione, lo sostituisce; nel secondo caso invece la schedulazione viene eseguita quando la CPU viene rilasciata. Un problema di queste politiche è la possibilità di starvation, ossia il blocco indefinito di processi a priorità bassa poiché ci sono sempre processi a priorità maggiore ad ottenere la CPU. Si può risolvere introducendo l'aging, ossia aumentando la priorità di un processo mentre attende. In questo modo, anche i processi a priorità bassa saranno sicuramente eseguiti, dopodiché la priorità tornerà al valore iniziale. |
Come funziona la schedulazione RR? | La schedulazione RR è la politica tipica dei sistemi time sharing e permette di distribuire uniformemente il tempo della CPU tra n processi in modo che ognuno ne ottenga 1/n. È di tipo preemptive. Si implementa impostando allo scadere di un quanto di tempo, ogni volta che si assegna la CPU a un processo. Se questi non la rilascia la entro la fine del quanto, subisce preemption, torna in coda e lo schedulatore sceglie un nuovo processo da eseguire. Se la turnazione è abbastanza veloce, permette di creare l'illusione di esecuzione parallela. La velocità di esecuzione dei processi dipende dal numero di processi in coda; il tempo di turnaround dipende dalla durata del quanto di tempo. |
Quali sono i vantaggi e gli svantaggi di ogni tipo di schedulazione? | Il tipo di schedulazione corretto per un'applicazione dipende da una serie di fattori, tra cui: Il tipo di applicazione (ad esempio, un server web, un'applicazione desktop o un'applicazione mobile) * Le caratteristiche della CPU (ad esempio, il numero di core, la frequenza di clock e la cache) * La quantità di memoria disponibile * Il tipo di storage utilizzato (ad esempio, un disco rigido, un SSD o un'unità flash) * La quantità di traffico di rete generato dall'applicazione * Le esigenze degli utenti (ad esempio, l'attesa massima, l'utilizzo della CPU e la latenza) |
Quali sono le differenze fra la schedulazione FCFS e la schedulazione a priorità? | La schedulazione FCFS (First Come First Served) assegna la CPU al processo che è in coda da più tempo, mentre la schedulazione a priorità assegna la CPU al processo con la priorità più alta. La schedulazione FCFS è semplice da implementare ed efficiente in termini di risorse, ma non è sempre la migliore in termini di prestazioni. La schedulazione a priorità può migliorare le prestazioni, ma è più complessa da implementare e può richiedere più risorse. |
Quali sono i vantaggi e gli svantaggi della schedulazione RR? | La schedulazione RR (Round Robin) assegna alla CPU un processo per un breve periodo di tempo, detto quantum, e poi passa al processo successivo. Questo processo viene ripetuto fino a quando tutti i processi non sono stati eseguiti. La schedulazione RR è utile per migliorare le prestazioni in sistemi con un carico di lavoro misto, ma può causare la perdita di prestazioni in sistemi con un carico di lavoro pesante. |
Quali sono le principali interfacce di un sistema operativo? | Interfaccia a riga di comando (interprete di comandi) si avvale di un interprete di comandi per eseguire il comando testuale impartito dall'utente interfaccia grafica: piu intuitive da usare, si avvale di una o piu finestre con i relativi menu |
Diversi modelli di threading | Il modello molti a 1, il modello 1 a 1, il modello molti a molti e il modello a 2 livelli |
Come viene cancellato un thread? | La cancellazione di un thread prevede la sua terminazione prima che abbia completato la sua esecuzione. Questa può avvenire in due modi: - cancellazione asincrona : terminazione a prescindere da quello che il thread sta facendo - cancellazione differita : viene verificato periodicamente che il thread si trovi in un punto in cui può essere terminato, alternativamente si aspetta la sua terminazione naturale |
Come si sceglie il corretto tipo di schedulazione per una applicazione? | - Il tipo di applicazione (ad esempio, un server web, un'applicazione desktop o un'applicazione mobile) - Le caratteristiche della CPU (ad esempio, il numero di core, la frequenza di clock e la cache) - La quantità di memoria disponibile - Il tipo di storage utilizzato (ad esempio, un disco rigido, un SSD o un'unità flash) - La quantità di traffico di rete generato dall'applicazione - Le esigenze degli utenti (ad esempio, l'attesa massima, l'utilizzo della CPU e la latenza) |
Che cosa sono le chiamate di sistema? | Le chiamate di sistema sono le funzioni che consentono ai programmi utenti di accedere ai servizi del sistema operativo.Le chiamate di sistema sono generalmente disponibili sotto forma di routine scritte in C o C++, sebbene per alcuni compiti di basso livello sia necessario il ricorso a istruzioni in linguaggio assembly. |
Come cooperano i thread? | I thread cooperano in diversi modi, tra cui thread simmetrici, thread gerarchici e thread in pipeline. |
Schedulazione pre emptive e non pre emptive | Pre emptive : al processo in esecuzione viene conceso un quanto di tempo al termine del quale viene sollevato dall'incarico (puo portare all'inconsistenza dei dati). non pre emptive : un processo occupa la CPU fino a quando: - passa in stato di attesa - passa in fase di ready - rilascia volontariamente il processore - termina (un processo potrebbe non lasciare per lungo tempo la CPU) |
Quali sono i criteri per la scelta di un algoritmo di schedulazione? | UTILIZZO DEL PROCESSORE: quanto utilizzo del proc. Riesco a massimizzare THROUGHPUT: quanti processi riesco a completare in una unità di tempo TURNAROUND TIME: tempo di completamento di un processo TEMPO DI ATTESA: tempo di attesa del processo nella coda dei processi pronti TEMPO DI RISPOSTA: intervallo di tempo che intercorre tra la formulazione della prima richiesta alla produzione della prima risposta |
Quali sono i vari algoritmi di schedulazione con i loro pro e contro? | 1) First come first served + implementazione facile - tempo medio di attesa lungo 2) Shortest job first + il tempo medio e' minimo - problema di starvation 3) Schedulazione con priorita' + introduzione dell' aging - starvation se non si usa l-aging 4) Round robin + prestazioni mediamente buone - se il time slice e' calibrato male allora il tempo risulta pari a FCFS 5) Coda a piu livelli + facile implementazione - se ci sono molti processi con priorita' alta allora diventa inefficiente 6) Coda con retroazione + dinamico flessibile e completo - molto complesso |
Come vengono misurate le prestazioni dei sistemi operativi? | Di solito i task compiuti da un sistema operativo vengono segnati in un file di log con annessa data di esecuzione, con il giusto software il sistema operativo è in grado di estrapolarne informazioni riguardanti le prestazioni |
Whats the difference between al process and a thread? | Un processo riguarda una sola applicazione e ha un preciso scopo può essere composto da diversi thread, in quel caso si chiamerebbe processo multithread Un thread invece identifica un flusso di esecuzione indipendente e autonome su un programma che ha accesso a una porzione di memoria |
In che modo la schedulazione a feedback può migliorare le prestazioni di un sistema? | La schedulazione a feedback è una tecnica di schedulazione che consente ai processi di migrare da una coda a un'altra, in base alle loro prestazioni. I processi che si eseguono in modo efficiente vengono promossi a code con priorità più alta, mentre i processi che si eseguono in modo inefficiente vengono degradati a code con priorità più bassa. Questo tipo di schedulazione può aiutare a migliorare le prestazioni complessive del sistema, assicurando che i processi più importanti ricevano la maggiore attenzione. |
Come si sceglie il giusto numero di code per un algoritmo di schedulazione a più livelli? | Il numero di code da utilizzare in un algoritmo di schedulazione a più livelli dipende da una serie di fattori, tra cui: * Il tipo di applicazione * Le caratteristiche della CPU * La quantità di memoria disponibile * Il tipo di storage utilizzato * La quantità di traffico di rete generato dall'applicazione * Le esigenze degli utenti in generale è meglio utilizzare più code in sistemi con un carico di lavoro misto e poche code in sistemi con un carico di lavoro pesante. |
Cosa sono i processi leggeri o light weight processes? | I processi leggeri sono una struttura dati intermedia tra un thread livello kernel e i thread livello utente che devono essere mappati su di esso. |
What are the advantages of using threads instead of processes? | I thread hanno diversi vantaggi rispetto ai processi, tra cui la maggiore disponibilità, la condivisione delle risorse, l'economia e lo sfruttamento delle architetture multiprocessore. |
Definizione di schedulazione | Tecnica con lo scopo di gestire in modo ottimale la turnazione dei processi sulla CPU definendo delle politiche di ordinamento. Si basa sulla proprieta’ di ciclicita’ del processo: Alternamento continuo di fasi di elaborazione CPU e fasi di attesa di I/O che si concludono con una richiesta di terminazione al sistema. si suddividono in : - pre emptive - non pre emptive x a breve termine x a lungo termine x a medio termine |
What are the disadvantages of using threads instead of processes? | I thread hanno diversi svantaggi rispetto ai processi, tra cui la maggiore complessità, la maggiore probabilità di errori e la maggiore difficoltà di debug. |
In which way threads can be sincronysed? | I thread possono essere sincronizzati utilizzando una varietà di tecniche, tra cui mutex, semafori e lock. |
How is the correct model of threading chosen for an application? | Il modello di threading corretto per un'applicazione dipende da una varietà di fattori, tra cui le caratteristiche dell'applicazione, le prestazioni richieste e le risorse disponibili. |
Quali sono le sfide della gestione dei thread di un sistema? | La gestione dei thread in un sistema multiprocessore è una sfida complessa, a causa di una serie di fattori, tra cui: * La necessità di sincronizzare l'accesso alle risorse condivise * La necessità di evitare deadlock e starvation * La necessità di ottimizzare le prestazioni Esistono una serie di tecniche che possono essere utilizzate per affrontare queste sfide, tra cui: * L'utilizzo di mutex, semafori e altre primitive di sincronizzazione * L'utilizzo di thread di priorità * L'utilizzo di schedulazione a più livelli in generale dipende dal tipo di applicazione e dal carico di lavoro |
Nella creazione di un sistema operativo, che cosa prevede la fase preliminare? | - uno studio preliminare o progettazione - definizione degli scopi del sistema operativo - definire una architettura di partenza - definizione dei meccanismi (come vengono fatte le cose dal SO) e criteri(ordine e quali cose fare) |
Quale è il problema delle sezioni critiche? | Sezione critica e' una porzione di codice che può generare corse critiche se eseguita in modo concorrente percio' è necesario individuare la sezione critica per poter creare un protocollo che possa essere utilizzato per bypassare I problem di inconsistenza. una sezione critica puo' necessitare di : - MUTUA ESCLUSIONE = se un processo sta eseguendo la sua sezione critica, nessun altro può farlo - PROGRESSO = stabilisce che solo chi non sta eseguendo la propria sezione critica può concorrere con gli altri per accedervi. - ATTESA LIMITATA = bisogna fare in modo che nessun processo attenda troppo a lungo di evolversi - SINTESI: le sezioni critiche di codice devono avere acceso esclusivo alle variabili condivise e devono sruttarle in modo rapido perchè altri processi che usano la stessa risorsa non debbano attendere indefinitamente. Ciò si ottiene realizzando processi cooperanti che superino le criticità con un’opportuna sincronizzazione dell’evoluzione delle loro computazioni |
Come vengono gestiti i processi parzialmente in memoria? | La memoria condivisa con la paginazione viene gestita mappando la stessa pagina di memoria su più processi. Ciò consente ai processi di condividere dati e codice senza la necessità di duplicare i dati. |
Quali sono le tre condizioni che deve soddisfare una soluzione al problema delle sezioni critiche? | Le tre condizioni che deve soddisfare una soluzione al problema delle sezioni critiche sono: * Mutua esclusione: un solo processo può accedere alla risorsa condivisa alla volta. * Progresso: se un processo è in attesa di accedere alla risorsa condivisa, non deve essere bloccato indefinitamente. * Aspettativa limitata: se un processo è in attesa di accedere alla risorsa condivisa, l'attesa deve essere limitata nel tempo. |
Quali sono le diverse tecniche per risolvere il problema delle sezioni critiche? | Esistono diverse tecniche per risolvere il problema delle sezioni critiche, tra cui: * Variabili di turno * Variabili di lock * Semafori binari e generalizzati * Monitor |
Quali sono i vantaggi e gli svantaggi per le tecniche: variabili di turno vavriabili di lock semafori binari monitor ? | Variabili di turno: variabili condivise fra processi che indicano quale processo sta utilizzando al momento la risorsa sono i processi che devono sincronizzarsi fra di loro(non facilmente scalabile) Variabili di lock: (sono facilmente scalabili ma) sono più efficienti delle variabili di turno, ma possono causare deadlock. Semafori binari: variabile gestita direttamente dal sistema operativo, se non viene implementata una coda di attesa allora la funzione "acquire" puo genreare spinlock. pericolo di deadlock se la lista non viene implementata bene, pericolo di starvation (se non vengono rilasciate le risorse(errore del programmatore)) Semafori generalizzati: indicano per un gruppo di risorse omogenee quante ne sono occupate, i problemi rimangono analoghi Monitor: l'aquisizione e il rilascio delle risorse e' affidato completamente al sistema operativo, non ha particolari difetti |
In base a quali fattori viene scelta la tecnica giusta per la risoluzione delle sezioni crititche? | La tecnica più adatta per risolvere il problema delle sezioni critiche in un dato contesto dipende da una serie di fattori, tra cui: * Il numero di processi * La complessità del problema * Le esigenze di prestazioni * Le competenze del programmatore |
Quali sono i rischi associati all'utilizzo di tecniche per risolvere il problema delle sezioni critiche? | L'utilizzo di tecniche per risolvere il problema delle sezioni critiche può comportare una serie di rischi, tra cui: * Incoerenza dei dati condivisi * Problemi di prestazioni * Deadlock * Starvation |
Quale è la differenza fra una variabile di turno e una di lock? | Una variabile di turno è una variabile condivisa tra i processi che stabilisce quale può usare una risorsa. Una variabile di Lock è una variabile condivisa tra i processi che indica se un processo sta accedendo a una risorsa. |
Quale differenza c'è fra un semaforo binario e un semaforo generalizzato? | Un semaforo binario può assumere due valori: 1 (risorsa libera) o 0 (risorsa occupata). Un semaforo generalizzato può assumere qualsiasi valore maggiore o uguale a 0. |
Quale è il vantaggio di utilizzare un monitor rispoetto a un semaforo? | Il vantaggio di utilizzare un monitor rispetto al semaforo consiste nella eliminazione di alcuni rischi associati alla mutua esclusione come la starvation(nel caso venga implementata male la coda di attesa) ma ancora di più allo spinlock, questi errori dipendente dal programmatore che può dimenticarsi di rilasciare una risorsa una volta che questa viene finita di utilizzare |
Quali sono le due principali forme di comunicazione fra processi? | La comunicazione interprocesso può essere diretta o indiretta. La comunicazione diretta si verifica quando i processi comunicano direttamente tra loro, conoscendo l'ID l'uno dell'altro. La comunicazione indiretta si verifica quando i processi comunicano attraverso un canale intermedio, come una mailbox o un socket. |
Quali sono i vantaggi e gli svantaggi della comunicazione diretta? | I vantaggi sono: - semplice da implementare - può essere molto efficiente. Svantaggi: - può essere difficile da estendere a un numero elevato di processi. |
Quali sono i vantaggi e gli svantaggi della comunicazione indiretta? | I vantaggi : Può essere facilmente estesa a un numero elevato di processi. Gli svantaggi: Può essere più difficile da implementare Può essere meno efficiente della comunicazione diretta. |
Quali sono le diverse tecniche di comunicazione diretta? | Memoria condivisa: con implementazione tramite : - Variabili globali (condividono una porzione di spazio di indirizzamento) - - con l'aiuto del sistema operativo - - con spazio fisicamente condiviso: - Buffer (depositati i messaggi da una parte e letti dall'altra) Scambio di messaggi: i messaggi vengono incapsulati e memorizzati in un buffer di memoria che il sistema operativo assegna esplicitamente per la comunicazione di due processi utilizzo di socket: generalmente utilizzato per architetture client server |
Quali sono le diverse tecniche di comunicazione indiretta? | Le diverse tecniche di comunicazione indiretta includono le mailbox, i socket e le file. |
Quali sono le considerazioni chiave da tenere a mente quando si sceglie una tecnica di comunicazione interprocesso? | Le considerazioni chiave da tenere a mente quando si sceglie una tecnica di comunicazione interprocesso includono la quantità di informazioni da trasmettere, la velocità di esecuzione, la scalabilità, la semplicità d'uso, l'omogeneità delle comunicazioni, l'integrazione nel linguaggio di programmazione, l'affidabilità, la sicurezza e la protezione. |
Quale è la differenza fra memoria condivisa e scambio di mesaggi? | La memoria condivisa è un metodo di comunicazione interprocesso in cui i processi condividono un'area di memoria fisica. Lo scambio di messaggi è un metodo di comunicazione interprocesso in cui i processi scambiano messaggi tra loro. |
Quale è il vantaggio dell'utilizzo della memoria condivisa rispetto allo scambio di messaggi? | Il vantaggio dell'utilizzo della memoria condivisa rispetto allo scambio di messaggi è che può essere più efficiente. Questo perché i processi possono accedere direttamente ai dati condivisi, senza doverli copiare |
Quale lo svantaggio dell'utilizzo della memoria condivisa rispetto allo scambio di messaggi? | Lo svantaggio dell'utilizzo della memoria condivisa rispetto allo scambio di messaggi è che può essere più difficile da sincronizzare. Questo perché i processi devono essere in grado di accedere ai dati condivisi in modo sicuro, senza che si verifichino collisioni. |
Quali sono i vantaggi della paginazione? | Migliore utilizzo della memoria: la paginazione consente di caricare solo le pagine di memoria necessarie per un processo, il che può liberare spazio per altri processi. Maggiore efficienza: la paginazione può migliorare le prestazioni del sistema operativo riducendo il numero di accessi al disco necessari per caricare e scaricare le pagine di memoria. Migliore sicurezza: la paginazione può migliorare la sicurezza del sistema operativo consentendo di limitare l'accesso delle applicazioni alle pagine di memoria di altri processi. |
Quali sono gli svantaggi della paginazione? | Più complessità: la paginazione aumenta la complessità del sistema operativo, poiché è necessario gestire le pagine di memoria e le loro traduzioni in indirizzi fisici. Più overhead: la paginazione può aumentare l'overhead del sistema operativo, poiché è necessario eseguire operazioni aggiuntive per caricare e scaricare le pagine di memoria. |
Come funziona la paginazione? | La paginazione funziona suddividendo la memoria virtuale di un processo in pagine di dimensioni fisse. Ogni pagina viene quindi mappata su un frame di memoria fisica. Quando un processo tenta di accedere a una pagina di memoria non ancora caricata in memoria fisica, si verifica un fallimento di pagina. Il sistema operativo recupera quindi la pagina dal disco e la carica in memoria fisica. |
Quali sono le quattro condizioni per il verificarsi di un deadlock? | Mutua esclusione: almeno una delle risorse coinvolte è utilizzata in modo mutuamente esclusivo dai processi. Possesso e attesa: un processo che possiede delle risorse si mette in attesa per averne altre. Nessun rilascio anticipato: il sistema operativo non può forzare il rilascio di risorse assegnate ai processi. Attesa circolare: n processi attendono in modo che P1 attende P2, P2 attende P3, ..., Pn attende P1. |
Come vengono gestiti i processi parzialmente in memoria? | La memoria condivisa con la paginazione viene gestita mappando la stessa pagina di memoria su più processi. Ciò consente ai processi di condividere dati e codice senza la necessità di duplicare i dati. |
Quali sono i diversi modi per prevenire un deadlock? | - Ignorare il deadlock: questo è il metodo più semplice, ma può portare a prestazioni scadenti e alla perdita di dati. - Prevenire il deadlock: questo può essere fatto invalidando una delle quattro condizioni per il verificarsi di un deadlock. Ad esempio, il sistema operativo potrebbe impedire ai processi di richiedere risorse che non sono disponibili. - Evitare il deadlock: questo può essere fatto richiedendo al processo informazioni supplementari sull'utilizzo delle risorse. Ad esempio, il sistema operativo potrebbe richiedere al processo di specificare quali risorse utilizzerà all'avvio. |
Quali sono i diversi modi per rilevare e risolvere i deadlock? | Il rilevamento del deadlock può essere fatto utilizzando un grafo di attesa o un algoritmo simile all'algoritmo del banchiere. Un grafo di attesa è una rappresentazione grafica dei processi e delle risorse che utilizzano. Ogni processo è rappresentato da un nodo nel grafo e ogni risorsa è rappresentata da un arco. Un arco collega un processo a una risorsa se il processo sta aspettando la risorsa. L'algoritmo del banchiere è un algoritmo che può essere utilizzato per determinare se un sistema è in uno stato sicuro. Un sistema è in uno stato sicuro se esiste una sequenza di processi che possono essere eseguiti senza causare un deadlock. |
Quale la differenza fra un deadlock e una starvation? | Un deadlock è una situazione in cui un gruppo di processi è bloccato in attesa di risorse che non saranno mai disponibili. Uno starvation è una situazione in cui un processo non è in grado di ottenere le risorse di cui ha bisogno per completare l'esecuzione. |
Quali sono le possibili conseguenze di un deadlock? | Un deadlock può portare a una serie di conseguenze negative, tra cui: * Perdite di dati * Perdite di prestazioni * Instabilità del sistema |
Come si puo' prevenire un deadlock? | Un deadlock può essere prevenuto adottando una serie di misure, tra cui: * Evitare che i processi richiedano risorse che non sono disponibili. * Richiedere ai processi di specificare quali risorse utilizzeranno all'avvio. * Utilizzare un algoritmo per rilevare e risolvere i deadlock. |
Come viene gestito lo scambio ? | Lo scambio viene gestito memorizzando le pagine di memoria non necessarie in memoria swap. La memoria swap è un tipo di memoria secondaria, come un disco rigido, che viene utilizzata per memorizzare le pagine di memoria che non sono attualmente necessarie. |
Come vengono gestiti conflitti di frame? | I conflitti di frame vengono gestiti scegliendo una pagina di memoria da sostituire in memoria fisica. Il processo di scelta di una pagina da sostituire viene chiamato algoritmo di sostituzione di pagine. |
Qualis ono i vantaggi e gli svantaggi di ciascuna struttura di tabella delle pagine? | I vantaggi e gli svantaggi di ciascuna struttura di tabella delle pagine sono: Tabelle delle pagine lineari: Vantaggi: semplici da implementare Svantaggi: non efficienti per grandi spazi di indirizzamento Tabelle delle pagine alberi: Vantaggi: efficienti per grandi spazi di indirizzamento Svantaggi: più complesse da implementare Tabelle delle pagine hash: Vantaggi: efficienti per grandi spazi di indirizzamento e per la ricerca di pagine Svantaggi: più complesse da implementare e richiedono più memoria |
Quali sono le diverse strutture di tabella delle pagine? | Esistono diversi tipi di strutture di tabella delle pagine, tra cui: Tabelle delle pagine lineari: le tabelle delle pagine lineari sono la struttura di tabella delle pagine più semplice. Sono costituite da una singola tabella che contiene l'indirizzo fisico di ogni pagina di memoria. Tabelle delle pagine alberi: le tabelle delle pagine alberi sono una struttura di tabella delle pagine più complessa. Sono costituite da una serie di alberi che contengono l'indirizzo fisico di ogni pagina di memoria. Tabelle delle pagine hash: le tabelle delle pagine hash sono una struttura di tabella delle pagine che utilizza le funzioni hash per memorizzare gli indirizzi fisici delle pagine di memoria. |
Quali sono i vari parametri per la comunicazione fra processi? | - Quantità di informazioni da trasmettere - Velocità di esecuzione - Scalabilità - Semplicità di uso nelle applicazioni - Omogeneità delle comunicazioni - Integrazione nel linguaggio di programmazione - Affidabilità (non ci siano perdite di info) - Sicurezza (non ci siano interferenze) - Protezione |
Come vengono gestiti i fallimenti di pagina? | I fallimenti di pagina vengono gestiti caricando la pagina di memoria richiesta dal disco e inviandola alla CPU. |
Cosa sono e quale è la differenza fra trap e eccezione ? | Sono entrambi meccanismi di segnalazione di eventi in un sistema operativo le eccezioni hanno generalmente una causa software, parte del codice che tenta di accedere ad un'area di memoria non sua per esempio i trap sono generalmente generati da componenti hardware come una periferica che ha un errore o un processo che tenta di fare una operazione non supportata dal processore |
Che cosa sono le race condition e come possono essere affrontate dal sistema? | Si definisce race condition quando piu processi accedono alle stesse variabili modificandole in modo concorrente. questo può generare errori e incongruenze fra i dati, per evitare le Race Conditions deve essere implementata una buona sincronizzazione dei processi |
In cosa consiste la comunicazione tramite memoria condivisa? | Memoria condivisa: con implementazione tramite Variabili globali (condividono una porzione di spazio di indirizzamento) - con l'aiuto del sistema operativo i processi hanno due spazi separati e quando questi subiscono una modifica allora il sistema copia l'area modificata nell'altro processo - con spazio fisicamente condiviso: i processi devono applicare politiche di sincronizzazione per non creare concorrenza nella modifica Buffer (depositati i messaggi da una parte e letti dall'altra) in questo caso viene assegnato un buffer per lo scambio di messaggi tra i due processi, questi tramite algoritmi di schedulazione comunicano scrivendo e leggendo nel buffer |
Come funziona la comunicazione tramite socket? | Si suddivide in 3 step principali - creazione delle socket: ogni processo crea una socket - connessione delle socket fra i due processi - scambio di dati (che si ano file immagini testo o altro) generalmente si utilizza la chiamata di sistema(socket()) |
Quali sono le varianti di comunicazione tramite file? | Le due versioni condividono il nome delle istruzioni: mediante file condivisi: esattamente come la mailbox ma con la differenza che viene utilizzata la memoria di massa per un file condiviso mediante pipe: utilizza una struttura dati FIFO in memoria centrale(la comunicazione è unidirezionale a meno che non vengano utilizzate due pipe) |
Cosa sono le istruzioni atomiche | Le transazioni atomiche è una tecnica per la risoluzione della incoerenza dei dati quando dei processi utillizzano una risorsa in modo concorrente, questa tecnica raggruppa le istruzioni in blocchi che devono essere eseguiti singolarmente, questo consente di conservare uno stato sicuro |
Funzioni dello scambio di messaggi e mailbox | Invio invio condizionale ricezione ricezione condizionale (mailbox) create (mailbox) delete |
Che cosa è il modello working set? | Il modello working set è un modello di memoria virtuale che si basa sull'idea che le pagine di un processo che sono state utilizzate di recente sono più probabilmente utilizzate di nuovo in futuro. Il modello working set utilizza questa informazione per sostituire le pagine che sono meno probabilmente utilizzate, in modo da liberare la memoria per le pagine che sono più probabilmente utilizzate. Il modello working set funziona in modo da mantenere in memoria un gruppo di pagine, chiamato working set, che sono state utilizzate di recente. Quando un processo tenta di accedere a una pagina che non è nel working set, il sistema operativo la carica in memoria dal disco. Se il working set è pieno, il sistema operativo sostituisce una pagina che non è stata utilizzata di recente. |
Che cosa è e a che cosa serve un TLB? | Il TLB (Translation Lookaside Buffer) è una cache molto veloce che memorizza le traduzioni recenti tra indirizzi logici e indirizzi fisici. utilizzato per : - accelerare il processo di traduzione degli indirizzi riducendo il numero di accessi alle tabelle delle pagine. Quando un processo tenta di accedere a una pagina, il sistema operativo controlla prima il TLB per vedere se la traduzione è memorizzata. Se è presente allora si accede alla memoria fisica, altrimenti si accede alla tabella delle pagine Una TBL può anche memorizzare gli ASID ovvero address space identifier che identifica univocamente ogni processo, questo consente una maggiore protezione degli spazi di memoria riservati ad un processo |