From 32e08eb5052ea4c966028947c947181eb2d60d33 Mon Sep 17 00:00:00 2001 From: gp Date: Sat, 20 Jan 2024 17:23:29 +0100 Subject: [PATCH 1/7] =?UTF-8?q?Marcato=20come=20UNSAFE=20la=20domanda=202?= =?UTF-8?q?=20e=20cambiato=20risposta.=20La=20disabilitazione=20delle=20in?= =?UTF-8?q?terruzioni=20non=20impedisce=20la=20creazione=20di=20nuove=20in?= =?UTF-8?q?terruzioni,=20ma=20semplicamente=20impedisce=20che=20esse=20ven?= =?UTF-8?q?gano=20gestite.=20Quindi=20e'=20falso=20dire=20che=20la=20disab?= =?UTF-8?q?ilitazione=20delle=20interruzioni=20impedisce=20la=20creazione?= =?UTF-8?q?=20di=20nuove=20interruzioni.=20Quindi=20dovrebbe=20essere=20la?= =?UTF-8?q?=20risposta=201.=20Al=20tempo=20stesso=20non=20e'=20chiaro=20co?= =?UTF-8?q?sa=20voglia=20dire=20che=20La=20disabilitazione=20delle=20inter?= =?UTF-8?q?ruzioni=20non=20funziona=20su=20sistemi=20con=20pi=C3=B9=20proc?= =?UTF-8?q?essori=20o=20pi=C3=B9=20core.=20Volendo,=20su=20ogni=20processo?= =?UTF-8?q?re,=20si=20possono=20disabilitare=20le=20interruzioni,=20e=20qu?= =?UTF-8?q?indi=20dire=20che=20'La=20disabilitazione=20delle=20interruzion?= =?UTF-8?q?i=20non=20funziona=20su=20sistemi=20con=20pi=C3=B9=20processori?= =?UTF-8?q?=20o=20pi=C3=B9=20core'=20e'=20falso.=20Forse=20intendeva=20dir?= =?UTF-8?q?e=20che=20La=20disabilitazione=20delle=20interruzioni=20non=20f?= =?UTF-8?q?unziona=20su=20sistemi=20con=20pi=C3=B9=20processori=20o=20pi?= =?UTF-8?q?=C3=B9=20core=20per=20garantire=20la=20mutua=20esclusione....?= =?UTF-8?q?=20In=20questo=20caso=20sarebbe=20vera.=20Quello=20che=20pero'?= =?UTF-8?q?=20e'=20certo=20e'=20che=20la=201=20e'=20falsa.=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20Cambiato=20risposta=20domanda=205.=20Dire?= =?UTF-8?q?=20che=20'Il=20translation=20lookaside=20buffer=20permette=20di?= =?UTF-8?q?=20accedere=20direttamente=20al=20contenuto=20degli=20indirizzi?= =?UTF-8?q?=20di=20memoria=20virtuali=20usati=20pi=C3=B9=20di=20recente'?= =?UTF-8?q?=20=20e'=20falso=20dato=20che=20gli=20unici=20dati=20presenti?= =?UTF-8?q?=20nel=20TLB=20sono=20delle=20associazioni=20(page=5Fnumber:=20?= =?UTF-8?q?frame=5Fnumber)=20e=20non=20c'e'=20assolutamente=20nulla=20rela?= =?UTF-8?q?tivo=20al=20contenuto=20dei=20frame.=20Viceversa=20dire=20che?= =?UTF-8?q?=20'Il=20translation=20lookaside=20buffer=20=C3=A8=20una=20part?= =?UTF-8?q?icolare=20cache,=20ma=20non=20=C3=A8=20completamente=20traspare?= =?UTF-8?q?nte=20al=20sistema=20operativo'=20e'=20vero=20visto=20che=20ad?= =?UTF-8?q?=20ogni=20process=20switch=20ne=20va=20fatto=20il=20flush=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20Aggiunto=20parte=20mancante=20del?= =?UTF-8?q?la=20domanda=2016=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20Aggiunto?= =?UTF-8?q?=20commento=20alla=20domanda=2020=20(lo=20posso=20anche=20rimuo?= =?UTF-8?q?vere).=20Ma=20qualora=20avessimo=20due=20processi=20A=20e=20B?= =?UTF-8?q?=20che=20si=20scambiano=20messaggi=20e=20due=20altri=20processi?= =?UTF-8?q?=20C=20e=20D=20che=20si=20scambiano=20messaggi=20e=20e'=20assur?= =?UTF-8?q?do=20pensare=20che=20se=20A=20esegue=20un=20receive=20bloccante?= =?UTF-8?q?=20anche=20le=20receive=20di=20C=20si=20blocchino.=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20Commento=20sulla=20domanda=2022.=20E'?= =?UTF-8?q?=20vero=20che=20'il=20data=20rate=20confronta=20le=20velocit?= =?UTF-8?q?=C3=A0=20di=202=20diversi=20dispositivi=20di=20I/O'.=20Si=20ved?= =?UTF-8?q?a=20vd.=20gruppo=205=20di=20slide,=20slide=2011.=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20Aggiunto=20commento=20alla=20domanda=2024.?= =?UTF-8?q?=20Nel=20caso=20di=20un=20mode=20switch=20non=20c'e'=20alcun=20?= =?UTF-8?q?motivo=20per=20cui=20lo=20hardware=20context=20debba=20essere?= =?UTF-8?q?=20salvato=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20Cambiato=20risp?= =?UTF-8?q?osta=2025.=20In=20slide=2067=20del=205=20blocco=20di=20slide,?= =?UTF-8?q?=20e'=20scritto=20esplicitamente=20che=20'si=20passa=20dalla=20?= =?UTF-8?q?parte=20nuova=20alla=20vecchia=20per=20scorrimento'=20ma=20'qua?= =?UTF-8?q?ndo=20un=20blocco=20viene=20referenziato,=20lo=20si=20sposta=20?= =?UTF-8?q?all=E2=80=99inizio=20dello=20stack'.=20Quindi,=20a=20"scendere"?= =?UTF-8?q?=20effettivamente=20si=20procede=20per=20scorrimento,=20ma=20a?= =?UTF-8?q?=20salire=20no.=20Al=20contrario,=20la=20quattro=20('L'algoritm?= =?UTF-8?q?o=20di=20sostituzione=20basato=20su=20frequenza=20a=202=20segme?= =?UTF-8?q?nti=20della=20page=20cache=20pu=C3=B2=20non=20avere=20buone=20p?= =?UTF-8?q?erformance=20quando=20un=20settore=20viene=20acceduto=20spesso,?= =?UTF-8?q?=20ma=20tra=20il=20primo=20accesso=20e=20quelli=20successivi=20?= =?UTF-8?q?ci=20sono=20N=20accessi=20ad=20altri=20settori,=20diversi=20tra?= =?UTF-8?q?=20loro,=20con=20N=20pari=20alla=20dimensione=20del=20segmento?= =?UTF-8?q?=20nuovo')=20e'=20vera.=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20Agg?= =?UTF-8?q?iunto=20UNSAFE=20alla=2064.=20Qualora=20lo=20scheduler=20esegua?= =?UTF-8?q?=20per=20primo=20il=20processo=20numero=200,=20e=20qualora=20es?= =?UTF-8?q?so=20superi=20il=20while=20piu'=20esterno=20prima=20che=20p1=20?= =?UTF-8?q?venga=20eseguito,=20ecco=20che=20p0=20e'=20entrato=20nella=20se?= =?UTF-8?q?zione=20critica.=20Quindi=20e'=20falso=20dire=20che=20'Nell'alg?= =?UTF-8?q?oritmo=20di=20Dekker,=20se=20la=20variabile=20turn=20=C3=A8=20i?= =?UTF-8?q?nizializzata=20ad=201,=20allora=20il=20processo=201=20sar=C3=A0?= =?UTF-8?q?=20sicuramente=20il=20primo=20ad=20entrare=20nella=20sezione=20?= =?UTF-8?q?critica=20nella=20prima=20iterazione'.=20Purtroppo=20anche=20tu?= =?UTF-8?q?tte=20le=20altre=20risposte=20sono=20sbagliate=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20Aggiunto=20UNSAFE=20alla=20106.=20In=20gen?= =?UTF-8?q?erale,=20su=20una=20architettura=20CISC=20(ad=20esempio=20x86)?= =?UTF-8?q?=20non=20e'=20vero=20che=20gli=20opeandi=20devono=20essere=20ca?= =?UTF-8?q?riacati=20nei=20registri.=20Ad=20esempio=20addq=20(%rax),=20%rb?= =?UTF-8?q?x=20aggiunge=20un=20valore=20(il=20quale=20si=20trova=20in=20me?= =?UTF-8?q?moria)=20puntato=20dal=20registro=20%rax=20al=20contenuto=20del?= =?UTF-8?q?=20registro=20%rbx.=20Qualora=20invece=20ci=20restringessimo=20?= =?UTF-8?q?ad=20una=20architettura=20RISC,=20quanto=20affermato=20nella=20?= =?UTF-8?q?domanda=20sarebbe=20vero.=20Va=20quindi=20cambiata=20la=20doman?= =?UTF-8?q?da=20essendo=20piu'=20espliciti=20su=20CISC=20e=20RISC=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Data/Questions/so1.txt | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/Data/Questions/so1.txt b/Data/Questions/so1.txt index 8c1f3a3..f094051 100644 --- a/Data/Questions/so1.txt +++ b/Data/Questions/so1.txt @@ -1,14 +1,14 @@ -1) Quale delle seguenti affermazioni sulle directory di un file system è vera? +1) Quale delle seguenti affermazioni sulle directory di un file system è vera? > È sempre necessario identificare un file di un file system fornendone il path assoluto > È sempre necessario identificare un file di un file system fornendone il path relativo alla directory corrente > È sempre possibile dare lo stesso nome a file diversi v Nessuna delle altre opzioni è vera -2) Quale delle seguenti affermazioni sulla concorrenza tra processi o thread è falsa? -> La disabilitazione delle interruzioni impedisce la creazione di nuove interruzioni +2) UNSAFE Quale delle seguenti affermazioni sulla concorrenza tra processi o thread è falsa? +v La disabilitazione delle interruzioni impedisce la creazione di nuove interruzioni > L'abuso della disabilitazione delle interruzioni fa diminuire la multiprogrammazione, a parità di numero di processi > Se un processo può disabilitare le interruzioni tramite un'istruzione macchina dedicata, allora può far diminuire l'uso del processore -v La disabilitazione delle interruzioni non funziona su sistemi con più processori o più core +> La disabilitazione delle interruzioni non funziona su sistemi con più processori o più core 3) Assumendo un sistema monoprocessore, quale delle seguenti affermazioni è vera? > Lo scheduler ha, tra i suoi obiettivi, quello di minimizzare il numero di processi che rispettano la propria deadline @@ -24,8 +24,8 @@ v Ha anche uno stato Zombie: serve per tutti i processi che sono terminati 5) Quale delle seguenti affermazioni sulla memoria virtuale con paginazione è falsa? > Quando un indirizzo non viene trovato nel translation lookaside buffer, è necessario consultare la normale tabella delle pagine -v Il translation lookaside buffer è una particolare cache, ma non è completamente trasparente al sistema operativo -> Il translation lookaside buffer permette di accedere direttamente al contenuto degli indirizzi di memoria virtuali usati più di recente +> Il translation lookaside buffer è una particolare cache, ma non è completamente trasparente al sistema operativo +v Il translation lookaside buffer permette di accedere direttamente al contenuto degli indirizzi di memoria virtuali usati più di recente > In assenza di translation lookaside buffer, l'accesso ad un indirizzo virtuale può richiedere almeno 2 accessi in memoria 6) Quale delle seguenti affermazioni sugli obiettivi di sicurezza di un sistema operativo è vera? @@ -80,7 +80,7 @@ v I processi marcati sono quelli che non sono coinvolti in un deadlock 16) Assumendo un sistema monoprocessore, quale delle seguenti affermazioni sul long-term scheduler è falsa? v Viene chiamato in causa esclusivamente quando viene creato un nuovo processo > Avendo le necessarie informazioni, una tipica strategia è mantenere una giusta proporzione, stabilita a priori, tra processi I/O-bound e CPU-bound -> Avendo le necessarie informazioni, una tipica strategia è ammettere in memoria principale i processi che richiedono dispositivi di I/O diversi da [...] +> Avendo le necessarie informazioni, una tipica strategia è ammettere in memoria principale i processi che richiedono dispositivi di I/O diversi da quelli richiesti dai processi già attivi > Decide quali processi, tra quelli appena creati, possono essere ammessi in memoria principale per l'esecuzione 17) Quale delle seguenti affermazioni sulla memoria virtuale con paginazione è vera? @@ -101,7 +101,7 @@ v Non deve essere fatta alcuna assunzione sulla velocità di esecuzione dei proc v Nessuna delle altre opzioni è corretta > La paginazione con memoria virtuale funziona bene nonostante il principio di località -20) UNSAFE Quale delle seguenti affermazioni sullo scambio messaggi per la gestione della concorrenza è vera? +20) UNSAFE (sbagliata secondo Gabriele Pelissetto) Quale delle seguenti affermazioni sullo scambio messaggi per la gestione della concorrenza è vera? > Nessuna delle altre opzioni è vera > L'implementazione delle primitive per lo scambio messaggi non è garantita atomica dal sistema operativo v Se un processo chiama receive, finché il messaggio non viene ricevuto, tutti gli altri processi che proveranno a chiamare receive verranno bloccati @@ -113,7 +113,7 @@ v Se un processo chiama receive, finché il messaggio non viene ricevuto, tutti v I file system, che adottano il metodo journaling, mantengono un log per le operazioni di sola scrittura da effettuare, realizzandole in seguito > Un volume coincide sempre con un disco, quindi se un computer ha 2 dischi avrà 2 volumi -22) Quale delle seguenti affermazioni sui dispositivi di I/O è vera? +22) (UNSAFE secondo Gabriele Pelissetto vd. gruppo 5 di slide, slide 11) Quale delle seguenti affermazioni sui dispositivi di I/O è vera? v Nessuna delle altre opzioni è corretta > Il data rate confronta le velocità di 2 diversi dispositivi di I/O > Ciascun dispositivo di I/O può essere usato solo da un ben determinato tipo di applicazioni @@ -125,7 +125,7 @@ v Se viene usata la lista di blocchi liberi, c'è un overhead di spazio, contrar > Se ci sono blocchi da 1kB, e il disco contiene 1TB, l'occupazione dovuta alla lista di blocchi liberi è dell'1% > Se viene usata la lista di blocchi liberi, una parte viene memorizzata su disco ed una parte in memoria principale -24) UNSAFE Quale delle seguenti azioni va effettuata sia per un process switch che per un mode switch, assumendo di essere in un SO nel quale le funzioni di sistema sono eseguite all'interno dei processi utente? +24) UNSAFE (sbagliata secondo Gabriele Pelissetto) Quale delle seguenti azioni va effettuata sia per un process switch che per un mode switch, assumendo di essere in un SO nel quale le funzioni di sistema sono eseguite all'interno dei processi utente? v Salvataggio del contesto del programma > Aggiornamento delle strutture dati per la gestione della memoria > Spostamento del process control block nella coda appropriata (ready, blocked, ready/suspend) @@ -133,9 +133,9 @@ v Salvataggio del contesto del programma 25) Quale delle seguenti affermazioni è vera? > Nessuna delle altre opzioni è corretta -v Nell'algoritmo di sostituzione basato su frequenza a 2 segmenti della page cache, un blocco passa da un segmento ad un altro esclusivamente per scorrimento +> Nell'algoritmo di sostituzione basato su frequenza a 2 segmenti della page cache, un blocco passa da un segmento ad un altro esclusivamente per scorrimento > L'algoritmo di LFU della page cache ha buone performance quando un settore viene acceduto molto spesso in poco tempo, per poi non essere più usato -> L'algoritmo di sostituzione basato su frequenza a 2 segmenti della page cache può non avere buone performance quando un settore viene acceduto spesso, ma tra il primo accesso e quelli successivi ci sono N accessi ad altri settori, diversi tra loro, con N pari alla dimensione del segmento nuovo +v L'algoritmo di sostituzione basato su frequenza a 2 segmenti della page cache può non avere buone performance quando un settore viene acceduto spesso, ma tra il primo accesso e quelli successivi ci sono N accessi ad altri settori, diversi tra loro, con N pari alla dimensione del segmento nuovo 26) Quale delle seguenti affermazioni sul kernel di un sistema operativo è vera? > È responsabile dell'accensione del computer @@ -359,7 +359,7 @@ v Per la terminazione normale di un processo, è tipicamente prevista un'apposit > Un processo può morire quando si effettua il process spawning > Un processo può essere creato dal modulo di gestione della memoria per gestire la traduzione da indirizzi virtuali a fisici -64) Quale delle seguenti affermazioni sui meccanismi software per la gestione della concorrenza è vera? +64) (UNSAFE le decisioni dello scheduler possono influenzare la risposta) Quale delle seguenti affermazioni sui meccanismi software per la gestione della concorrenza è vera? > Sia l'algoritmo di Dekker che quello di Peterson possono mettere in blocked uno dei 2 processi, quando ciò si rivela necessario > Sia l'algoritmo di Dekker che quello di Peterson non funzionano se l'hardware sottostante riordina gli accessi in memoria > Nell'algoritmo di Peterson, se la variabile turn è inizializzata ad 1, allora il processo 1 sarà sicuramente il primo ad entrare nella sezione critica nella prima iterazione @@ -515,7 +515,7 @@ v La matrice C - A può contenere elementi negativi, ma le matrici C ed A conten > Il throughput è definito come il numero di processi completati per unità di tempo v Il turnaround time è definito, per un dato processo, come il tempo che intercorre tra la sua prima esecuzione sul processore e il suo completamento > Un dispatcher con buone prestazioni sul response time deve tipicamente sia minimizzare il valore medio di sistema del response time, sia massimizzare il numero di utenti con un basso valore per il response time -> Il processor utilization è definito come il rapporto tra il tempo in cui il processore viene usato ed il tempo totoale del sistema +> Il processor utilization è definito come il rapporto tra il tempo in cui il processore viene usato ed il tempo totale del sistema 93) Quale delle seguenti affermazioni sugli i-node di Unix è vera? > Per ogni file-system su disco organizzato con i-node, tutti gli i-node di tutti i file su tale file-system sono memorizzati esclusivamente su disco @@ -547,13 +547,13 @@ v Sia la tabella dei segmenti che quella delle pagine di un processo contengono, > La tabella delle pagine di un processo contiene una pagina speciale dove è memorizzato il process control block del processo stesso > Ogni entry di una tabella delle pagine contiene un numero di pagina ed un offset -99) (risposta corretta secondo @notherealmarco e Simone Sestito, non verificata da nessuna parte) Quale delle seguenti affermazioni sulla memoria virtuale con paginazione è vera? +99) (risposta corretta secondo @notherealmarco, Simone Sestito e Gabriele Pelissetto, non verificata da nessuna parte) Quale delle seguenti affermazioni sulla memoria virtuale con paginazione è vera? v Per avere un overhead accettabile, occorre demandare la traduzione degli indirizzi all'hardware, mentre al software resta da gestire prelievo, posizionamento e sostituzione delle pagine > Per avere un overhead accettabile, occorre demandare la traduzione degli indirizzi e la politica di sostituzione delle pagine all'hardware, mentre al software resta da gestire prelievo e posizionamento delle pagine > Per avere un overhead accettabile, occorre demandare all'hardware la traduzione degli indirizzi ed il prelievo, il posizionamento e la sostituzione delle pagine > Per avere un overhead accettabile, occorre demandare al software anche la traduzione degli indirizzi -96) (risposta corretta secondo @notherealmarco, non verificata da nessuna parte) Riguardo alle differenze tra sistemi batch e sistemi time sharing (degli anni 60/70), quale delle seguenti affermazioni è falsa? +96) (risposta corretta secondo @notherealmarco e Gabriele Pelissetto, non verificata da nessuna parte) Riguardo alle differenze tra sistemi batch e sistemi time sharing (degli anni 60/70), quale delle seguenti affermazioni è falsa? v I sistemi time-sharing puntavano a minimizzare l'uso del processore > Nei sistemi time-sharing, le direttive al sistema operativo arrivavano dai comandi digitati su terminali > Nei sistemi batch, le direttive al sistema operativo arrivavano dai comandi del job control language, che erano non-interattivi @@ -595,7 +595,7 @@ v il kernel è costituito da vari moduli che non possono essere caricati nel sis > il kernel è la prima parte del sistema operativo a essere caricata in memoria durante l'avvio > Il kernel è il programma che costituisce il nucleo centrale del sistema operativo. -106) In generale, la CPU puo’ eseguire un'istruzione soltanto quando gli operandi si trovano: +106) (UNSAFE secondo Gabriele Pelissetto, CISC o RISC?) In generale, la CPU puo’ eseguire un'istruzione soltanto quando gli operandi si trovano: > In RAM, o in un livello qualsiasi della cache o nella memoria secondaria o nei registri CPU > In RAM o in un livello qualsiasi della cache o nei registri CPU > Nella cache di livello 1 (L1 cache) o nei registri CPU @@ -695,4 +695,4 @@ v NTFS può, ove possibile, includere direttamente i dati di un file nella maste > Nei sistemi con hardware dedicato per la rilocazione, il base register (registro base) viene impostato una sola volta, quando il programma viene caricato in memoria per la prima volta > In un sistema con rilocazione a run time, i sistemi di protezione che verificano che un processo non vada ad accedere alla memoria di un'altro processo possono essere eseguiti a tempo di compilazione, prima di eseguire il programma > In un sistema a rilocazione con indirizzi logici, non è necessario avere hardware dedicato per effettuare la rilocazione -v In un sistema a rilocazione con indirizzi assoluti, se si conosce l'indirizzo di memoria dove verrà caricato il programma, il compilatore può inserire direttamente gli indirizzi di memoria corretti nel codice oggetto (programma compilato) \ No newline at end of file +v In un sistema a rilocazione con indirizzi assoluti, se si conosce l'indirizzo di memoria dove verrà caricato il programma, il compilatore può inserire direttamente gli indirizzi di memoria corretti nel codice oggetto (programma compilato) From 3fd89253b2ff1ed4bf0d5a023694414c681190c5 Mon Sep 17 00:00:00 2001 From: gp Date: Sat, 20 Jan 2024 18:52:40 +0100 Subject: [PATCH 2/7] fixups after questions review --- Data/Questions/so1.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Data/Questions/so1.txt b/Data/Questions/so1.txt index f094051..8b9d45b 100644 --- a/Data/Questions/so1.txt +++ b/Data/Questions/so1.txt @@ -125,7 +125,7 @@ v Se viene usata la lista di blocchi liberi, c'è un overhead di spazio, contrar > Se ci sono blocchi da 1kB, e il disco contiene 1TB, l'occupazione dovuta alla lista di blocchi liberi è dell'1% > Se viene usata la lista di blocchi liberi, una parte viene memorizzata su disco ed una parte in memoria principale -24) UNSAFE (sbagliata secondo Gabriele Pelissetto) Quale delle seguenti azioni va effettuata sia per un process switch che per un mode switch, assumendo di essere in un SO nel quale le funzioni di sistema sono eseguite all'interno dei processi utente? +24) UNSAFE Quale delle seguenti azioni va effettuata sia per un process switch che per un mode switch, assumendo di essere in un SO nel quale le funzioni di sistema sono eseguite all'interno dei processi utente? v Salvataggio del contesto del programma > Aggiornamento delle strutture dati per la gestione della memoria > Spostamento del process control block nella coda appropriata (ready, blocked, ready/suspend) @@ -595,7 +595,7 @@ v il kernel è costituito da vari moduli che non possono essere caricati nel sis > il kernel è la prima parte del sistema operativo a essere caricata in memoria durante l'avvio > Il kernel è il programma che costituisce il nucleo centrale del sistema operativo. -106) (UNSAFE secondo Gabriele Pelissetto, CISC o RISC?) In generale, la CPU puo’ eseguire un'istruzione soltanto quando gli operandi si trovano: +106) UNSAFE In generale, la CPU puo’ eseguire un'istruzione soltanto quando gli operandi si trovano: > In RAM, o in un livello qualsiasi della cache o nella memoria secondaria o nei registri CPU > In RAM o in un livello qualsiasi della cache o nei registri CPU > Nella cache di livello 1 (L1 cache) o nei registri CPU From f820abf32bfeaf3402bdad5a9ec83e9a15e29dbf Mon Sep 17 00:00:00 2001 From: LucaSforza Date: Sun, 21 Jan 2024 12:33:13 +0100 Subject: [PATCH 3/7] aggiunta nuove domande prese da esami precedenti trovati su telegram --- Data/Questions/so1.txt | 72 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/Data/Questions/so1.txt b/Data/Questions/so1.txt index 8b9d45b..4579c28 100644 --- a/Data/Questions/so1.txt +++ b/Data/Questions/so1.txt @@ -696,3 +696,75 @@ v NTFS può, ove possibile, includere direttamente i dati di un file nella maste > In un sistema con rilocazione a run time, i sistemi di protezione che verificano che un processo non vada ad accedere alla memoria di un'altro processo possono essere eseguiti a tempo di compilazione, prima di eseguire il programma > In un sistema a rilocazione con indirizzi logici, non è necessario avere hardware dedicato per effettuare la rilocazione v In un sistema a rilocazione con indirizzi assoluti, se si conosce l'indirizzo di memoria dove verrà caricato il programma, il compilatore può inserire direttamente gli indirizzi di memoria corretti nel codice oggetto (programma compilato) + +123) Quale delle seguenti affermazioni è vera riguardo il concetto di Thrashing? +> Il SO impiega la maggior parte del suo tempo a swappare pezzi di processi, anziché ad eseguire istruzioni +> provoca il deterioramento o il crollo delle prestazioni del computer +> quasi ogni richiesta di pagine da luogo ad una page fault +v Tutte le opzioni sono vere + +124) Il sistema di partizionamento fisso per la memoria principale: +> Permette di avere partizioni di lunghezza diversa e di modificarle a runtime +> Nessuna delle opzioni è vera +> Consente una efficiente della memoria se ci sono molti processi di piccole dimensioni +v Impone un numero massimo di processi che possono essere in memoria principale + +125) Quale delle seguenti non è un vantaggio dell’attacco dizionario? +> Semplice da effettuare +> Versatilità +v Velocità di computazione in real time degli hash +> Disponibilità di molti tool per automatizzazione + +126) Nello scheduler a breve ed a lungo termine la distizione principale è: +> Il tipo di processi che gestiscono +v La frequenza di esecuzione +> La lunghezza delle loro code +> Nessuna delle opzioni è corretta + +127) Quale dei seguenti NON è un vantaggio della multiprogrammazione? +> Riduzione dei tempi di risposta +> Possibilità di assegnare priorità ai lavori +> Aumento del throughput +v Riduzione dell’overhead del sistema operativo + +128) UNSAFE ___ fornisce l’indirizzo della prossima istruzione che deve essere eseguita dal processo corrente? +> Lo stack del processo +> Il bus di sistema +> Nessuno +v Program Counter + +129) Quale dei seguenti NON è un valido schema di prevenzione del deadlock? +> Rilasciare tutte le risorse prima di richiederne una nuova +v Non chiedere mai una risorsa dopo averne rilasciate altre +> Si definisce un ordinamento crescente delle risorse, una risorsa viene data solo se esegue quelle che il processo già detiene +> Richiedere e allocare tutte le risorse necessarie prima dell’esecuzione + +130) UNSAFE Quale dei seguenti NON è vero riguardo l’algoritmo di Dekker per gestire la concorrenza? +v Non usa busy waiting +> Garantisce la non-starvation +> Tutte le opzioni elencate +> Garantisce il non-deadlock + +131) Quale delle seguenti non è una tabella di controllo del sistema operativo? +v Tabella dei processi sospesi +> Tabelle di memoria +> Tabelle di controllo di accesso +> Tabelle di I/O + +132) In un sistema con modello di interruzioni (interrupt) annidate, se un interrupt (I-2) è ricevuto durante la gestione di un altro interrupt(I-1) +v La cpu sospende l’esecuzione del codice corrente, ed avvia l’handler del nuovo interrupt ricevuto +> La cpu completa l’esecuzione del codice corrente, e successivamente avvia l’handler del nuovo interrupt ricevuto +> La cpu gestisce entrambi gli handler in parallelo +> La cpu termina (aborts,kills) l’esecuzione del codice corrente, ed avvia l’handler del nuovo interrupt ricevuto + +133) Il numero di processi completati per unità di tempo è chiamato _____ +> Produzione +v Throughput +> Capacità +> Nessuno + +134) Quale dei seguenti sono obiettivi per un file Management System? +v Tutte le opzioni elencate +> Fornire supporto per l’I/O da più utenti in contemporanea +> Minimizzare i dati persi o distrutti +> Fornire un insieme di interfacce standard per i processi utente \ No newline at end of file From d35b46206a60a46c1a69682340be2908982bf311 Mon Sep 17 00:00:00 2001 From: LucaSforza Date: Sun, 21 Jan 2024 12:47:36 +0100 Subject: [PATCH 4/7] aggiunta un ultima domanda che mi era sfuggita --- Data/Questions/so1.txt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Data/Questions/so1.txt b/Data/Questions/so1.txt index 4579c28..964f631 100644 --- a/Data/Questions/so1.txt +++ b/Data/Questions/so1.txt @@ -727,7 +727,7 @@ v La frequenza di esecuzione > Aumento del throughput v Riduzione dell’overhead del sistema operativo -128) UNSAFE ___ fornisce l’indirizzo della prossima istruzione che deve essere eseguita dal processo corrente? +128) ___> fornisce l’indirizzo della prossima istruzione che deve essere eseguita dal processo corrente? > Lo stack del processo > Il bus di sistema > Nessuno @@ -767,4 +767,11 @@ v Throughput v Tutte le opzioni elencate > Fornire supporto per l’I/O da più utenti in contemporanea > Minimizzare i dati persi o distrutti -> Fornire un insieme di interfacce standard per i processi utente \ No newline at end of file +> Fornire un insieme di interfacce standard per i processi utente + +135) In un sistema operativo con allocazione dei file indicizzata, quale delle seguenti opzioni è vera: +> La tabella di allocazione contiene soltanto l'indirizzo di un blocco, e questo blocco contiene sempre tutte le entry per ogni porzione allocata al file +> La tabella di allocazione contiene l'indirizzo del primo blocco del file, e ciascun blocco contiene l'indirizzo del prossimo blocco del file +v La tabella di allocazione contiene soltanto l'indirizzo di un blocco, e questo blocco contiene le entry delle porzioni di file allocate oppure l'indirizzo di altri blocchi usati a loro volta per indicizzare le porzioni di file allocate +> La tabella di allocazione dei file contiene l'indirizzo di un blocco e la lista dei blocchi del file + From f62b15bca236e777d8b234efd06d646716ff5ba2 Mon Sep 17 00:00:00 2001 From: Marco Realacci Date: Sun, 21 Jan 2024 14:04:11 +0100 Subject: [PATCH 5/7] Fix bot considering empty lines --- Bot/Modules/OttoLinux/BotGame.cs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/Bot/Modules/OttoLinux/BotGame.cs b/Bot/Modules/OttoLinux/BotGame.cs index 7653553..f1b2fa5 100644 --- a/Bot/Modules/OttoLinux/BotGame.cs +++ b/Bot/Modules/OttoLinux/BotGame.cs @@ -108,6 +108,7 @@ namespace SoUnBot.Modules.OttoLinux //var number = int.Parse(new StreamReader(w.GetResponse().GetResponseStream()).ReadToEnd()); var number = _rng.Next(1, _questions.Count - 1); + while (_questions[number].Quest == "") number = _rng.Next(1, _questions.Count - 1); if (!_playedQuestions.ContainsKey(player)) _playedQuestions.Add(player, new List()); @@ -336,8 +337,22 @@ namespace SoUnBot.Modules.OttoLinux { var qst = PickRandomQuestion(uid, botClient); - if (qst.Quest.StartsWith("img=")) Console.WriteLine("Sto inviando la domanda " + qst.Quest.Substring(qst.Quest.IndexOf("\n"), 7) + " a " + uid); - else Console.WriteLine("Sto inviando la domanda " + qst.Quest.Substring(0, 7) + " a " + uid); + try + { + if (qst.Quest.StartsWith("img=")) + Console.WriteLine("Sto inviando la domanda " + qst.Quest.Substring(qst.Quest.IndexOf("\n"), 7) + + " a " + uid); + else Console.WriteLine("Sto inviando la domanda " + qst.Quest.Substring(0, 7) + " a " + uid); + + } + catch(Exception e) + { + botClient.SendTextMessageAsync( + chatId: _accessManager.AdminId, + text: $"Question is malformed -> {qst.Quest} \n" + e.Message + ); + return; + } while (qst.Answers.Count == 0) { From 53857456ed6045888af67d96446ac08bc02709bb Mon Sep 17 00:00:00 2001 From: Marco Realacci Date: Sun, 21 Jan 2024 14:05:16 +0100 Subject: [PATCH 6/7] Fix so1.txt ending with two empty lines --- Data/Questions/so1.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Data/Questions/so1.txt b/Data/Questions/so1.txt index 964f631..2c14980 100644 --- a/Data/Questions/so1.txt +++ b/Data/Questions/so1.txt @@ -773,5 +773,4 @@ v Tutte le opzioni elencate > La tabella di allocazione contiene soltanto l'indirizzo di un blocco, e questo blocco contiene sempre tutte le entry per ogni porzione allocata al file > La tabella di allocazione contiene l'indirizzo del primo blocco del file, e ciascun blocco contiene l'indirizzo del prossimo blocco del file v La tabella di allocazione contiene soltanto l'indirizzo di un blocco, e questo blocco contiene le entry delle porzioni di file allocate oppure l'indirizzo di altri blocchi usati a loro volta per indicizzare le porzioni di file allocate -> La tabella di allocazione dei file contiene l'indirizzo di un blocco e la lista dei blocchi del file - +> La tabella di allocazione dei file contiene l'indirizzo di un blocco e la lista dei blocchi del file \ No newline at end of file From 07daa07cf29584a04d0b627eb553e04e020c44f7 Mon Sep 17 00:00:00 2001 From: Marco Realacci Date: Sun, 21 Jan 2024 14:12:10 +0100 Subject: [PATCH 7/7] Move SendToEveryone on its own Thread --- Bot/Telegram/TelegramBot.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Bot/Telegram/TelegramBot.cs b/Bot/Telegram/TelegramBot.cs index ef049da..7921481 100644 --- a/Bot/Telegram/TelegramBot.cs +++ b/Bot/Telegram/TelegramBot.cs @@ -107,7 +107,11 @@ namespace SoUnBot.Telegram chatId: chatId, text: "Invio annuncio in corso...", cancellationToken: cancellationToken); - SendToEveryone(botClient, chatId, update.Message.Text.Substring(6)); + new Thread(() => + { + Thread.CurrentThread.IsBackground = true; + SendToEveryone(botClient, chatId, update.Message.Text.Substring(6)); + }).Start(); return; }