Indice lezione: Pagina 2

Documenti analoghi
Indice lezione: repeat. until CPU halt. Richiami e notazioni:

Stadi evolutivi dei sistemi di elaborazione. Stadi evolutivi e modalità d'uso dei sistemi. Sistemi isolati

PD-32. Connessione di dispositivi esterni (periferiche)

Le Interruzioni. Ciclo del processore

Architettura dell elaboratore

Architettura dell elaboratore

Architettura del calcolatore (Seconda parte)

Struttura dei Sistemi di Calcolo

Componenti principali

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

Architettura dell elaboratore

Componenti e connessioni. Capitolo 3

LA GESTIONE DELLA I/O

Un modello di interazione tra CPU e dispositivi di I/O

Università degli Studi di Cassino

Periferiche CPU. Misure e Sistemi Microelettronici Sistemi 6-1 SREG. Data Bus Address Bus Control Bus

Università degli Studi di Cassino

Modi di esecuzione user / kernel

L architettura del calcolatore (Seconda parte)

Architettura del Calcolatore

Fondamenti di Informatica e Programmazione. P ro f. G i a n n i D A n g e l o

Calcolatore: sottosistemi

A.A. 2018/2019. CPU e Linguaggio Macchina FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

SISTEMI OPERATIVI. Nucleo di un SO. Il Nucleo. Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher. 06.

Il calcolatore. È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica

Fondamenti di Informatica A. A / 1 9

FONDAMENTI DI INFORMATICA Lezione n. 10

Macchina di von Neumann/Turing

FONDAMENTI DI INFORMATICA Lezione n. 10

Informatica Generale 07 - Sistemi Operativi:Gestione dei processi

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Architettura hardware

IL SISTEMA DELLE INTERRUZIONI

Sistemi Operativi SISTEMI DI INPUT/OUTPUT. D. Talia - UNICAL. Sistemi Operativi 10.1

Il Sistema Operativo fa parte del software di base; e` costituito da un insieme di programmi che interagiscono e cooperano per:

Fondamenti di Informatica B

Architettura. Argomenti. Modello di Von Neumann. Corso di Laurea in Ingegneria Biomedica aa 2003/2004. Ing. Antonio Coronato. Modello di Von Neumann

Il problema dello I/O e gli Interrupt. Appunti di Sistemi per la cl. 4 sez. D A cura del prof. Ing. Mario Catalano

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE

Memoria cache. Memoria cache. Miss e Hit. Problemi. Fondamenti di Informatica

Ogni CPU è in grado di eseguire un insieme limitato di istruzioni macchina codificate in binario secondo il seguente schema generale.

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Corso di Calcolatori Elettronici I Interruzioni ing. Alessandro Cilardo

Le istruzioni del linguaggio gg macchina corrispondono ad operazioni elementari di elaborazione operazioni aritmetiche

Componenti di un processore

Pag. 1. Il Nucleo del sistema operativo (la gestione dei processi)

Introduzione all'architettura dei Calcolatori. Maurizio Palesi

DEC PDP8, III Generazione, '65-'75

CPU. Dispositivi di I/O. Bus. Terminale. Stampante. Memoria centrale. Unità disco CPU. Unità di controllo. Unità aritmetico logica (ALU) Registri

ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).!

2. Architettura di un calcolatore

Strutture dei sistemi di calcolo

Architettura di un calcolatore: primi cenni introduttivi. Calcolatore: sottosistemi

Il ciclo del processore semplificato BOOTSTRAP FETCH EXECUTE

Trasparenze del Corso di Sistemi Operativi

il Nucleo e la gestione dei processi

Architettura di von Neumann

Sistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel

Architettura dei sistemi di elaborazione (Input/Output parte 2)

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

TEORIA DEI SISTEMI OPERATIVI. Sistemi monoprogrammatie multiprogrammati

Richiami sui Concetti Fondamentali dei Processi

Architettura di una CPU

Architettura di un calcolatore e ciclo macchina. Appunti per la classe 3 Dinf

Architettura dei computer

Memoria cache, interrupt e DMA

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Terza lezione 21 ottobre 2016

CLASSIFICAZIONE DEI SISTEMI OPERATIVI (in ordine cronologico)

I dispositivi di input/output

Capitolo 2: Strutture dei sistemi di calcolo

Sistemi di Elaborazione delle Informazioni

La macchina di Von Neumann. UNIVERSITÀ DEGLI STUDI DEL SANNIO Benevento DING DIPARTIMENTO DI INGEGNERIA CORSO DI "PROGRAMMAZIONE I"

Multiprogrammazione (circa 1965) Interruzioni e S.O. (1) Interruzioni e S.O. (2)

LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 19

Struttura dei Sistemi di Calcolo

Interrupt. LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 19. Prof. Rosario Cerbone

Corso di Informatica

Tecniche della Programmazione, , Parte1

Informatica di base 4 crediti 32 ore!!

Il processore - CPU (CENTRAL PROCESSING UNIT)

Corso di Alfabetizzazione Informatica 2001/2002. La CPU. F. Tortorella Università degli Studi. di Cassino

Operazioni di I/O. Schema di collegamento fra dispositivi periferici e CPU

Architettura del. Calcolatori (1) Calcolatori (2) L architettura di Von Neumann. CPU RAM Memoria I/O. secondaria. bus

ESERCITAZIONE Unità centrale di elaborazione Ciclo base di un istruzione Meccanismo di interruzione

Architettura dei sistemi di elaborazione (Input/Output parte 1)

SISTEMA DI ELABORAZIONE

Architettura hardware

Gestione dei processi

Architettura di un calcolatore: primi cenni introduttivi

Architettura di un calcolatore

ARCHITETTURA DEL CALCOLATORE

SEMAFORI SEMAFORI. Sul semaforo sono ammesse solo due operazioni (primitive)

Architettura del Calcolatore

Transcript:

Abbiamo visto: sistema monolitico (I + E + O) dividiamo I e O da E, e affidiamo loro una CPU replichiamo gli I e gli O per parallelizzare singolarmente gli I e O Pagina 1

Indice lezione: Parallelizzazione tra Input e Output o Controllo e busy wait Parallelizzazione tra I/O e E o Interruzioni (da dispositivo e polling) Veri vantaggi solo con la multiprogrammazione o Interruzioni in multiprogrammazione Pagina 2

Richiami e notazioni: - Un sistema di calcolo è costituito da una o più CPU, memoria principale, memoria secondaria, dispositivi di I/O - Memoria: un vettore M[0:n-1] (es. n=32mb) a cui la CPU accede tramite le istruzioni "LOAD N1" e "STORE N1" - CPU: la CPU contiene una serie di registri che referenzia per nome o in maniera implicita. Due registri speciali sono: IR (instruction register) e PC (program counter) Pagina 3

- Ciclo di Fetch-Execute: La CPU ripete continuamente, in hardware, il ciclo: repeat IR := M[PC] PC := PC + 1 execute(istruz. in IR) until CPU halt Pagina 4

Un modello di interazione tra CPU e dispositivi di I/O Descrizione del problema e della necessità di un sistema operativo efficiente Buffer commandi CPU Dispositivo I/O Busy Ready Processore del dispositivo Pagina 5

- La CPU inserisce un comando nel buffer ed attiva il processore del dispositivo mettendo ad 1 il flag BUSY - Il processore del dispositivo, se non sta eseguendo un comando, ispeziona continuamente il flag BUSY - Non appena lo trova con il valore ad 1, lo azzera ed inizia l'esecuzione del comando contenuto nel buffer - Al termine dell'esecuzione il flag READY viene messo a 1 per avvertire la CPU che il comando è stato eseguito - La CPU azzera il flag READY e inserisce un nuovo comando nel buffer Pagina 6

Interazione tra CPU e dispositivi di I/O - Nel sistema operativo considerato la CPU non esegue nessun altro lavoro durante l'attesa per il completamento di un comando. Pagina 7

- Il modello di comunicazione può essere espresso più precisamente come segue: CPU I/O Processor repeat repeat invio comando; repeat esamina BUSY BUSY := 1; until BUSY = 1 repeat esamina READY BUSY := 0; until READY = 1 <esegui comando> READY := 0; READY := 1; until transmission_completed until device_halt Pagina 8

Interazione tra CPU e dispositivi di I/O - Generalmente il tempo dedicato all'i/o costituisce una parte fondamentale del tempo complessivo di esecuzione di un programma (cioè del tempo che intercorre tra la lettura del programma e la stampa degli ultimi risultati). - Le prestazioni di un sistema di calcolo possono essere notevolmente migliorate riducendo il tempo dedicato alle attività di I/O. Pagina 9

Esempio di un semplice S.O. (1) Card Reader Card Reader Card CPU Printer Main memory Si analizza ora un esempio di sistema operativo che presenta una maggiore efficienza Pagina 10

Esempio di un semplice S.O. (2) - Sequenza di operazioni: repeat leggi il pacco di schede compila carica esegui stampa i risultati until il calcolatore si ferma Pagina 11

Esempio di un semplice S.O. (3) - Compito del S.O. e` controllare la sequenza di passi e gestire i dispositivi di I/O (lettore di schede e stampante). - Trasforma il calcolatore in una macchina virtuale capace di compilare ed eseguire una sequenza di programmi. Pagina 12

CR e LP possono essere in ogni istante in uno dei tre stati: LIBERO, PRONTO, OCCUPATO - Lo stato di CR dipende da: interruttore, comando, pacco di schede (deck) - Lo stato di LP dipende da: interruttore, comando LP start com stato CR start deck com stato 0 0 0 LIBERO 0...3 0 0,1 0,1 LIBERO 1 0 1 LIBERO 4 1 0 0 LIBERO 2 1 0 PRONTO 5 1 0 1 LIBERO 3 1 1 OCCUP. 6 1 1 0 PRONTO 7 1 1 1 OCCUP. Pagina 13

Programmi di controllo I/O a) Lettura di un pacco di schede INDCR = indirizzo dell'area di memoria riservata, destinata a contenere le informazioni sulle schede SL = contatore del numero di schede lette IC2 = indirizzo corrente dell'area di memoria Pagina 14

programma di controllo CR: fissa INDCR SL := 0 IC2 := INDCR attendi fino a che CR diventa PRONTO repeat invia comando (IC2) /* leggi scheda */ SL := SL + 1 calcola il nuovo indirizzo IC2 attendi mentre CR e` OCCUPATO until CR diventa LIBERO Pagina 15

Programmi di controllo I/O b) Stampa di linee INDLP = indirizzo di inizio dell'area di memoria contenente le linee da stampare LS = contatore linee da stampare IC1 = indirizzo corrente area di memoria Pagina 16

programma di controllo LP: IC1 := INDLP repeat attendi fino a che LP PRONTA invia comando(ic1) /* stampa una linea */ LS := LS - 1 calcola nuovo indirizzo IC1 until LS = 0 Pagina 17

Programmi di controllo I/O Osservazioni: - In entrambi i programmi compaiono delle fasi di attesa che dipendono dalla diversa velocità della CPU che esegue il programma di controllo nei confronti dei dispositivi. - Si è introdotta una forma di sincronizzazione tra due dispositivi di per sé asincroni. Pagina 18

Programmi di controllo I/O Prestazioni del S.O. (1) - La notevole differenza di velocità tra CPU e dispositivi periferici fa sì che i programmi di controllo trascorrano la maggior parte del loro tempo in attesa. - I tempi legati all'accesso alla memoria principale per depositare i caratteri della scheda (80) o prelevare i caratteri della linea (120) (a cura dei processori dei dispositivi) sono trascurabili Pagina 19

Programmi di controllo I/O Prestazioni del S.O. (2) - E' l'attesa dell'esecuzione fisica del comando da parte del dispositivo che rallenta i programmi di controllo di I/O del S.O. Pagina 20

- Esempio: LP istruzioni macchina inizializzazione 2 attesa fino a che LP pronta? invia comando 5 decrementa LS 2 calcola nuovo indirizzo 5 test su LS 2 N.B.: tecnologia 1976 (oggi: processor clock > 2 GHZ) Pagina 21

- Il tempo di esecuzione medio di una istruzione macchina, assumendo un tempo di ciclo di 1 usec, e` circa 2,5 3 usec - Il controllo della stampa di una linea richiede circa 45 usec - Velocita` di stampa: 20 linee / secondo - Tempo di stampa di una linea: 1/20 sec = 50000 usec Pagina 22

Prestazioni - Il tempo necessario per eseguire n programmi è: t = I + CLE + O dove: I = somma dei tempi di input CLE = somma dei tempi per: compile, load, execute O = somma dei tempi di output Pagina 23

- Il throughput è: n n throughput = -------- = ---------------------- t I + CLE + O - Per migliorare il throughput occorre sovrapporre le tre fasi I, CLE, O nel tempo - Tale sovrapposizione richiede che i dispositivi periferici e la CPU operino in modo il più possibile indipendente. Pagina 24

Sovrapposizione tra ingresso e uscita i 1 c 1 o 1 i 2 c 2 o 2 i 3 c 3 o 3 i 4 c 4 o 4 - throughput di un sistema seriale: n t = n n = CLE + I + O n CLE + k= 1 ( ik + ok ) Pagina 25

Sovrapposizione tra ingresso e uscita i 1 c 1 o 1 i 2 c 2 o 2 i 3 c 3 o 3 i 4 c 4 o 4 i 1 c 1 o 1 i 3 c 3 o 3 Fasi di elaborazione i 2 c 2 o 2 i 4 c 4 o 4 Tempo risparmiato Fasi di I/O Pagina 26

- throughput di un sistema con sovrapposizione di I/O: mk = max(ik+1, Ok) k = 1,2,...,n-1 tempo di I/O: M = i 1 + n 1 k = 1 + mk on n n throughput: --- = ------------ t CLE + M Pagina 27

Programma di controllo I/O (1) - Per raggiungere l'obiettivo della sovrapposizione dell'ingresso di un programma con l'uscita di un altro occorre un unico programma di controllo di I/O, IOC (input-output control). - IOC invia comandi ad ogni dispositivo PRONTO ed attende solo quando tutti i dispositivi sono OCCUPATI. Pagina 28

Programma di controllo I/O (2) - Il programma riceve come dati di ingresso il numero di linee da stampare e l'indirizzo di memoria in cui sono contenute. - Il programma termina quando tutte le linee sono stampate e CR è vuoto (LIBERO). - A differenza del caso precedente, il programma non attende se uno dei dispositivi è PRONTO, ma lo utilizza. Pagina 29

Programma IOC INDLP = indirizzo di inizio area di memoria contenente le linee da stampare INDCR = indirizzo di inizio area di memoria in cui inserire le schede dati IC1 = indirizzo corrente relativo a INDLP IC2 = indirizzo corrente relativo a INDCR Pagina 30

programma IOC: fissa INDCR IC1 := INDLP, IC2 := INDCR SL := 0 repeat attendi mentre CR and LP OCCUPATI if CR PRONTO then invia comando (IC2) SL := SL + 1 calcola il nuovo indirizzo IC2 fi if LP PRONTO then invia comando(ic1) LS := LS - 1 calcola nuovo indirizzo IC1 fi until LS = 0 and CR LIBERO Pagina 31

Funzionamento con sovrapposizione delle attività di I/0 - Programma di controllo del sistema di calcolo da parte del S.O.: LS := 0 repeat fase di I/O fase di elaborazione until halt if SL > 0 then compile; load; execute fi Pagina 32

Osservazioni: - Le due fasi, I/O ed elaborazione, sono sequenzializzate - La fase di attesa della CPU per il completamento delle operazioni di I/O si è ridotta ma è comunque presente (si ha attesa quando entrambi i dispositivi sono occupati) - Si tratta inoltre di un attesa attiva (busy waiting) che disturba l'accesso dei processori dei dispositivi di I/O alla memoria - Per migliorare ulteriormente le prestazioni del sistema è necessario sovrapporre le fasi di I/O e di elaborazione Pagina 33

Sovrapposizione attività CPU e I/O (1) - Il coinvolgimento della CPU nelle operazioni di I/O è modesto. - Per migliorare le prestazioni occorre che durante le fasi di attesa dei programmi di controllo (in cui viene completata l'esecuzione degli specifici comandi di I/O), la CPU possa eseguire altri programmi. - Occorre cioè sovrapporre anche la attività della CPU con le operazioni di I/O. Pagina 34

Sovrapposizione attività CPU e I/O (2) - Nello schema proposto (programma IOC) la sovrapposizione non è possibile perchè la CPU si dedica alla esecuzione dei programmi di controllo I/O, rimanendo comunque impegnata (in busy waiting) per l'intera durata della più lunga tra le operazioni di I/O. - La gestione delle operazioni di I/O richiede peraltro il contributo della CPU per l'invio dei comandi ai dispositivi. Pagina 35

Sovrapposizione attività CPU e I/O (3) - La sovrapposizione potrebbe essere ottenuta inserendo nei programmi, ad intervalli regolari, la richiesta di esecuzione dei programmi di controllo. Questa soluzione è inaccettabile perchè fa ricadere sul programmatore un compito del S.O. - La soluzione si ha attraverso il concetto di interruzione, realizzato tramite hardware. Pagina 36

Interruzione da dispositivo (1) - E' un segnale hardware inviato da un dispositivo di I/O alla CPU per indicare che un comando è stato eseguito D 1 CPU Memoria D 3 dati comandi interruzioni D 2 D 4 Pagina 37

Interruzione da dispositivo (2) Ciclo base di Fetch-Execute in assenza di interruzioni : repeat IR := M[PC] PC := PC + 1 execute(istruz. in IR) until CPU halt Pagina 38

Modello di comportamento dell'interruzione da dispositivo - Si può supporre che nella CPU sia contenuto un vettore di bit (registro di richieste di interruzione - IRR) in cui ogni bit memorizza l'interruzione di un particolare dispositivo. Pagina 39

- Il ciclo di Fetch-Execute diventa: repeat if IRR = 0 then IR := M[PC] PC := PC + 1 else IR := M[0] fi execute(istruz. in IR) until CPU halt - M[0] è l indirizzo in memoria di una procedura, chiamata interrupt routine Pagina 40

L azione della interrupt routine è la seguente: interrupt procedure: begin salva lo stato del programma interrotto; x := indice del bit che ha causato l'interruzione; IRR[x] := 0; /* azzera il bit di richiesta x-esimo */ chiama il programma di controllo x-esimo; ripristina lo stato; continua il programma interrotto; end Pagina 41

Interrupt da timer e gestione a polling dell'i/o (1) - In alternativa alla gestione ad interrupt dei singoli dispositivi, è possibile utilizzare un unico interrupt periodico generato da un timer hardware (real-time clock) con frequenza programmabile dal S.O. - La routine di servizio dell'interrupt andrà ad esaminare le condizioni di attivazione dei programmi di controllo I/O, provvedendo eventualmente ad effettuarne la chiamata. Pagina 42

Interrupt da timer e gestione a polling dell'i/o (2) - Le variabili dei programmi di controllo I/O non sono inizializzate ad ogni attivazione del programma, ma vengono trattate come variabili globali. Ad esempio il programma di controllo del CR quando attivato usa il valore corrente di SL. - Ogni programma di controllo I/O può essere scritto ed eseguito indipendentemente dagli altri, pur mantenendo la sovrapposizione tra elaborazione e gestione dell'i/o. Pagina 43

timer interrupt procedure: begin salva lo stato del programma interrotto; if CR READY then call CR_control fi ; if LP READY and LS > 0 then call LP_control fi ; ripristina lo stato; continua il programma interrotto; end Pagina 44

LP_control: begin end Programmi di controllo I/O (con timer interrupt) invia comando(ic1) LS := LS - 1 calcola nuovo indirizzo IC1 CR_control: begin end invia comando (IC2) SL := SL + 1 calcola il nuovo indirizzo IC2 - Lo schema che fa uso di un unico interrupt da timer è particolarmente semplice: è sufficiente un unico livello di interruzione. Pagina 45

E semplice, ma è meno efficiente rispetto all'impiego di interrupt da dispositivi: - Può accadere che nessuna delle condizioni di attivazione sia verificata. Si ha pertanto un overhead dovuto (più che alla valutazione delle condizioni) al salvataggio e ripristino del programma interrotto. - Un dispositivo può rimanere in attesa del comando successivo (al più per un periodo del real-time clock). Pagina 46