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 |
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. |
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. |
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 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 |
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 |