Sistemi Operativi e Laboratorio, Prova del 6/4/2017 versione A

Documenti analoghi
ESERCIZIO Cambio Di Contesto: System Call (1)

Sistemi Operativi e Laboratorio, Prova del 15/01/2014

Sistemi Operativi e Laboratorio, Prova del 05/02/2014

Sistemi Operativi e Laboratorio, Prova del 16/2/2015

Java Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java

ESERCIZIO SincrAmbGlob-1

SEMAFORI SEMAFORI. Sul semaforo sono ammesse solo due operazioni (primitive)

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

SISTEMI OPERATIVI. Sincronizzazione in Java (Java object lock e segnali wait-notify-notifyall)

il Nucleo e la gestione dei processi

SISTEMI OPERATIVI. Nucleo di un SO. Il Nucleo. Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher. 06.

SOLUZIONE. ESERCIZIO PRODUTTORE CONSUMATORE (semafori)

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Operazioni di I/O. Schema di collegamento fra dispositivi periferici e CPU

TECN.PROG.SIST.INF. - Politiche di schedulazione del processore. Roberta Gerboni

Esercitazione 2: Java Thread

Esercitazione 2: Java Thread. Java Thread. Java Thread. Un thread:

Sincronizzazione. Soluzioni hardware Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

1. Che cos è un sistema multiprogrammato? Si può realizzare la multiprogrammazione

Java Thread. Thread. Un thread

I THREAD O PROCESSI LEGGERI

Sistemi in tempo reale: applicazioni alla robotica. Sistemi in tempo reale: applicazioni alla robotica p.1/15

Sistema operativo: Gestione dei processi

Monitor. Le procedure entry sono le sole operazioni che possono essere utilizzate dai processi per accedere alle variabili comuni.

Sincronizzazione. Soluzioni software Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Corso di Laboratorio di Sistemi Operativi

Soluzioni ai problemi di Mutua Esclusione Primitive di sincronizzazione. Soluzioni ai problemi di Mutua EsclusionePrimitive di sincronizzazione

Chiamata di procedura remota

SOLUZIONE. <l auto arriva all ingresso I> while PostiDisponibili == 0

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Esercizi di utilizzo del semaforo semplice di competizione per l'uso di una risorsa comune

I Processi. Il Concetto di Processo

Le risorse. Alcune definizioni

istruzioni eseguite in ordine predeterminabile in base al codice del programma e dei valori dei dati in ingresso

Il Concetto di Processo

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario

Sistemi Operativi. Lezione 3 Processi e Thread

Bootstrap. Bootstrap. Shutdown. Struttura di un SO. Elementi principali di un SO:

Sistemi Operativi Esercizi Ricapitolazione. Docente: Claudio E. Palazzi

Sistemi Operativi Esercizi Ricapitolazione. Docente: Claudio E. Palazzi

Sincronizzazione. Problemi di sincronizzazione tipici Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

I processi: concetti di base, context switch e scheduling

Decima Esercitazione. Accesso a risorse condivise tramite Monitor Java

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

Programmazione multi threaded in Python. Linguaggi dinamici A.A. 2010/2011 1

Sincronizzazione dei processi. Capitolo 5 -- Silberschatz

TEORIA DEI SISTEMI OPERATIVI. Sistemi monoprogrammatie multiprogrammati

2. Nucleo del sistema operativo (la gestione dei processi)

Informatica Generale 07 - Sistemi Operativi:Gestione dei processi

Sistemi operativi - Concetti ed esempi -Settima edizione

Marco Cesati Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata

Esercizi Esercizi Università di Salerno

1. Le componenti principali di un sistema operativo sono: interfaccia con l utente (interprete dei comandi e/o interfaccia

Sistemi Operativi: Concetti Introduttivi

Il supporto al sistema operativo

Il monitor. Sistemi Operativi T AA

YYY02 Esercizi per Teoria. Esercizi per preparazione alla prova scritta

Sistemi Operativi 1. Mattia Monga. 11 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia

Sistemi operativi Sincronizzazione fra processi

Introduzione al Multithreading

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

I Processi nel Sistema Operativo Unix. Gerarchie di processi Unix. Stati di un processo Unix. Stati di un processo Unix.

UNIVERSITÀ DEGLI STUDI DI BERGAMO

Esercitazione maggio 2011

Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) :

Sincronizzazione Le sezioni scritiche

Processi. Descrittore di Processo (PCB) Context Switch Primitive per la creazione e terminazione dei processi. Il descrittore di processo (PCB)

Capitolo 7: Sincronizzazione

Il semaforo. Strumento linguistico di basso livello per risolvere problemi di sincronizzazione.

UNIVERSITÀ DEGLI STUDI DI BERGAMO

Sistemi Operativi. La gestione delle risorse

SCD. Correttezza temporale. Correttezza temporale. Premesse 2. Politiche di ordinamento 1. Premesse 1

Monitor [Hoare 74] Costrutto sintattico che associa un insieme di procedure/funzioni (entry) ad una struttura dati comune a più processi.

Monitor [Hoare 74] Uso del monitor

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Processi e thread. Concetto di processo

NUCLEO DI UN SISTEMA A PROCESSI

CAPITOLO 17 PROBLEMI DEL PRODUTTORE/CONSUMATORE v1

Lezione XII: La gestione delle eccezioni in MINIX

CAPITOLO 22 PROBLEMA DEL PRODUTTORE/CONSUMATORE

LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica. Algoritmi ricorsivi

System call per la gestione di processi

Informatica II Sistemi Operativi DIGIP - a.a. 2015/16

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Lab 4: Locks, Condition Variables in Java

Il monitor. Costrutti linguistici per la sincronizzazione

Sistemi Operativi (modulo di Informatica II) I processi

Il problema dello I/O e gli Interrupt. Appunti di Sistemi per la cl. 4 sez. D A cura del prof. Ing. Mario Catalano

2.2 Scheduling in Linux

Concetto di Processo Scheduling dei Processi Operazioni sui Processi Processi cooperanti Comunicazione tra processi

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina ADD A,B ISTRUZIONE SUCCESSIVA

Corso di Fondamenti di Informatica. La ricorsione

Esercizi di Algoritmi e Strutture Dati

SISTEMI OPERATIVI E LABORATORIO (Indirizzo Sistemi e Reti) 21 dicembre 2004

Threads: 1. Concetti di base 2. Threads in sistemi operativi attuali (NT/UNIX)

CORSO DI PROGRAMMAZIONE

Il Sistema Operativo

Il semaforo. Strumento linguistico di basso livello per risolvere problemi di sincronizzazione.

Transcript:

Nome: Cognome: Matricola: corso: fila: posto: Esercizio 1 (5 punti) Si consideri un processore che dispone dei registri speciali PC (program counter) e PS (program status), dello stack pointer SP e dei registri generali R1, R2 e R3. Il sistema riserva in memoria un area per il vettore di interruzione e per lo stack del nucleo. Il sistema operativo realizza i thread a livello kernel, i thread costituiscono l unica unità di schedulazione del sistema, e lo scheduling avviene con politica round robin. Come meccanismi di mutua esclusione e di sincronizzazione, il sistema offre ai thread i lock e le variabili di condizione. Queste ultime sono implementate con semantica OHARE. Al tempo t sono presenti due thread nel sistema: il thread TA, in stato di esecuzione, e il thread TB, che è bloccato sulla variabile di condizione CON1. Al tempo t il thread TA esegue una istruzione SVC per invocare la chiamata di sistema CON1.signal(&mutex). Al momento dell esecuzione dell istruzione SVC i registri del processore, i descrittori di TA e TB e lo stack del nucleo hanno i contenuti mostrati in tabella. Lo stack pointer del nucleo ha il valore 1016. Il vettore di interruzione associato all interruzione generata da SVC è 0425 e la parola di stato del nucleo è 275E. Si chiede: a) il contenuto dei descrittori, dei registri generali e speciali, dello stack del nucleo e lo stato del processore durante la fase di estrazione della prima istruzione della funzione di servizio; b) il contenuto dei descrittori, dei registri generali e speciali, dello stack del nucleo e lo stato del processore durante la fase di estrazione dell istruzione IRET con la quale termina la chiamata di sistema; c) il contenuto dei descrittori, dei registri generali e speciali, dello stack del nucleo e lo stato del processore durante la fase di estrazione dell istruzione eseguita subito dopo la IRET. Stato Esecuzione Stato Bloccato SP AFFF PC 2E31 PC B12C 1016 R1 AA2A PS 16F2 PS B6F2 1014 R2 A2CE SP 1873 SP BFF5 1012 R3 A2CF R1 1234 R1 B5CC 1010 R2 16CC R2 B000 100E R3 1777 R3 B011 101C PC 2F00 PS 16F2 stato Utente

a) contenuto dei descrittori, dei registri generali e speciali, dello stack del nucleo e lo stato del processore durante la fase di estrazione della prima istruzione della funzione di servizio: Stato Stato SP PC PC 1016 R1 PS PS 1014 R2 SP SP 1012 R3 R1 R1 1010 R2 R2 100E R3 R3 101C PC PS stato b) contenuto dei descrittori, dei registri generali e speciali, dello stack del nucleo e lo stato del processore durante la fase di estrazione dell istruzione IRET con la quale termina la chiamata di sistema; Stato Stato SP PC PC 1016 R1 PS PS 1015 R2 SP SP 1014 R3 R1 R1 1013 R2 R2 1012 R3 R3 1011 PC PS stato c) contenuto dei descrittori, dei registri generali e speciali, dello stack del nucleo e lo stato del processore durante la fase di estrazione dell istruzione eseguita subito dopo la IRET. Stato Stato SP PC PC 1016 R1 PS PS 1015 R2 SP SP 1014 R3 R1 R1 1013 R2 R2 1012 R3 R3 1011 PC PS stato a) contenuto dei descrittori, dei registri generali e speciali, dello stack del nucleo e lo stato del processore durante la fase di estrazione della prima istruzione della funzione di servizio: Stato Esecuzione Stato Bloccato SP 1013 PC 2E31 PC B12C 1016 2F00 R1 AA2A PS 16F2 PS B6F2 1014 16F2 R2 A2CE SP 1873 SP BFF5 1012 AFFF R3 A2CF R1 1234 R1 B5CC 1010 R2 16CC R2 B000 100E R3 1777 R3 B011 101C PC 0425 PS 275E stato Superv.

b) contenuto dei descrittori, dei registri generali e speciali, dello stack del nucleo e lo stato del processore durante la fase di estrazione dell istruzione IRET con la quale termina la chiamata di sistema; Stato Bloccato Stato Esecuzione SP 1013 PC 2F00 PC B12C 1016 B12C R1 B5CC PS 16F2 PS B6F2 1015 B6F2 R2 B000 SP AFFF SP BFF5 1014 B275 R3 B011 R1 AA2A R1 B5CC 1013 R2 A2CE R2 B000 1012 R3 A2CF R3 B011 1011 PC 0425+?? PS 275E stato Superv. c) contenuto dei descrittori, dei registri generali e speciali, dello stack del nucleo e lo stato del processore durante la fase di estrazione dell istruzione eseguita subito dopo la IRET. Stato Bloccato Stato Esecuzione SP BFF5 PC 2F00 PC B12C 1016 R1 B5CC PS 16F2 PS B6F2 1015 R2 B000 SP AFFF SP BFF5 1014 R3 B011 R1 AA2A R1 B5CC 1013 R2 A2CE R2 B000 1012 R3 A2CF R3 B011 1011 PC B12C PS B6F2 stato Utente Esercizio 2 (5 punti) A causa di alcuni lavori, parte di una corsia di una strada a doppia corsia è inaccessibile, per cui i veicoli percorrono l unica corsia disponibile a senso unico alternato (come mostrato in figura). Corsia 1 Corsia 2 Semaforo A Semaforo B L accesso alla corsia 1 è regolato da due semafori intelligenti (denominati A e B nella figura), che regolano il traffico nel modo seguente: Se la corsia 1 è libera da veicoli e un veicolo arriva alla corsia dei lavori (da una delle due direzioni), trova il semaforo verde e attraversa la corsia 1. Se però due veicoli arrivano contemporaneamente dalle direzioni opposte, solo uno dei due potrà entrare nella corsia 1, mentre l altro veicolo dovrà attendere. Se la corsia 1 è impegnata da veicoli che viaggiano nella direzione X (da A a B o da B ad A), e al semaforo nella direzione opposta non ci sono veicoli in attesa, sono ammessi al transito altri ulteriori veicoli che viaggiano in direzione X. Se sono presenti veicoli in transito in una direzione, e sono presenti veicoli in coda nella direzione opposta, nessun altro veicolo è ammesso al transito nella corsia 1. Inoltre, appena tutti i veicoli attualmente in transito escono dalla corsia 1, i veicoli in coda nella direzione opposta vengono sbloccati. Modelliamo il problema definendo un thread per ogni veicolo. Il generico thread che arriva al semaforo A esegue il seguente frammento di codice:

#define AtoB=0; #define BtoA=1; Accesso(direzione); // direzione è AtoB oppure BtoA <percorre il senso unico alternato> Uscita(direzione); Le funzioni Accesso e Uscita sono implementate utilizzando i seguenti dati condivisi: Lock mutex Condition CondAttesa[2] Int Attesa[2] Int InTransito[2] Si chiede di completare le due funzioni Accesso() e Uscita() che regolano l accesso dei veicoli. Accesso(direzione) { Attesa[direzione]++; while ((InTransito[direzioneOpposta]!= 0) ( )) Attesa[direzione]--; InTransito[direzione]++; Uscita(direzione) { InTransito[direzione]--; if ((InTransito[direzione] == 0) && (Attesa[direzioneOpposta]!= 0)) Accesso(direzione) { mutex.acquire(); Attesa[direzione]++; while ((InTransito[direzioneOpposta]!= 0) (Attesa[direzioneOpposta]!= 0)) CondAttesa[direzione].wait(mutex); Attesa[direzione]--; InTransito[direzione]++; mutex.release(); Uscita(direzione) { mutex.acquire(); InTransito[direzione]--; if ((InTransito[direzione] == 0) && (Attesa[direzioneOpposta]!= 0)) CondAttesa[direzioneOpposta].broadcast(); mutex.release();

Esercizio 3 (5 punti) Si consideri lo stesso problema dell esercizio 2. In questo caso però le funzioni Accesso e Uscita sono implementate utilizzando i seguenti dati condivisi: Semaphore mutex Semaphore incoda[2] Int Attesa[2] Int InTransito[2] Si chiede di completare le due funzioni Accesso() e Uscita() che regolano l accesso dei veicoli. Accesso(direzione) { BOOL sospensione = FALSE; Attesa[direzione]++; if ((InTransito[direzioneOpposta]!= 0) ( )) sospensione = TRUE; else { Attesa[direzione]--; InTransito[direzione]++; if sospensione Uscita(direzione) { InTransito[direzione]--; if (InTransito[direzione] == 0) while (Attesa[direzioneOpposta]!= 0) { Attesa[direzioneOpposta] --; intransito[direzioneopposta] ++; Accesso(direzione) { BOOL sospensione = FALSE; P(mutex); Attesa[direzione]++; if ((InTransito[direzioneOpposta]!= 0) (Attesa[direzioneOpposta]!= 0)) sospensione = TRUE; else { Attesa[direzione]--; InTransito[direzione]++; V(mutex); if sospensione P(incoda[direzione]); Uscita(direzione) {

Sistemi Operativi e Laboratorio, Prova del 6/4/2017 versione A P(mutex); InTransito[direzione]--; if (InTransito[direzione] == 0) while (Attesa[direzioneOpposta]!= 0) { Attesa[direzioneOpposta] --; intransito[direzioneopposta] ++; V(incoda[direzioneOpposta]); V(mutex); Esercizio 4 (5 punti) In un sistema in time sharing (con quanto di tempo e assegnazione del processore a rotazione tra i thread in stato di pronto) con thread realizzati a livello del Nucleo, sono presenti i thread T1, T2, T3, T4, T5 che condividono una variabile di condizione CON, una lock MUX e una spinlock SL. Il sistema implementa le variabili di condizione con semantica MESA, e i thread vengono sospesi sulle code delle variabili di condizione o sui Lock in ordine FIFO. Inoltre, si assume che alla riattivazione dallo stato di attesa, il thread venga messo in fondo alla coda pronti. Ad un certo tempo t è in esecuzione il thread T1, e gli altri thread sono nel seguente stato: Coda thread pronti: T2 T3 T4 è sospeso sulla variabile di condizione CON T5 è sospeso sulla lock MUX Inoltre la spinlock SL è in stato BUSY. Dire quale thread è in esecuzione e quale è lo stato di CON e di MUX, se, a partire dal tempo t, si verificano le seguenti sequenze di eventi (in alternativa): a b c d e SEQUENZA DI EVENTI il thread in esecuzione esegue thread_yield(); il thread in esecuzione esegue CON.signal(); il thread in esecuzione esegue CON.wait(&MUX); il thread in esecuzione esegue MUX.release(); il thread in esecuzione esegue MUX.release(); il thread in esecuzione esegue SL.acquire(); il thread in esecuzione esegue CON.signal(); il thread in esecuzione esegue SL.acquire(); Scade il quanto di tempo; il thread in esecuzione esegue SL.release(); In Esecuzione Coda pronti Coda di CON Coda di MUX Valore di SL a b c d SEQUENZA DI EVENTI il thread in esecuzione esegue thread_yield(); il thread in esecuzione esegue CON.signal(); il thread in esecuzione esegue CON.wait(&MUX); il thread in esecuzione esegue MUX.release(); il thread in esecuzione esegue MUX.release(); il thread in esecuzione esegue SL.acquire(); il thread in esecuzione esegue CON.signal(); In Esecuzione Coda pronti Coda di CON Coda di MUX Valore di SL T2 T3 T1 T5 BUSY T4 T5 T1 T4 T3 T2 BUSY T1 T2 T3 T5 T4 BUSY T2 T3 T4 T5 T1 BUSY

e Sistemi Operativi e Laboratorio, Prova del 6/4/2017 versione A il thread in esecuzione esegue SL.acquire(); Scade il quanto di tempo; il thread in esecuzione esegue SL.release(); T2 T3 T1 T4 T5 FREE Esercizio 5 (4 punti) In un sistema che utilizza la tecnica di prevenzione dinamica (tramite l algoritmo del banchiere) dello stallo sono presenti i processi A, B, C, D, E che utilizzano risorse dei tipi R1, R2, R3, R4. Al tempo T il sistema ha raggiunto lo stato mostrato nelle tabelle seguenti (che è uno stato sicuro). A 1 1 1 A 0 1 3 1 4 5 6 5 B 2 1 B 0 2 2 2 C 1 1 1 C 0 0 2 1 Disponibilità D 1 1 1 D 0 0 1 2 0 1 2 2 E 1 2 E 1 2 0 3 Si considerino i seguenti casi (alternativi): 1. Al tempo T il processo C richiede 2 risorse di tipo R3. Dire se lo stato risultante è sicuro e quale sarà lo stato del processo C in seguito a tale richiesta. 2. Al tempo T il processo A richiede 2 risorse di tipo R3. Dire se lo stato risultante è sicuro e quale sarà lo stato del processo A in seguito a tale richiesta. Stato raggiunto dopo l assegnazione di 2 istanze di R3 al processo C: A A 4 5 6 5 B B C C Disponibilità D E D E La richiesta lascia il sistema in uno stato sicuro? Può essere accettata?... Se la richiesta non viene accettata in quale stato va il processo C? Stato raggiunto dopo l assegnazione di 2 istanze di R3 al processo A: A A 4 5 6 5 B B C C Disponibilità D E D E La richiesta lascia il sistema in uno stato sicuro? Può essere accettata?... Se la richiesta non viene accettata in quale stato va il processo A?

1) Stato raggiunto dopo l assegnazione di 2 istanze di R3 al processo C: A 1 1 1 A 0 1 3 1 4 5 6 5 B 2 1 B 0 2 2 2 C 1 3 1 C 0 0 0 1 Disponibilità D 1 1 1 D 0 0 1 2 0 1 0 2 E 0 1 2 0 E 1 2 0 3 Il processo C può terminare, il vettore disponibilità diventa: 0,2,3,3 Il processo D può terminare, il vettore disponibilità diventa: 1,3,4,3 Il processo B può terminare, il vettore disponibilità diventa: 3,3,4,4 Il processo E può terminare, il vettore disponibilità diventa: 3,4,6,4 Il processo A può terminare, il vettore disponibilità diventa: 4,5,6,5 Quindi lo stato è sicuro e la richiesta di assegnazione di risorse è accolta. Perciò il processo C resta in stato ESECUZIONE. 1) Stato raggiunto dopo l assegnazione di 2 istanze di R3 al processo A: A 1 1 2 1 A 0 1 1 1 5 4 6 5 B 2 1 B 0 2 2 2 C 1 1 1 C 0 0 2 1 Disponibilità D 1 1 1 D 0 0 1 2 0 1 0 2 E 1 2 E 1 2 0 3 Nessun processo ha esigenza attuale minore della disponibilità Quindi lo stato risultante non è sicuro e la richiesta di assegnazione di risorse non può essere accolta. Perciò il processo A resta in stato ATTESA. Esercizio 6 (3 punti) In un sistema con risorse R1, R2, R3, R4, R5 e R6, sono presenti i processi P1, P2, P3 e P4 che inizialmente non possiedono risorse e successivamente avanzano senza interagire reciprocamente, alternandosi nello stato di esecuzione con una sequenza decisa arbitrariamente dallo scheduler. Nel corso della propria esecuzione, ciascun processo esegue una propria sequenza individuale di richieste, che si intercala con quelle degli altri processi dando luogo a una sequenza globale determinata dalle arbitrarie decisioni dello scheduler. Dopo aver ottenuto e utilizzato le risorse che richiede, ogni processo termina rilasciando tutte le risorse ottenute. Si consideri le sequenze individuali di richieste sotto riportate Processo Prima Richiesta Seconda Richiesta Terza Richiesta Quarta Richiesta Terminazione P1 R4 R3 R5 R6 Rilascia tutto P2 R2 R1 R4 R5 Rilascia tutto P3 R1 R3 R4 R6 Rilascia tutto P4 R1 R4 R5 R6 Rilascia tutto Può verificarsi stallo? Motivare la risposta e in caso affermativo riportare una sequenza globale che conduce allo stallo. Lo stallo è possibile [SI/NO]? Motivazione:

Lo stallo sarebbe evitato se ogni processo, in base a un opportuno ordinamento delle risorse, effettuasse le proprie richieste in ordine strettamente crescente. Osservando i processi P2, P3 e P4 si deduce un ordinamento R2 R1 R3 R4 R5 R6. Questo ordinamento non è però rispettato dal processo P1 che acquisisce prima R1 e poi R2. Quindi lo stallo e` possibile. Una sequenza globale che conduce a uno stallo e` la seguente: 1. P1 richiede e ottiene R4 2. P2 richiede e ottiene R2, R1 3. P2 richiede R4 e si blocca 4. P3 richiede e ottiene R1, R3 5. P3 richiede R4 e si blocca 6. P1 richiede R3 e si blocca 7. P1, P2 e P3 sono in stallo Quindi lo stallo è possibile. Esercizio 7 (3 punti) Dire quali delle seguenti operazioni sono permesse quando il processore opera in stato utente: Operazione: Modificare il vettore di interruzione Salvare i registri del processore sullo stack Abilitare le interruzioni Riattivare un thread sospeso su una variabile di condizione Eseguire l istruzione IRET Eseguire l istruzione SVC Eseguire l handler di una upcall Modificare il program counter Eseguibili dai processi in stato utente Operazione: Modificare il vettore di interruzione Salvare i registri del processore sullo stack Abilitare le interruzioni Riattivare un thread sospeso su una variabile di condizione Eseguire l istruzione IRET Eseguire l istruzione SVC Eseguire l handler di una upcall Modificare il program counter Eseguibili dai processi in stato utente X X X X