D4rkAng3l
03-06-2007, 17:05
Non sò se questa sia la sezione giusta...nel caso ditemelo :-(
Se posto alcune domande di un vecchio compito mi dite se le mie risposte sono sensate?
1)Descrivere le caratteristiche di un sistema operativo con struttura a microkernel, mettendone in evidenza i vantaggi e gli svantaggi.
Risposta: Nel modello a microkernel vengono definiti 2 componenti del sistema per la gestione delle risorse:
[1]Meccanismi che vengono messi a disposizione dal SO per consentire la gestione fisica della risorsa
[2]Strategie che usano i meccanismi e stabiliscono diversi modi di fare qualcosa su una determinata risorsa
Per esempio il cambio di contesto è il meccanismo per creare processi virtuali e lo scheduler è la strategia con cui la cpu viene allocata all'atto del cambio di contesto
Il microkernel è l'insieme dei meccanisimo ed è l'unico componente a girare in stato privilegiato e le strategie fanno parte di normali processi applicativi e ciò causa una maggiore facilità di modifica ed estensione di esse rispetto ai modelli precedenti dove tutto era parte del kernel.
Nel modello a microkernel il gestori delle risorse prendono il nome di server e i processi applicativi di client che devono interagire tra loro (i client fanno richieste ai server che servono tali richieste) e comunicano tramite un meccanismo fornito dal microkernel chiamato PROTOCOLLO IPC. L'unico svantaggio può essere una perdita di efficienza perchè ogn chiamata di sistema corrisponde ad una comunicazione client-server tramite IPC.
2)Dare una descrizione di semaforo e scrivere un’implementazione in pseudo codice delle primitive wait e signal.
Un semaforo s è una particolare struttura dati formata da 2 componenti:
[1]Una VARIABILE INTERA NON NEGATIVA s.value
[2]Una CODA DI PROCESSI SOSPESI s.queue
e viene comunemente usata per risolvere il problema della mutua esclusione di una risorsa (il problema cioè di non far accedere contemporaneamente 2 processi ad una stessa risorsa)
Su tale struttura dati possono operare soltanto 2 funzioni: wait e signal.
wait viene usata da un processo per verificare lo stato di un semaforo (se può accedere o no alla risorsa)
void wait(s){
if(s.value==0){
<IL PROCESSO VIENE SOSPESO>
<IL DESCRITTORE DEL PROCESSO VIENE MESSO NELLA CODA s.queue>
}
else s.value = s.value-1;
}
La funzione signal() serve per risvegliare eventuali processi sospesi dal semaforo
[code]
void signal(s){
if(<ESISTE ALMENO UN PROCESSO IN s.queue>{
<TOGLI IL DESCRITTORE DALLA CODA E SETTA IL PROCESSO COME PRONTO>
}
s.value=s.value+1;
}
Se il valore di s.value può essere solo 0 o 1 si parla di semafori binari.
3)Considerate due risorse R1 e R2 condivise tra due processi P1 e P2, scrivere in pseudo codice una soluzione (utilizzando i semafori binari) che consenta l’utilizzo delle risorse in mutua esclusione da parte dei due processi senza che si verifichi una situazione di stallo.
PROCESSO P1:
wait(murex1);
<INIZIO UTILIZZAZIONE DI R1>;
wait(murex2);
<INIZIO UTILIZZAZIONE DI R2>;
signal(mutex2);
signal(mutex1);
PROCESSO P2:
wait(murex2);
<INIZIO UTILIZZAZIONE DI R2>;
wait(murex1);
<INIZIO UTILIZZAZIONE DI R1>;
signal(mutex1);
signal(mutex2);
Così P1 e P2 non potranno accedere slle risorse R1 ed R2 senza che si verifichi un blocco critico
4)In relazione alle tecniche di gestione della memoria, descrivere lo schema a partizioni variabili e in particolare il funzionamento degli schemi best-fit e first-fit.
La tecnica della gestione della memoria a partizioni variabili prevede le seguenti caratteristiche della macchina e dal SO:
RILOCAZIONE: STATICA
ALLOCAZIONE DEI BLOCCHI: CONTIGUA
SPAZIO VIRTUALE: UNICO
CARICAMENTO: TUTTO INSIEME.
In generale la memoria partizionata viene usata dai sistemi privi di MMU che pertanto possono solo fare una rilocazione statica e quando è necessario allocare memoria da parte di un processo viene caricato in un'unica area di locazioni tra loro contigue per ciò serve una partizione libera di dimensioni sufficientemente grandi dove il caricatore caricherà lo spazio virtuale del processo e tale spazio fisico sarà assegnato al processo fino al suo termine tenendoconto che se viene effettuata un'operazione di SWAP OUT nella successiva SWAP IN bisognerà ricaricare lo spazio virtuale del processo nello stesso spazio fisico.
Lo schema a partizioni variabili consente di definire dinamicamente le caratteristiche delle singole partizioni in modo che esse corrispondano alle esatte esigenze di memoria dei processi (non come nelle partizioni fisse che erano create all'installazione del sistema operativo).
Il Sistema operativo è contenuto in una partizione D0...quando viene creato un primo processo avente spazio virtuale di N1 locazioni viene creata nello spazio libero una partizione D1 dove viene allocato il processo e una partizione libera D2 tale che D2 = D1-N1 e così via
Quando un processo termina viene rilasciata l'area di memoria che occupava e il sistema operativo deve registrare che sono ora disponibili 2 locazioni di memoria
Dk: quella rimanente e D1 quella rilasciata dal processo P1
Ci può stare?
Grazieee
Se posto alcune domande di un vecchio compito mi dite se le mie risposte sono sensate?
1)Descrivere le caratteristiche di un sistema operativo con struttura a microkernel, mettendone in evidenza i vantaggi e gli svantaggi.
Risposta: Nel modello a microkernel vengono definiti 2 componenti del sistema per la gestione delle risorse:
[1]Meccanismi che vengono messi a disposizione dal SO per consentire la gestione fisica della risorsa
[2]Strategie che usano i meccanismi e stabiliscono diversi modi di fare qualcosa su una determinata risorsa
Per esempio il cambio di contesto è il meccanismo per creare processi virtuali e lo scheduler è la strategia con cui la cpu viene allocata all'atto del cambio di contesto
Il microkernel è l'insieme dei meccanisimo ed è l'unico componente a girare in stato privilegiato e le strategie fanno parte di normali processi applicativi e ciò causa una maggiore facilità di modifica ed estensione di esse rispetto ai modelli precedenti dove tutto era parte del kernel.
Nel modello a microkernel il gestori delle risorse prendono il nome di server e i processi applicativi di client che devono interagire tra loro (i client fanno richieste ai server che servono tali richieste) e comunicano tramite un meccanismo fornito dal microkernel chiamato PROTOCOLLO IPC. L'unico svantaggio può essere una perdita di efficienza perchè ogn chiamata di sistema corrisponde ad una comunicazione client-server tramite IPC.
2)Dare una descrizione di semaforo e scrivere un’implementazione in pseudo codice delle primitive wait e signal.
Un semaforo s è una particolare struttura dati formata da 2 componenti:
[1]Una VARIABILE INTERA NON NEGATIVA s.value
[2]Una CODA DI PROCESSI SOSPESI s.queue
e viene comunemente usata per risolvere il problema della mutua esclusione di una risorsa (il problema cioè di non far accedere contemporaneamente 2 processi ad una stessa risorsa)
Su tale struttura dati possono operare soltanto 2 funzioni: wait e signal.
wait viene usata da un processo per verificare lo stato di un semaforo (se può accedere o no alla risorsa)
void wait(s){
if(s.value==0){
<IL PROCESSO VIENE SOSPESO>
<IL DESCRITTORE DEL PROCESSO VIENE MESSO NELLA CODA s.queue>
}
else s.value = s.value-1;
}
La funzione signal() serve per risvegliare eventuali processi sospesi dal semaforo
[code]
void signal(s){
if(<ESISTE ALMENO UN PROCESSO IN s.queue>{
<TOGLI IL DESCRITTORE DALLA CODA E SETTA IL PROCESSO COME PRONTO>
}
s.value=s.value+1;
}
Se il valore di s.value può essere solo 0 o 1 si parla di semafori binari.
3)Considerate due risorse R1 e R2 condivise tra due processi P1 e P2, scrivere in pseudo codice una soluzione (utilizzando i semafori binari) che consenta l’utilizzo delle risorse in mutua esclusione da parte dei due processi senza che si verifichi una situazione di stallo.
PROCESSO P1:
wait(murex1);
<INIZIO UTILIZZAZIONE DI R1>;
wait(murex2);
<INIZIO UTILIZZAZIONE DI R2>;
signal(mutex2);
signal(mutex1);
PROCESSO P2:
wait(murex2);
<INIZIO UTILIZZAZIONE DI R2>;
wait(murex1);
<INIZIO UTILIZZAZIONE DI R1>;
signal(mutex1);
signal(mutex2);
Così P1 e P2 non potranno accedere slle risorse R1 ed R2 senza che si verifichi un blocco critico
4)In relazione alle tecniche di gestione della memoria, descrivere lo schema a partizioni variabili e in particolare il funzionamento degli schemi best-fit e first-fit.
La tecnica della gestione della memoria a partizioni variabili prevede le seguenti caratteristiche della macchina e dal SO:
RILOCAZIONE: STATICA
ALLOCAZIONE DEI BLOCCHI: CONTIGUA
SPAZIO VIRTUALE: UNICO
CARICAMENTO: TUTTO INSIEME.
In generale la memoria partizionata viene usata dai sistemi privi di MMU che pertanto possono solo fare una rilocazione statica e quando è necessario allocare memoria da parte di un processo viene caricato in un'unica area di locazioni tra loro contigue per ciò serve una partizione libera di dimensioni sufficientemente grandi dove il caricatore caricherà lo spazio virtuale del processo e tale spazio fisico sarà assegnato al processo fino al suo termine tenendoconto che se viene effettuata un'operazione di SWAP OUT nella successiva SWAP IN bisognerà ricaricare lo spazio virtuale del processo nello stesso spazio fisico.
Lo schema a partizioni variabili consente di definire dinamicamente le caratteristiche delle singole partizioni in modo che esse corrispondano alle esatte esigenze di memoria dei processi (non come nelle partizioni fisse che erano create all'installazione del sistema operativo).
Il Sistema operativo è contenuto in una partizione D0...quando viene creato un primo processo avente spazio virtuale di N1 locazioni viene creata nello spazio libero una partizione D1 dove viene allocato il processo e una partizione libera D2 tale che D2 = D1-N1 e così via
Quando un processo termina viene rilasciata l'area di memoria che occupava e il sistema operativo deve registrare che sono ora disponibili 2 locazioni di memoria
Dk: quella rimanente e D1 quella rilasciata dal processo P1
Ci può stare?
Grazieee