Che materia stai cercando?

Riassunto architettura calcolatori Appunti scolastici Premium

Appunti di Fondamenti di Architettura dei calcolatori basati su appunti personali del publisher presi alle lezioni della prof.ssa Sami dell’università degli Studi Politecnico di Milano - Polimi, Facoltà di Ingegneria dell'informazione. Scarica il file in formato PDF!

Esame di Fondamenti di architettura dei calcolatori docente Prof. M. Sami

Anteprima

ESTRATTO DOCUMENTO

4- Gestire l’I/O

5- Gestire interrupt

6- Verifica del quanto di tempo associato ai processi

Ogni processo rappresenta per il S.O. un istanza del programma in esecuzione e contiene tutti i dati che servono.

-codice eseguibile

-dati programma

- spazio indirizzamento contiene codice eseguibile e stack

-info sullo stato

Il S.O. alloca uno spazio in memoria per ogni processo creato e lo carica in tale zona

Il nucleo sceglie quale processo mandare in esecuzione secondo lo scheduling

IL S.O. se viene richiesto un servizio tramite SVC attiva la funzione relativa e il S.O.esegue il servizio nel contesto del processo stesso.

I servizi forniti dal S.O. sono parametrici in quanto svolti per conto del processo richiedente.

Un processo in stato di esecuzione abbandona tale stato per 2 motivi

- Sospensione volontaria: se devo attendere il verificarsi di un evento per poter procedere col processo stesso questo si pone in stato di attesa.

- Scadenza del quanto di tempo (preeamption): alla scadenza del quanto si pone il processo in stato di pronto.

Quando un processo che era in esecuzione passa in uno dei due stati sopra il S.O. prende uno stato di quelli in stato di pronto e lo porta in

esecuzione(commutazione di contesto).

In esecuzione: è lo stato del processo che utilizza il processore (unico)

Stato pronto: è lo stato di chi attende solo la risorsa processore per proseguire.

In attesa: deve verificarsi un evento o rendersi disponibile una risorsa.

L’istruzione SVC è non privilegiata ed è la chiamata di una funzione U di servizi S.O.

SVC esegue una chiamata al gestore SVC che invoca il servizio richiesto.

La SVC non specifica l’indirizzo della funzione richiesta che è specificato invece nel vettore di interrupt che lo carica nel PC.

SVC è non privilegiata e dopo l’esecuzione si passa invece a istruzioni privilegiate modificando il modo processore.PSW

Poiché la SVC realizza una chiamata di funzione si deve specificare l’indirizzo di ritorno e questo avviene tramite IRET (S).

Il quanto di tempo è gestito da un particolare interrupt generato dall’orologio di sistema a una frequenza definita si genera l’interrupt.

La routine di risposta incrementa una variabile che contiene il tempo di esecuzione del processo corrente

Se il quanto non è scaduto la routine termina e il processo continua nell’esecuzione.

Se il quanto è scaduto si attiva la preempt che cambia lo stato del processo da esecuzione a pronto e salva il contesto.

Lo scheduler manda in esecuzione un nuovo processo tramite la change che esegue commutazione di contesto

Tabella processi o proctable contiene un elemento per ogni processo attivo e in ogni record associato al processo tutte le info per gestirlo

Una variabile contiene l’indice del processo attivo.

Memoria virtuale.

Con l’introduzione della cache si limita il problema della velocità ma non quello dello spazio.

I dischi però sono lenti e inoltre voglio il parallelismo.

Si introduce quindi la memoria virtuale ovvero voglio introdurre lo stesso concetto tra ram e disco di quello tra cache e cpu.

Ovvero l’accesso a una memoria grande ma a velocità RAM.

Il motivo di introduzione di memoria virtuale sono la condivisione di memoria tra programmi e eliminare i problemi di una memoria piccola.

Più programmi contemporaneamente aperti

i programmi devono avere spazio nella memoria di lavoro quindi lo spazio totale richiesto può essere molto superiore alla RaM.

Ma in ogni momento uso solo pochissimo di questo spazio perché i programmi sono attivi solo uno alla volta.

Quindi basta che la RAM contenga la frazione attiva dei programmi (come in cache porto i dati a cui accedo prima)

LOCALITà

Ogni programma deve essere protetto dagli altri e non attaccarli quindi ha degli specifici diritti di accesso ad aree di memoria.

Sia i programmi attivi sia le frazioni attive cambiano dinamicamente durante l’esecuzione.

Ogni programma deve essere compilato in uno spazio di indirizzamento indipendente da quella che sarà l’allocazione durante l’esecuzione.

La memoria virtuale traduce dallo spazio degli indirizzi proprio di un programma agli indirizzi fisici della memoria di lavoro in cui il programma viene portato il

processo di traduzione forza anche la protezione dello spazio di indirizzamento.

Il programma supera le dimensioni della ram

Fino agli anni 60 il programmatore doveva gestire i trasferimenti di dati mutuamente esclusivi escludendo la portabilità e rendendo difficile la

programmazione (overlay)

La memoria principale è chiamata fisica e così anche i suoi indirizzi

Gli indirizzi a cui fa riferimento il programma sono indirizzi virtuali.

Gli indirizzi virtuali sono quelli generati dal linker a partire dall’ indirizzo 0 e sono rilocabili.

Lo spazio di indirizzamento virtuale è definito dalla lunghezza degli indirizzi virtuali.

La dimensione iniziale è quella calcolata dal linker dopo la generazione dell’indirizzo iniziale.

Durante l’esecuzione la dimensione può variare a causa di chiamate a sottoprogrammi (modifiche stack) o gestione di memoria dinamica (heap).

La cPU lavora con indirizzi virtuali che sono tradotti in indirizzi fisici tramite combinazioni hardware software.

Gli indirizzi fisici possono essere usati per accedere alla RAM tramite una traduzione (memory mapping).

All’esecuzione si ha il caricamento del programma tramite indirizzi virtuali.

Il meccanismo di rilocazione dinamica consiste nella traduzione automatica degli indirizzi da virtuali a fisici è attivato durante l’esecuzione ed è trasparente a

linker compilatore e programmatore.

Il programmatore scrive i programmi come se avesse accesso completo allo spazio di indirizzamento virtuale indipendentemente dalle dimensioni della

memoria centrale.

Più processi possono risiedere in memoria.

La dimensione virtuale può superare quella reale ma un programma non è caricato completamente in memoria ma questo processo è comunque trasparente

al programmatore.

Se durante l’esecuzione ho un accesso a una pagina che non trova spazio nella memoria fisica si verifica una page fault.

Alto costo.

Per ammortizzare questo costo devo fare pagine di dimensione tale da ammortizzare il costo.

Necessarie istruzioni che riducano il page fallo (associativa completa) istruzioni complesse che però sono giustificate dal costo di page fault

Scrittura solo write back

Il problema di trovare pagine in memoria fisica è eseguito dalla tabella delle pagine.

Ne viene creata una per ogni processo e contiene 1 riga per pagina (che associa indirizzo virtuale e fisico)

NPV è l’indice di questa tabella.

Alcune pagine possono non trovarsi in memoria fisica quindi la riga conterrà solo l’indirizzo virtuale.

Per trovare la tabella la Cpu ha un registro che contiene l’indirizzo iniziale delle tabelle.

Tabella + PC + registri CPU=stato programma.

Programma attivo o inattivo quando attivo carico info e SP

Mmu (memory management unit).

Traduce I numeri di pagina virtuali in numeri fisici utilizzando parti delle tabelle dei processi

È una memoria molto veloce e piccola che contiene le righe più usate(quindi NPV no può essere l’indice).

Distingue le pagine di ogni processo tramite il PID

Siccome è piccola posso avere un table miss per evitarlo devo avere una mmu di dimensione simile a r (residenza pagine processi in memoria)

Pagine condivise solo 1 volta presenti.

La paginazione permette di rilevare accessi a zone di memoria non appartenenti allo spazio di indirizzamento virtuale del processo.

Questo succede se si genera un indirizzo di memoria virtuale che non è presente in tabella.

IL S.O. genera una violazione di memoria.

Posso associare ad ogni pagina virtuale alcuni bit di protezione che limitano i diritti di accesso a quella pagina e sono:

scrittura W, lettura R, esecuzione X (fondamentali associati a pagine condivise)

ci può essere anche bit di validità

quando richiedo una pagina al mmu tramite indirizzo virtuale comparo il bit di validità trovo la corrispondenza in tabella prendo indirizzo fisico sommo offset

raggiungo la parola.

Quando si verifica table miss ho due casi:

se ho bit di validità a zero la pagina non è in memoria e quindi si attende il suo caricamento.

Se il bit è a uno ma non ho in memoria mmu il segmento di tabella che mi serve ho un table miss

Se ho page fault il SO deve trovare nel disco la pagina virtuale richiesta tramite le tabelle processi complete trovare spazio in memoria per caricare la pagina

richiesta

Quest’operazione può comprendere il dover scaricare una pagina presente in memoria.

Caricare pagina richiesta

Riavviare istruzione che ha generato page fault.

Associo a ogni pagina due bit per capire che pagina sostituire

Bit di accesso (posto a zero quando carico in memoria a 1 quando si esegue un accesso alla pagina)usato per LRU.

Bit di modifica (posto a zero quando carico in memoria a 1 quando modifico la pagina)

Quando ricopio le pagine nel disco porto solo quelle con bit modifica a 1.

PAging demand

All avvio di ogni programma carico le varie pagine man mano che mi sono richieste a partire dalla situazione a –ram vuota.

VALE il SACRO principio di località

Working set

La maggior parte dei programmi accede a certe pagine con maggiore frequenza per il principio di località quindi il working set varia lentamente

Se r è grande ho poche page fault ma ci stanno pochi processi se no viceversa.

Metodi di sostituzione

LRU

Bit di accesso posto a 1 per ogni accesso e azzerato periodicamente, a ogni azzeramento il SO incrementa una variabile associata alla pagina sostituisco quindi

quella con variabile più alta.

FIFO

Ho un contatore per pagina sostituisco quella in memoria da più tempo

Nessun algoritmo gestisce bene la situazione in cui ho WS poco maggiore della memoria

Programma che genera molti errori si dice in trashing.

Quando modifico modifico solo pagine in memoria quando sostituisco in caso di errore copio solo le pagine modificate

Le istruzioni non sono mai copiate sul disco.

I dati allocati dinamicamente sono messi nello swap file del disco

Segmentazione:

ogni segmento è costituito da sequenza lineare di indirizzi ed è identificato in modo univoco da una coppia di indirizzi virtuali che ne determinano inizio e fine.

Il segmento deve contenere un numero intero di pagine.

In questo modo è possibile avere diritti di accesso differenti per ogni segmento.

I segmenti possono variare dinamicamente e indipendentemente gli uni dagli altri.

Individuando aree di memoria logica da condividere posso collegare procedure differenti.

Ho crescita stack per ogni chiamata a funzione e crescita heap per invocazione di espliciti servizi.

Architettura a bus le periferiche sono connesse direttamente al bus in realtà non è così

Le periferiche di accesso sono il collo di bottiglia del sistema

Al bus di sistema sono collegate le porte di accesso che vengono indirizzate tramite bus indirizzi e che contengono registri di stato e comandi.

Alla porta di accesso si collegano le periferiche stesse tramite interfacce proprie.

Sincronizzazione e trasferimento sono gestiti dal programma che richiede l’operazione di I/O.

Programma di gestione in particolare sincronizza CPU e periferica.

-legge il registro di stato a ripetizione finchè non trova il dato disponibile

-esegue il trasferimento

Se la periferica è di ingresso devo copiare in memoria i dati se è di out devo prelevare da memoria.

Svantaggi:

-La cpu rimane occupata per il ciclo di controllo

- non è possibile gestire eventi asincroni

La cpu è ancora l’unico master del sistema ma le periferiche inviano un interrupt quando hanno dati disponibili.

Caso dati in ingresso:

Quando l’interfaccia della periferica pone il dato nella porta di ingresso genera un segnale di interruzione per la cpu.

Se la cpu accetta finisce l’operazione in corso e poi gestisce il trasferimento alla fine riprende l’esecuzione del programma.

La gestione periferiche è quindi asincrona e sul bus transitano dati ulteriori ovvero int req e intack

L’interruzione può essere mascherata se la cpu non accetta l’intreq

Caso a1 periferica

Non serve capire chi fa la richiesta ne la sua priorità

Successione operazioni.

L’interfaccia trasferisce il dato nella porta d’accesso e pone a uno l’attivazione.

Controlla se la cpu emette il segnale intack

Manda il segnale intreq

La cpu riceve l’int req e manda intack

La periferica disattiva l’intreq e la cpu finisce le sue operazioni

L’interfaccia ferma lo stato attivo

La cpu rientra in esecuzione normale con iret.

Posso avere interruzione da più periferiche

- Soluzione piu semplice routine che controlla le periferiche e gli interrupt

- Vettore interruzione

In fase di accettazione il processore genera intaqk e legge dal bus dati senza portare indirizzi la periferica a priorità più alta partecipa al ciclo e fornisce

un numero che il processore utilizza per calcolare la routine di risposta

Per gestire la priorità di interrupt serve un meccanismo di arbitraggio

Interruzioni annidate:mentre eseguo un interruzione ne arriva un altra.

Priorità e annidamento si possono risolvere con linee separate per ogni periferica

Problema aumento delle linee all’aumento delle periferiche

Gestione contemporanea dasy chaning

Accettazione per tutte le periferche del livello è di turno però solo quella a priorità maggiore

Catena di dasy con priorità

È possibile l’annidamento ma solo se si accetta che interrupt di basso livello fermino quelli di alto livello

Risolto il problema con priorità processore vengono accettati solo processi con priorità maggiore di quella del processore

Quando ho interrupt salvo il contesto tramite hardware al rientro si ripristina il contesto.

La Cpu può disabilitare il meccanismo di interrupt salvo poi ripristinarlo alla fine per gestire le priorità.

Interrupt non mascherabile

Se ho interruzione devo cedere il controllo dell’esecuzione alla routine di risposta la quale deve gestire anche il salvataggio dei dati dell’interrotto in modo da

poter poi riprendere l’esecuzione questo non può farlo il programma stesso perché non posso prevedere quando avviene interrupt.

Devo salvare sullo stack l’indirizzo di ritorno, usare l’iret

L’hardware della CPU provvede a :

salvare il contenuto del pc cioè istruzione successiva a quella in corso

salvare il (sr)

se interrupt mascherabile mascherarlo

devo salvare i registri che uso nelle interruzioni per ogni interruzione.

Esistono casi in cui ne controllo programma ne interrupt vanno bene es molti dati veloci e vicini es video.

I due metodi sono lenti e occupano la cpu quindi uso DMA ovvero trasferimento autonomo dati in e out dalla memoria centrale.

Uso controllore DMA che diventa il master del bus.

Devo gestire priorità bus.

Il controllore DMA deve:

poter controllare il bus acquisendo capacità di portare indirizzi sul bus e comandi

uso bus request & bus grant per garantire che si abbia utilizzo del bus mutuamente esclusivo.

Predisposizione e attivazione procedura

È un operazione del SO

Scrive indirizzi da cui cominciare il trasferimento, direzione del trasferimento, quantità di dati da trasferire, comando di avviamento dell’operazione.


PAGINE

21

PESO

510.75 KB

AUTORE

cemba90_

PUBBLICATO

+1 anno fa


DETTAGLI
Corso di laurea: Corso di laurea in ingegneria elettronica
SSD:
A.A.: 2016-2017

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher cemba90_ di informazioni apprese con la frequenza delle lezioni di Fondamenti di architettura dei calcolatori e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico di Milano - Polimi o del prof Sami Maria Giovanna.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Corso di laurea in ingegneria elettronica

Trasmissione del calore - Appunti
Appunto
Elettronica - campi elettromagnetici
Appunto
Fondamenti Di Elettronica Guazzoni
Appunto
Appunti di Electron devices (corso completo)
Appunto