Pages: 1 ... 3 4 [5] 6 7 ... 24   Go Down
Print
Author Topic: AA 2010-2011: Quesiti a risposta aperta  (Read 82182 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Giuseppe Scollo
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 1.500


« Reply #60 on: 03-06-2011, 20:07:26 »

E allora quali sono questi problemi infatti a questa domanda so rispondere!!
Nell'ipotesi che le sia scivolato un "non", ecco una possibile risposta dettagliata.

Il Pentium 4 ha 33 linee di indirizzo, ma sul PCI considerato in ipotesi ce ne sono solo 32. Inoltre, per effettuare un trasferimento di dati in un ciclo di bus occorrerebbe indirizzare parole da 32 bit, dunque occorrerebbero 34 linee di indirizzo per poter indirizzare una memoria da 2^36 byte, cioè 2^34 parole da 4 byte, in un solo ciclo. In alternativa, si può pensare di trasferire parole da 64 bit in due cicli (32 bit nel primo, 32 bit nel secondo), ma perché i 32 bit di indirizzo siano sufficienti occorrerebbe utilizzare la memoria da 64 GB in un modo molto preciso, ad es. suddividere ciascuna "parola" da 8 byte in due semiparole da 4 byte ciascuna, collocate a 32 GB (cioè 2^32 semiparole) di distanza l'una dall'altra, in modo che lo stesso indirizzo da 32 bit sia usato nella metà bassa nel primo ciclo e nella metà alta nel secondo ciclo (in altro parole, il bit mancante nello spazio del bus viene trasferito nel tempo: primo ciclo, secondo ciclo). Per realizzare un meccanismo simile occorrerebbe modificare la microarchitettura del Pentium 4 stesso, inclusa quella del controllore della memoria: in altre parole, riprogettare il processore.
« Last Edit: 03-06-2011, 20:25:53 by Giuseppe Scollo » Logged
R3m
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 486



« Reply #61 on: 04-06-2011, 14:13:43 »

Quesito 17 : Perché molti sistemi operativi richiedono l'apertura preventiva di un file con una chiamata di sistema open, prima di qualsiasi altra operazione di I/O sul file (max 5 righe)?

Probabilmente è un metodo per prevenire (ed eventualmente gestire) eventuali eccezioni (file occupato, ad esempio).

Quesito 18 : In un sistema operativo dove i programmi possano aprire un numero qualsiasi di file, la cui dimensione può crescere nell'esecuzione, i file sono memorizzati in settori contigui? Perché (max 5 righe)?

Non è sempre così, ma può accadere. Tutto stà nel sapere che sistema di allocazione viene usato. E' possibile utilizzare una lista concatenata, e avere quindi file salvati in settori non consecutivi oppure mediante la tabella degli indici, memorizzare file in settori consecutivi (conoscendone l'indirizzo di partenza e l'offset).

Quesito 19 : Se oltre il 90% dei file occupano al più 8 KB ca., mentre gli altri usano oltre il 90% dello spazio disco occupato, che si può dire della dimensione ottimale dei blocchi del disco (max 10 righe)?

Non capisco...

Quesito 20 : Si può tener traccia delle unità di allocazione libere in un disco con una lista delle locazioni libere o con una bitmap dello stato di allocazione. Che pro e contro hanno tali opzioni (max 10 righe)?

La bitmap utilizza una struttura dati di lunghezza fissa, inoltre richiede la sola modifica di un bit per cambiare lo stato di allocazione di un'unità (libera o occupata). Risulta però difficile la ricerca di un blocco di una data lunghezza. La lista invece deve essere implementata utilizzando una struttura di lunghezza variabile, però semplifica la ricerca di uno spazio libero di una data dimensione. Entrambe le implementazioni devono essere aggiornate quando si rimuove/crea un file dal disco.

Quesito 21 : Qual è la causa del problema della corsa critica nella condivisione di un buffer circolare, fra un processo produttore e uno consumatore, basata sui rispettivi indici in e out (max 15 righe)?

Il problema si genera quando, nel lasso di tempo tra la lettura di in e out da parte del consumatore e il suo suspend, il produttore interviene leggendo in = out + 1. Pensando che il consumatore stesse dormendo, gli manda un segnale di resume, che viene perso poichè il consumatore era ancora sveglio.
Questo problema, noto come corsa critica, fà dipendere il successo del metodo dal vincitore della corsa al test in, out dopo l'incremento di out.

Quesito 22 : Descrivere le operazioni sui semafori e i requisiti che la loro definizione impone alla loro implementazione in un sistema operativo (max 15 righe).

Le operazioni sono essenzialmente due, up e down. La funzione up incrementa di 1 il valore del semaforo, e se tale valore era 0 (prima dell'incremento), verifica se un altro processo stava completando una down. Se esiste, la completa e prosegue la propria esecuzione. Se il valore del semaforo è > 0, incrementa semplicemente di 1. La funzione down, se il valore semaforo è 0, fà rimanere in sospeso il processo associato al semaforo finchè non si esegue una up nel semaforo corrispondente. Altrimenti se semaforo è > 0, decrementa di 1 tale valore.

Il sistema operativo deve proibire l'uso di un semaforo da più di un processo per volta, o almeno limitarsi ad interrompere l'esecuzione di tutti i processi affinchè il processo associato a tale chiamata di sistema non porti a compimento l'operazione.
Logged

Ciò che è nostro è stato in campo sudato....ciò che vostro è stato in aula assegnato.
In serie B non sei mai stato perchè la prescrizione t'ha salvato.
m3l0
Matricola
*
Offline Offline

Posts: 74



« Reply #62 on: 04-06-2011, 17:14:59 »

In questa domanda:

La sintassi di MAL definita nel testo permette l'istruzione D=H, con D una variabile, mentre quella proposta nelle note integrative non la permette. Chi ha ragione, e perché (max 5 righe)?

non ho capito qual'è il vantaggio di fare DEST=H 
Logged
Giuseppe Scollo
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 1.500


« Reply #63 on: 05-06-2011, 10:58:26 »

Probabilmente è un metodo per prevenire (ed eventualmente gestire) eventuali eccezioni (file occupato, ad esempio).
No, le eccezioni possono aversi a seguito di qualsiasi istruzione di I/O virtuale sul file. Il punto è che, per poter accedere al file, al sistema operativo occorrono, innanzitutto, un'indicazione di quale file si tratta, ed altre informazioni (locazione del file sul disco o eventuale tabella indice del file, diritti di accesso) che sono presenti nel file su disco, se il file esiste, o che vengono create dal sistema operativo stesso in caso contrario. Tali informazioni saranno utilizzate, ed eventualmente aggiornate, per eseguire le successive istruzioni virtuali di I/O sul file, e mantenute in memoria dal sistema operativo fino alla chiusura del file.
Quote
Non è sempre così, ma può accadere.
davvero?
Quote
Tutto stà nel sapere che sistema di allocazione viene usato. E' possibile utilizzare una lista concatenata, e avere quindi file salvati in settori non consecutivi
questo è il caso negativo, direi ovvio
Quote
oppure mediante la tabella degli indici,
"tabella indice del file" (la traduzione fornita nel testo va corretta, v. la versione più recente delle correzioni al testo, p. 442)
Quote
memorizzare file in settori consecutivi
no, la tabella indice del file serve quando la memorizzazione di un file non è contigua, altrimenti basta la sua locazione iniziale per potere calcolare la locazione del disco di qualsiasi suo byte, blocco o record logico. Il problema è che, se la memorizzazione è contigua, occorrerebbe conoscere in anticipo il numero massimo di settori che il file potrà occupare (e avere spazio libero contiguo sul disco in quantità sufficiente ad allocarli al file già alla sua prima apertura).
Quote
Quesito 19 : Se oltre il 90% dei file occupano al più 8 KB ca., mentre gli altri usano oltre il 90% dello spazio disco occupato, che si può dire della dimensione ottimale dei blocchi del disco (max 10 righe)?

Non capisco...
Che cosa? Il numero di file che occupano al più 8 KB ciascuno supera il 90% del numero totale di file presenti sul disco. Gli altri, ciascuno dunque di dimensione maggiore di 8 KB, pur essendo evidentemente meno del 10% del numero totale di file, siccome sono "grossi" occupano complessivamente più del 90% dello spazio disco occupato in totale. È più chiaro adesso?
Quote
Entrambe le implementazioni devono essere aggiornate quando si rimuove/crea un file dal disco.
non solo in tali occasioni, ma ad ogni allocazione/deallocazione di settori al/dal file.
Quote
Il sistema operativo deve proibire l'uso di un semaforo da più di un processo per volta, o almeno limitarsi ad interrompere l'esecuzione di tutti i processi affinchè il processo associato a tale chiamata di sistema non porti a compimento l'operazione.
Direi "finché", altrimenti parrebbe che obiettivo del sistema sia quello di impedire al processo di portare a compimento l'operazione... Inoltre non direi "almeno", ma "ad esempio", perché l'interruzione dell'esecuzione di tutti gli altri processi è un modo, un po' drastico, di impedire l'uso concorrente di uno stesso semaforo. Esistono anche modi meno drastici (ma anche meno semplici) di conseguire lo stesso risultato.

Logged
Giuseppe Scollo
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 1.500


« Reply #64 on: 05-06-2011, 11:36:04 »

non ho capito qual'è il vantaggio di fare DEST=H 
Che ragione ci sarebbe per escluderlo? Ad esempio, DEST potrebbe essere H stesso: tale assegnamento "banale" permette di settare i bit Z e/o N prodotti dalla  ALU in base al contenuto di H; spesso l'istruzione MAL
R = R ; if (Z) goto L1 else goto L2
viene espressa mediante la sintassi
Z = R; if (Z) goto L1 else goto L2
e analogamente per il test su N, dove R può essere qualsiasi registro tranne MAR, MBR, MBRU; ciò perché R deve essere un registro lecito sia a sinistra che a destra di un assegnamento, secondo la sintassi MAL, dunque non può essere MAR (vietato a destra), né MBR o MBRU (vietato a sinistra). Però può essere utile specificare una diramazione ad es. in base al segno di MBR. Come fare? Semplice:
H = MBR
N = H ; if (N) goto L1 else goto L2

che è la sintassi alternativa per:
H = MBR
H = H ; if (N) goto L1 else goto L2

In questo caso, se non ci sono altre istruzioni fra le due mostrate, c'è una soluzione più semplice :
H = MBR ; if (N) goto L1 else goto L2
ma in caso contrario serve l'assegnamento H = H.
Logged
m3l0
Matricola
*
Offline Offline

Posts: 74



« Reply #65 on: 05-06-2011, 16:37:38 »

L'interpretazione dell'istruzione IJVM invokevirtual deve conoscere il numero dei parametri del metodo invocato. Perché (max 5 righe)?
Una volta effettuato correttamente l'invokevirtual, lo stack dovrà contenere appena sopra LV tutti i parametri che sono stati passati a invokevirtual...
La memoria necessaria a contenere questi parametri si conosce a priori leggendo il numero dei parametri del metodo (includendo anche objref)


Può essere che è necessario conoscere il numero dei parametri passati al metodo per non eccedere nella zona di memoria della costant pool??
Logged
immatricola
Matricola
*
Offline Offline

Posts: 25


« Reply #66 on: 05-06-2011, 19:22:26 »

Il testo, in sez. 3.2.2 "Reti combinatorie", spiega l'uso di un multiplexer per la conversione di dati da parallelo a seriale. Tale uso non è appropriato al titolo della sezione. Perché (max 5 righe)?

Il titolo appropriato sarebbe “Circuiti combinatori” perché il multiplexer è un circuito con 2^n dati di entrata,un dato di uscita e n input di controllo che seleziona uno dei dati di entrata.


Che cos'è lo stato di riposo degli input S e R di un latch SR implementato mediante due porte NAND?

In questo tipo di circuito gli ingressi S e R sono attivi sul livello basso,vi è uno stato di riposo per S=R=1,quando vi è un immagazzinamento,gli input in questa fase vengono tenuti a livello logico alto in modo tale gli output q e not q si mantengono in uno stato costante.
Logged
Giuseppe Scollo
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 1.500


« Reply #67 on: 06-06-2011, 04:57:37 »

Può essere che è necessario conoscere il numero dei parametri passati al metodo per non eccedere nella zona di memoria della costant pool??
Direi di no, in quella zona ci trova solo l'indirizzo di inizio del metodo nell'area dei metodi. Alla risposta fornita dal suo collega, da lei citata, avevo obiettato:
Sì, ma i parametri sono posti nello stack prima dell'esecuzione di invokevirtual. Perché, invece, proprio nella interpretazione di invokevirtual è necessario conoscerne il numero?
Dunque i parametri si trovano già sullo stack quando inizia l'interpretazione di invokevirtual, si sa dove cominciano, e occorre sapere dove finiscono... la domanda è: perché occorre sapere anche questo? Sospetterei che nell'interpretazione di invokevirtual si debba effettuare qualche altra scrittura sullo stack, senza correre il rischio di modificare i parametri che già vi si trovano.


Logged
Giuseppe Scollo
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 1.500


« Reply #68 on: 06-06-2011, 05:14:11 »

Il titolo appropriato sarebbe “Circuiti combinatori” perché il multiplexer è un circuito con 2^n dati di entrata,un dato di uscita e n input di controllo che seleziona uno dei dati di entrata.
No, "circuiti combinatori" e "reti combinatorie" sono sinonimi. Il multiplexer in quanto tale lo è, finché il suo output dipende solo dagli input in un dato istante e non da stati precedenti o dal tempo. È l'uso del multiplexer quale serializzatore a non essere conforme a questa caratteristica dei circuiti/reti combinatori/e, e a renderlo invece un circuito sequenziale, perché in tale uso l'output dipende dal tempo (il circuito serializza l'input sull'unico output nel tempo).
Quote
In questo tipo di circuito gli ingressi S e R sono attivi
direi meglio "asseriti"
Quote
sul livello basso,vi è uno stato di riposo per S=R=1,quando vi è un immagazzinamento,gli input in questa fase vengono tenuti a livello logico alto in modo tale gli output q e not q si mantengono in uno stato costante.
dovrebbe usare altri segni di interpunzione oltre alle virgole, altrimenti è difficile capire cosa intenda.
Logged
pippo
Apprendista Forumista
**
Offline Offline

Posts: 150



« Reply #69 on: 06-06-2011, 15:15:36 »

Quote
Il bit A, o di riporto ausiliario, nel registro di flag del Pentium 4 indica un riporto oltre il bit 3 nella somma. Perché ciò è utile nella somma BCD (max 10 righe)?
  e
Quote
Il testo originale specifica il bit di flag A del Pentium 4 come "carry out of bit 3"; se questo fosse il "riporto oltre il terzo bit", sarebbe poco utile alla somma BCD. Perché (max 10 righe)?

Queste due domande non sarebbero contraddittorie? testate
Logged
Aerith
Matricola
*
Offline Offline

Posts: 69



« Reply #70 on: 06-06-2011, 15:24:38 »

Indicare e motivare i vantaggi dell'arbitraggio decentralizzato, rispetto a quello centralizzato, nei bus con collegamento a festone

L'arbitraggio centralizzato con il collegamento a festone si basa sul fatto che ai dispositivi vengono assegnate delle priorità, in base a quanto sono vicini all'arbitro. L'arbitraggio decentralizzato, si basa sul maggior numero di linee di bus con il quale tutti dispositivi monitorano tutte le linee di richiesta dove alla fine di ciascun ciclo del bus, tali dispositivi potranno sapere chi è il richiedente con priorità più elevata e quindi avere il diritto di usare il bus durante il ciclo successivo. I due tipi di arbitraggio sono simili, la differenza sta che nel'l'arbitraggio decentralizzato non ha l'arbitro e ciò lo rende più economico, più veloce e non soggetto ai potenziali guasti dell'arbitro.
Logged
Giuseppe Scollo
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 1.500


« Reply #71 on: 06-06-2011, 15:47:49 »

Queste due domande non sarebbero contraddittorie? testate
No, perché il "terzo bit" non è il bit 3, bensì il bit 2 (si numerano le posizioni dei bit da destra verso sinistra, cioè per significatività crescente, a partire da 0).
Logged
Giuseppe Scollo
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 1.500


« Reply #72 on: 06-06-2011, 16:14:16 »

L'arbitraggio decentralizzato, si basa sul maggior numero di linee di bus con il quale tutti dispositivi monitorano tutte le linee di richiesta [...]
No, c'è un equivoco: l'ipotesi "nei bus con collegamento a festone" si riferisce a entrambi i tipi di arbitraggio, dunque va considerato l'arbitraggio decentralizzato con solo tre linee, indipendentemente dal numero dei dispositivi.
Logged
R3m
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 486



« Reply #73 on: 07-06-2011, 11:29:55 »

Le istruzioni del Pentium possono raggiungere i 17 byte di lunghezza. Il Pentium è un processore VLIW? Motivare la risposta (max 5 righe).
Se si riferisce al Pentium I, anche se le istruzioni sono lunghe, non credo che questo processore abbia più unità funzionale, e immagino neanche più core sullo stesso chip. Quindi non credo potrebbe essere considerato un proc. VLIW, ma solo un processore che utilizza istruzioni lunghe...
Logged

Ciò che è nostro è stato in campo sudato....ciò che vostro è stato in aula assegnato.
In serie B non sei mai stato perchè la prescrizione t'ha salvato.
immatricola
Matricola
*
Offline Offline

Posts: 25


« Reply #74 on: 07-06-2011, 12:22:32 »

molte CPU hanno uno speciale ciclo di bus per la conferma degli interrupt.Perchè?

Un interrupt è un segnale o un messaggio generalmente di natura asincrona che arriva alla CPU per avvisarla del verificarsi di un certo evento.Ciò è importante perchè se non ci fosse potrebbe accadere che dei processori tentano di assegnare delle istruzioni non valide e generare parecchi errori;rovinano i registri della CPU e I/O e il sistema stesso.Quindi la conferma dell'interrupt è essenziale per informare il sistema operativo per la gestione del problema.
Logged
Pages: 1 ... 3 4 [5] 6 7 ... 24   Go Up
Print
Jump to: