Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Sistema Operativo e Gestione delle Risorse
Il livello MV del sistema operativo si occupa di gestire le risorse fondamentali del sistema nei confronti dei programmi applicativi. Questo livello svolge la funzione di supervisione e gestione delle risorse fondamentali, inclusa la gestione dei processi.
Il livello MV, detto anche nucleo del sistema operativo, si occupa della gestione del processore rispetto alle attività concorrenti sia degli utenti che del sistema. Inoltre, al livello MV avviene la gestione delle altre risorse fondamentali su richiesta delle funzionalità attive a questo livello, utilizzando meccanismi implementati da MV. Il livello MV costituisce l'interfaccia verso le applicazioni.
La Memoria Virtuale
All'inizio dell'era dei calcolatori, le memorie erano piccole e costose. I programmatori di quei tempi passavano molto tempo cercando di comprimere i programmi in memorie molto limitate. Spesso era necessario utilizzare algoritmi che richiedevano un grande sforzo di lavoro.
più lentamente di un altro semplicemente perché il migliore era troppo grande, cioè il programma che usava l'algoritmo migliore non stava nella memoria del calcolatore. La soluzione tradizionale a questo problema era di usare una memoria secondaria, come un disco. Il programmatore divideva il programma in pezzi chiamati overlay ognuno dei quali poteva stare in memoria. Per eseguire il programma si inseriva il primo overlay e lo si eseguiva; quando era finito leggeva l'overlay successivo e lo chiamava, ecc.. Il programmatore era responsabile della divisione del programma in overlay, e doveva decidere dove dovesse essere tenuto ogni overlay nella memoria secondaria, curare gli spostamenti degli overlay tra memoria centrale e memoria secondaria e in generale gestire tutta l'elaborazione degli overlay senza alcun aiuto dal calcolatore. Anche se usata per anni questa tecnica richiedeva molto lavoro in relazione alla gestione degli overlay. Un gruppo di studiosi,Proposero un metodo per l'esecuzione automatica della gestione degli overlay, senza che il programmatore sapesse neppure che cosa stava succedendo. Questo metodo, ora chiamato memoria virtuale, ha l'ovvio vantaggio di liberare il programmatore da un sacco di lavoro amministrativo.
La paginazione. L'idea proposta dal gruppo di studiosi fu di separare i concetti di spazio di indirizzamento e di locazioni di memoria. Considerate l'esempio di un calcolatore con un campo di indirizzamento di 16 bit nella sua istruzione e 4096 byte di memoria. Un programma su questo calcolatore può indirizzare 65536 byte di memoria. La ragione è che esistono 65536 (2^16) indirizzi di 16 bit.
Prima dell'invenzione della memoria virtuale si sarebbe fatta una distinzione tra gli indirizzi al di sotto di 4096 e quelli uguali o superiori a 4096. Le due parti erano considerate rispettivamente come lo spazio di indirizzamento utile e lo spazio di indirizzamento inutile (gli overlay).
indirizzimaggiori di 4095 erano inutili perché non corrispondevano a indirizzi effettivi di memoria). Nonsi faceva però una grossa distinzione tra lo spazio di indirizzamento e gli effettivi indirizzi dimemoria, perché l'hardware applicava una corrispondenza uno ad uno tra di loro.L'idea di separare lo spazio di indirizzamento e gli indirizzi di memoria è la seguente. Inqualsiasi istante si può accedere direttamente a 4096 byte di memoria, ma queste noncorrispondono necessariamente agli indirizzi da 0 a 4095. Potremmo, per esempio, "dire" alcalcolatore che da ora in poi, tutte le volte che si dà l'indirizzo 4096, deve essere usato il byte 0.Quando si dà l'indirizzo 4097, si deve usare il byte 1. Quando si dà l'indirizzo 8191, si deve usareil byte 4095 ecc. In altre parole abbiamo definito una funzione dallo spazio di indirizzamentosugli indirizzi di memoria effettivi. 3Sulla base di questa
rappresentazione della funzione dallo spazio di indirizzamento alle locazioni effettive di memoria, una macchina di 4K senza memoria virtuale ha semplicemente una corrispondenza fissa tra gli indirizzi da 0 a 4095 e 4096 byte di memoria. Una domanda interessante è: che cosa succede se un programma salta ad un indirizzo, tra 8192 e 12287? Nella macchina senza memoria virtuale il programma provoca un trap per l'errore, che stampa un messaggio abbastanza rude come "riferimento a memoria inesistente" e termina il programma. Nella macchina con memoria virtuale si verifica la seguente sequenza di passi:- i contenuti della memoria centrale sono salvati in una memoria secondaria;
- i byte da 8192 a 12287 sono localizzati nella memoria secondaria;
- i byte da 8192 a 12287 sono caricati nella memoria centrale;
- la mappa degli indirizzi viene cambiata per rappresentare gli indirizzi 8192 a 12287 sulle locazioni di memoria da 0 a 4095;
- l'esecuzione continua come se non fosse successo nulla.
indirizzamento virtuale, o saltare ad una istruzione localizzata in un posto qualsiasi entro lo spazio di indirizzamento virtuale, senza preoccuparsi che in realtà non ci sia abbastanza memoria fisica. Infatti il programmatore può scrivere programmi senza sapere se la memoria virtuale esiste. Il calcolatore sembra avere una grossa memoria.
Per sottolinearlo ancora una volta, la paginazione dà al programmatore l'illusione di una grande memoria centrale continua e lineare, della stessa dimensione dello spazio di indirizzamento, anche se in pratica la memoria centrale disponibile può essere più piccola dello spazio di indirizzamento.
Struttura a moduli
Useremo il termine di modulo di elaborazione, per denotare delle entità attive, capaci cioè di autocontrollo nel gestire sia la propria evoluzione interna che le interazioni con gli altri moduli. Un concetto usato è quello di tipo di dato astratto, cioè di entità che
implementano precisestrutture dati rese visibili dall'esterno solo mediante le operazioni su di esse definite. Una computazione può essere vista come un insieme di istanze di tipi di dati astratti cooperanti: la cooperazione avviene mediante l'invocazione reciproca di operazioni ed è resa possibile dall'esistenza di precise interfacce a cui in generale saranno associati diritti di accesso o di protezione. Un modulo può decidere di non ascoltare invocazioni da altri; una volta in possesso delle informazioni necessarie è in grado di eseguire nel proprio ambiente di elaborazioni una o più operazioni; le modalità di cooperazione con gli altri moduli devono essere congruenti con la definizione delle interfacce fra moduli. Il microprocessore In tutti i PC è il microprocessore che esegue ogni tipo di programma. Il microprocessore, o unità di elaborazione centrale (CPU), svolge calcoli, confronti e trasferimenti di dati.risposta ai4programmi memorizzati. La CPU è composta da diverse parti: l'unità di controllo che ha il compito di prelevare le istruzioni dalla memoria principale e di determinarne il tipo; l'unità aritmetico-logica esegue le operazioni elementari. La CPU contiene anche una piccola memoria ad alta velocità usata per memorizzare i risultati temporanei e certe informazioni di controllo. Questa memoria è costituita da alcuni registri, ognuno dei quali ha una sua funzione. Il registro più importante è l'accumulatore di programma, che indica la prossima istruzione da eseguire. Un altro registro è il registro delle istruzioni (IR) che contiene le istruzioni che stanno per essere eseguite. La CPU controlla le operazioni fondamentali del computer, inviando e ricevendo segnali di controllo, indirizzi di memoria e dati da una parte del computer ad un'altra, lungo un gruppo di linee di collegamento elettronico (BUS). Il busè semplicemente un gruppo di linee comuni sulla scheda madre, a cui sono collegate tutte le diverse sezioni di controllo del computer.
Vi sono due tipi di bus: dati e indirizzi. Il bus indirizzi utilizza 20 linee di segnale per identificare le celle di memoria e le periferiche collegate ad esso. Ciascuna linea può assumere due valori, 0 e 1 (bit), quindi questo bus può identificare fino a 2^20 indirizzi.
Il bus dati opera in stretto collegamento con il bus indirizzi per trasferire i dati all'interno del computer. Solitamente il bus dati è di otto linee, quindi si hanno 8 bit.
Uno dei compiti essenziali della CPU è di rispondere agli interrupt hardware. Questi sono segnali generati dai componenti del PC, che in questa maniera richiedono un particolare servizio da parte della CPU. Il microprocessore dispone di un circuito controllore programmabile degli interrupt (PIC) che segue gli interrupt e li segnala uno alla volta alla CPU. Questa risponde eseguendo una determinata azione.
Speciale routine software detta di gestione dell'interrupt. Alcune parti del computer sono in grado di trasferire dati da e verso la memoria del computer senza passare per la CPU. Questa operazione è detta accesso diretto alla memoria (DMA), e viene gestita da un chip detto appunto gestore del DMA. Il suo scopo principale è consentire la lettura/scrittura sui dischi senza far lavorare ulteriormente la CPU.
La memoria è quella parte del calcolatore in cui sono immagazzinati i programmi e i dati. L'unità fondamentale della memoria è la cifra binaria, chiamata bit, che può assumere i valori 0 e 1. La memoria è costituita da un numero di locazioni, ognuna delle quali può immagazzinare 8 bit (byte). Ogni locazione è identificata da un indirizzo, al quale i programmi si riferiscono. Se una memoria ha n celle, essa avrà gli indirizzi da 0 a n-1. Tutte le celle contengono lo stesso numero di bit. L'8086
è un microprocessore a sedici bit in teoria quindi non