Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Elettrica e Meccanica Sommario FONDAMENTI DI INFORMATICA 1 Breve storia dell’informatica e dei calcolatori elettronici Calcolatori elettronici come esecutori di algoritmi Architettura di Von Neumann http://www.diee.unica.it/~marcialis/FI1 A.A. 2010/2011 Docente: Gian Luca Marcialis ARCHITETTURA DEI CALCOLATORI SISTEMI OPERATIVI la memoria centrale l’unità centrale di elaborazione (CPU) i dispositivi di ingresso e uscita il bus di sistema estensioni dell’architettura di Von Neumann Il Sistema Operativo: cenni Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis La preistoria (metodi e modelli teorici) Breve storia dell’informatica La storia dell’informatica non inizia con quella del suo strumento principale (il calcolatore), nel XX secolo, ma ha radici in discipline molto antiche come l’aritmetica Si può considerare la sua evoluzione da tre punti di vista metodi e modelli teorici alla base della disciplina strumenti hardware (calcolatori, reti,...) e software (sistemi operativi, linguaggi di programmazione,...) applicazioni Informatica: disciplina dell’elaborazione rigorosa dell’informazione Primi elementi di informatica si trovano in: precisa e Euclide, 300 a.C. circa (es.: algoritmo per il calcolo del MCD) Aristotele , 384-322 a.C. (es.: sillogismi, codifica rigorosa di alcuni sistemi di ragionamento umano) XX sec.: assiomatizzazione dell’aritmetica (G. Peano) e definizione di Algebra Booleana (G. Boole) anni ’30 (XX sec.): sviluppo della teoria degli algoritmi e della loro esecuzione automatica (Church, Gödel, Turing) 3 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis 2 4 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis La preistoria (i primi strumenti meccanici) Gli anni ’30 - ’50: l’era dei Colossi Anni ’30 - ’40 Primi calcolatori meccanici: XVII sec. Pascal (1642): addizione e sottrazione Leibniz (1700): le 4 operazioni fondamentali Nuove idee solo 150 anni più tardi! Babbage (1834): “motore analitico” (a vapore), un calcolatore programmabile, capace di eseguire istruzioni elementari per risolvere diversi problemi XX sec.: inizia l’era calcolatori general purpose uno stesso calcolatore può essere programmato per svolgere compiti diversi (es. elaborazione testo, calcoli scientifici, posta elettronica, ecc.) 1936: primo calcolatore elettromeccanico (funzionante con relé) 1943: primo calcolatore elettronico (valvole termoioniche): il Colosso Mark I, progettato per la decifratura del codice Lorenz 1946: ENIAC - J. Von Neumann per applicazioni militari (calcoli balistici): è considerato il primo calcolatore moderno Anni ’50 applicazione principale: calcoli numerici per elaborazioni scientifiche limitazioni fisiche: tecnologia delle valvole elettroniche sviluppo dei linguaggi Assembler e dei primi linguaggi di alto livello 5 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Gli anni ’60 e ’70: dal salone alla scrivania Gli anni ’80 e ’90: dalla scrivania alla tasca Anni ’60 Anni ’80 nuovi metodi di progettazione del software (Ingegneria del Software) tecnologia dei semiconduttori (minori dimensioni dei calcolatori, maggiore affidabilità) sviluppo dei primi Sistemi Operativi e sistemi di gestione di basi di dati strumenti di sviluppo per harware e software elaborazione distribuita − interazione tra tecnologia informatica e telecomunicazioni: nascita della telematica nuove applicazioni: controllo dei processi industriali, calcolatori embedded (centraline elettroniche per auto, elettrodomestici ecc.) Anni ’70 rapido sviluppo dell’hardware (maggiore potenza di calcolo, riduzione di costi e dimensioni): primi personal computer linguaggio C, sistema operativo Unix applicazioni diverse da quelle scientifiche Anni ’90 reti di calcolatori, Internet rapida obsolescenza dei hardware e software 7 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis 6 prodotti Finalmente il 2000… Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis 8 Definizione di algoritmo Algoritmi e programmi Sequenza precisa (comprensibile) di passi elementari che consentono di realizzare un compito passi elementari: eseguibili dall’esecutore dell’algoritmo es.: istruzioni di montaggio di un mobile, prelevamento di denaro da un terminale Bancomat, calcolo del massimo comun divisore di due numeri naturali... Compito principale di un calcolatore: esecuzione di un algoritmo espresso sotto forma di programma programma: sequenza di operazioni elementari (direttamente eseguibili dal calcolatore) su dati codificati in forma binaria Ogni calcolatore mette a disposizione un certo numero (finito) di operazioni elementari su dati rappresentati in codifica binaria Qualsiasi algoritmo deve essere espresso come sequenza di operazioni elementari effettivamente eseguibili dal calcolatore (programma) es.: molti calcolatori non forniscono l’operazione di estrazione della radice quadrata, ma solo le operazioni di somma e prodotto; l’estrazione della radice quadrata deve essere espressa come sequenza di somme e prodotti 9 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis 10 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Architettura di un calcolatore Architettura di Von Neumann Con il termine “architettura” di un calcolatore intenderemo l’insieme delle parti e delle loro interconnessioni che consentono determinate funzionalità “visibili” al programmatore Es. un calcolatore mette a disposizione un’operazione per fare la somma di due numeri. Questa operazione fa parte dell’architettura del calcolatore e potrà essere usata dal programmatore L’architettura astrazione può essere vista a vari livelli di Livello puramente “fisico”: unità centrale, tastiera, monitor, disco Livello “logico” (nel senso “non fisico”) o delle istruzioni: architettura di Von Neumann 11 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Bus di sistema CPU Memoria centrale Periferica1 (I/O) Periferica2 (I/O) ... Dispositivi di ingresso e uscita (I/O) 12 Componenti dell’architettura di Von Schema di funzionamento della macchina di Von Neumann Neumann Memoria centrale I programmi sono composti da istruzioni codificate in binario: contiene i programmi in esecuzione e i dati su cui operano Unità di elaborazione (Central Processing Unit, CPU) contiene i dispositivi elettronici in grado di eseguire le istruzioni (operazioni elementari) del programma, e di coordinare il funzionamento dell’intero calcolatore Periferiche dispositivi che permettono l’ingresso e l’uscita (I/O) delle informazioni (dati e programmi). Es.: tastiera, monitor, stampante, ecc. istruzioni di elaborazione (ad es. operazioni numeriche) istruzioni di trasferimento di dati tra due componenti della macchina Il funzionamento della macchina di Von Neumann è un ciclo continuo: la CPU estrae le istruzioni dalla memoria principale... ...le decodifica (determina l’operazione da eseguire e i gli operandi)... ...e le esegue Bus di sistema collega i diversi componenti dell’architettura 13 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Il modulo di memoria La memoria centrale Quattro livelli: Registri, capaci di memorizzare parole singole − Tipicamente dati “in transito” relativi ad un particolare dato o istruzione in esecuzione Memoria cache − Area di memoria ad accesso rapido finalizzata a contenere istruzioni e dati usati più frequentemente Memoria centrale o primaria − Contiene istruzioni e dati del programma in esecuzione Memoria secondaria − Fa parte dei moduli periferici 15 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis 14 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Conserva le istruzioni e i dati dei programmi in esecuzione Dati memorizzati in bit (binary digit): ogni unità elementare di memoria contiene un’informazione di tipo binario: 1 oppure 0 realizzazione mediante dispositivi fisici a due stati (transistor a semiconduttori, due livelli di tensione) E’ organizzata come sequenza di celle o parole: Parola: insieme di più byte (una potenza di 2: tipicamente 1, 2, 4, 8) Byte: insieme di 8 bit Ogni cella è individuata da un indirizzo: numero che indica la posizione relativa rispetto alla prima cella, che ha indirizzo 0 Parallelo tra: − Indirizzo == numero di collocazione in una biblioteca − Cella == scaffale corrispondente alla collocazione − Contenuto (Dato) == libro Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis 16 Struttura della memoria centrale Capacità della memoria Con un registro indirizzi di k bit, si possono indirizzare 2k parole di memoria: gli indirizzi vanno da 0 a 2k-1 Può essere pensata come una tabella: ogni riga corrisponde ad una “word” il numero di colonne è pari al numero di bit componenti la “word” Es.: memoria con parole da un byte (8 bit) Indirizzo delle celle 000 (0) 001 (1) 010 (2) 011 (3) 100 (4) ... bit 7 6 5 4 3 2 1 0 es.: k=10: 210 = 1024 celle (una kilo-parola) k=20: 220 = 1048576 celle (una mega-parola) La capacità della memoria si misura sempre in byte (non si esprime in “parole”, che, a seconda della memoria, possono avere dimensioni differenti) es.: k=10, parole di 2 byte: 2⋅210=211=2048 byte (2 kilo-byte) k=20, parole di 4 byte: 4⋅220=22⋅220=222=4194304 byte (4 mega-byte) 17 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Caratteristiche della memoria centrale Velocità di accesso elevata: decine di ns (10-9 sec) Tempo di accesso indipendente dalla posizione del dato nella memoria RAM: Random Access Memory si contrappongono alle memorie ad accesso sequenziale, come i nastri magnetici Dimensione limitata: oggi alcuni GB 230 byte = 1073741824 byte ≅ 109 byte (un giga-byte) L’informazione viene persa se l’alimentazione elettrica (volatilità) 18 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis si interrompe Memorie RAM e ROM Un valore può essere memorizzato/recuperato dalla memoria specificando l’indirizzo il tempo di accesso è indipendente dall’indirizzo (ecco perché il nome di RAM) Memorie ROM (Read Only Memory) sono memorie di sola lettura, pre-impostate dal fabbricante sono di fatto memorie RAM (ROM e RAM non sono termini contrapposti!) ma non sono volatili tipicamente contengono le istruzioni per l’avvio del calcolatore (firmware) sono usate anche in auto, elettrodomestici, ecc. 19 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis 20 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Il processore Insieme di istruzioni di una CPU Il Processore (CPU, Central Processing Unit) contiene tre elementi funzionali: Unità di controllo: − − − − recupera le istruzioni dalla memoria centrale decodifica le istruzioni preleva i dati necessari e li trasferisce alle unità coinvolte nell’esecuzione invia i segnali di controllo alle unità coinvolte nell’esecuzione Unità Aritmetico-Logica (ALU, Arithmetic and Logic Unit) − Modulo capace di eseguire un certo insieme di operazioni aritmetiche e logiche Orologio (clock) di sistema − sincronizza le operazioni di tutto il sistema − la frequenza di clock vincola il numero di istruzioni che possono essere eseguite dal calcolatore Istruzioni di calcolo operazioni aritmetiche (somma, sottrazione, prodotto, divisione ecc.) operazioni logiche (algebra booleana) L’elaborazione dei dati avviene nella ALU Una ALU è in grado di eseguire un insieme di operazioni predefinito (in fase di progetto) su dati codificati in binario Istruzioni di prelievo dati dalla memoria o dalle periferiche Istruzioni di trasferimento dati su memoria o su periferiche I programmi eseguibili dal calcolatore sono espressi come sequenza di istruzioni codificate in binario, ognuna corrispondente ad una delle operazioni precedenti linguaggio macchina 21 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis 22 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Esecuzione di un programma: funzionamento elementare Ciclo di esecuzione: i registri coinvolti Si carica in memoria centrale il programma in codice binario il programma occupa una sequenza contigua di “word” di memoria Ogni istruzione è sottoposta, sequenzialmente, a un “ciclo di esecuzione” L’ultima istruzione indica esplicitamente il termine delle operazioni (“halt”) Modulo di memoria MAR = Memory Address Register − Contiene l’indirizzo del dato (istruzione/operando) da prelevare/scrivere MBR = Memory Buffer Register − Contiene il dato (istruzione/operando) da leggere/scrivere Modulo di controllo PC = Program Counter − Contiene, all’istante t, l’indirizzo dell’istruzione da eseguire all’istante successivo IR = Instruction Register − Contiene, all’istante t, l’istruzione in esecuzione 23 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis 24 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Un semplice esempio in “linguaggio macchina” Ciclo di esecuzione delle istruzioni Prelievo (“fetch”) delle istruzioni Disponiamo di un modulo di memoria ad 8 indirizzi Supponiamo che la nostra architettura disponga delle seguenti istruzioni La CPU legge un’istruzione dalla memoria PC MAR Memoria MBR IR PC PC + 1 Interpretazione delle istruzioni L’istruzione viene decodificata per determinare quale azione è stata richiesta Il sistema “separa” l’azione dagli operandi Prelievo (“fetch”) dei dati L’esecuzione dell’istruzione potrebbe richiedere dei dati dalla memoria o da un dispositivo di I/O Elaborazione dei dati Può essere richiesta l’esecuzione di operazioni aritmetiche o logiche sui dati. I valori degli operandi sono trasferiti in registri locali della ALU Scrittura dei dati Load X Carica in un registro di servizio (SR) il valore all’indirizzo X Add Y Somma al contenuto di SR il valore all’indirizzo Y Store X Memorizza il contenuto di SR nell’indirizzo X Halt il ciclo di esecuzione termina Si può richiedere di trasferire i dati elaborati in memoria o ad un modulo di I/O. Registri locali ALU MBR Memoria Passaggio all’istruzione successiva 25 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Ciclo di esecuzione delle istruzioni: prelievo della prima istruzione Un semplice esempio in linguaggio macchina Scriviamo un algoritmo per la somma di due numeri A e B che sono memorizzati rispettivamente in 100 e 101, e vogliamo che la somma sia memorizzata in 110 Una possibile soluzione è: Load 100 (carico in SR il valore di A) Add 101 (gli sommo il valore di B) Store 110 (memorizzo il risultato in 110) Halt (l’algoritmo termina) Il programma viene caricato nella memoria centrale a partire dalla prima locazione disponibile Parte quindi il ciclo di esecuzione delle istruzioni 27 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis 26 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Load 100 000 Add 101 001 Store 110 010 Halt 011 50 100 250 101 110 111 MAR PC 000 000 001 SR MBR Load 100 Modulo di memoria Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis IR Load 100 CPU ALU 28 Ciclo di esecuzione delle istruzioni: intepretazione della prima istruzione Ciclo di esecuzione delle istruzioni: prelievo dell’operando, elaborazione e risultato IR Load 100 Codice operativo: viene identificata una sequenza di segnali appropriata per attivare il trasferimento dati da memoria a registro E’ l’indirizzo dell’operando, verrà prelevato nella fase successiva 000 Load 100 001 Add 101 010 Store 110 011 Halt SR 100 50 50 101 250 110 111 29 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis MAR PC 100 001 MBR 50 Modulo di memoria CPU ALU 30 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Esercizio Soluzione Provate ad applicare gli stessi passaggi precedenti per capire come vengono prelevate, interpretate ed eseguite, le istruzioni successive In particolare, l’istruzione ADD Il prelievo dell’istruzione è esattamente identico al caso precedente L’interpretazione richiede la separazione del codice operativo (ADD) dall’operando Il prelievo dell’operando è ancora simile al caso precedente La differenza risiede nella fase di elaborazione 31 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis IR Load 100 32 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Elaborazione di ADD e risultato Dispositivi di ingresso e uscita (I/O) 000 Load 100 001 Add 101 010 Store 110 011 Halt SR 100 50 50 101 250 110 111 MAR PC 101 010 MBR 250 Modulo di memoria Sono anche detti unità periferiche per sottolineare il loro ruolo di completamento delle funzioni di base della CPU IR Add 101 CPU 300 ALU unità di memorizzazione secondaria, non volatile (dischi, nastri) unità per l’ingresso dei dati (tastiera, mouse, schede di acquisizione dati, microfono, telecamera, ecc.) unità per l’uscita (video, stampante, plotter, dispositivi audio, ecc.) unità per il collegamento ad altri calcolatori (scheda di rete, modem, ecc.) 34 33 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Esempio: l’hard disk Unità di memorizzazione secondaria Servono per archiviare in modo permanente programmi e dati (su supporti non volatili) dischi magnetici, ottici (CD-ROM) e magneto-ottici nastri magnetici Rispetto alla memoria principale: elevata capacità di memorizzazione, bassa velocità di accesso, basso costo E’ un piatto circolare di metallo, o di plastica, ricoperto con materiale magnetico. Il meccanismo di lettura/scrittura è una spira conduttrice detta testina. Durante un’operazione di lettura/scrittura la testina è ferma sopra il piatto che ruota. l’accesso avviene per mezzo di organi meccanici tempo di accesso a un disco dell’ordine dei ms (10-3 sec.), tempo d’accesso alla memoria centrale dell’ordine dei ns! (10-9 sec.) il tempo d’accesso varia a seconda della posizione del dato nel dispositivo di memorizzazione: non sono RAM! 35 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis 36 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Interfacce interne Interfacciamento di unità periferiche EIDE o SCSI (collegamento con “flat cable”) Hard Disk / CDROM / DVD Le periferiche hanno caratteristiche molto diverse tra loro velocità di trasferimento − es.: un monitor richiede una quantità di dati molto maggiore rispetto ad una stampante, nell’unità di tempo operazioni di I/O eseguibili Il trasferimento di dati e istruzioni fra CPU e periferiche avviene per mezzo di elementi circuitali detti interfacce fanno parte del calcolatore, non della periferica contengono registri (insiemi di bit per memorizzazione temporanea di informazioni) per inviare comandi alla periferica, scambiare dati e controllare lo stato della periferica 37 Connettore floppy (“flat cable”) Floppy Disk Slot PCI (Peripheral Component Interconnect) Schede varie (rete, audio, modem interno, grafica) Slot AGP (Accelerated Graphic Port) Scheda grafica 3D Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis 38 Il bus di sistema Interfacce esterne Insieme di connessioni elementari (linee) lungo le quali viene trasferita l’informazione ogni linea trasporta un bit Collega il processore, la memoria e le interfacce di I/O In ogni istante di tempo (intervallo di clock) il bus è dedicato a collegare due unità: una trasmette, l’altra riceve Di norma è sotto il controllo del processore (master), che seleziona le unità di elaborazione (slave) da collegare 40 39 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Limiti dell’architettura di von Neumann Il bus di sistema (cont.) Tre insiemi di linee funzionalmente distinte: Bus dati: l’insieme di linee impiegate per trasmettere i dati tra due unità; il numero di linee è di norma pari al numero di bit di una parola di memoria (ad es. 32, 64 bit) Bus indirizzi: l’insieme di linee impiegate per trasmettere l’indirizzo del dato che si deve trasferire (ad es. l’indirizzo della cella di memoria che contiene l’istruzione da trasferire al processore, ecc.); l’ampiezza è pari a quella del registro indirizzi del processore Bus controlli: l’insieme di linee impiegate per trasmettere i codici di controllo della trasmissione (ad es. i segnali di controllo della CPU per l’esecuzione delle operazioni della ALU, ecc.) Limite principale: stretta sequenzialità delle operazioni Esecuzione delle istruzioni tre fasi: prelievo, decodifica, esecuzione; ma durante la decodifica l’unità preposta al prelievo resta inattiva, e durante l’esecuzione resta inattiva anche quella preposta alla decodifica... Esecuzione dei programmi le istruzioni vengono eseguite una alla volta, ma potrebbero esserci gruppi di istruzioni che potrebbero essere eseguite in parallelo da processori diversi …oppure gruppi di istruzioni che si ripetono frequentemente Dialogo con le periferiche sono di norma molto più lente del processore, che resta a lungo inattivo durante il trasferimento di dati... 41 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Estensioni dell’architettura di Von Neumann Motivazioni dell’uso delle gerarchie di memoria Negli anni sono state introdotte diverse modifiche all’architettura, per sfruttare varie forme di parallelismo Ciclo di esecuzione delle istruzioni condotto in parallelo (pipelining): architetture CISC e RISC Aggiunta di unità dedicate − calcoli in virgola mobile (Floating Point Unit, FPU, all’interno della ALU) o per la grafica su video − per operazioni di I/O (interfacce intelligenti) • es.: Direct Memory Access (DMA): l’interfaccia trasferisce i dati direttamente in memoria principale anzichè al processore Architetture multiprocessore Capacità Velocità e costo CPU Memoria Cache Memoria Primaria Disco (Memoria Secondaria) − Intel Core 2 Duo, Core 2 Quad, AMD Phenom Uso di gerarchie di memoria − memorie caratterizzate da costi e prestazioni crescenti (e quindi dimensioni decrescenti); ad es. disco, memoria centrale, cache 43 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis 42 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis • Purtroppo, le esigenze di basso costo, alta capacità e velocità sono in contrasto fra loro • Utilizzare gerarchie di memorie è un compromesso finalizzato a equilibrare tali esigenze perché consente di virtualizzare la memoria 44 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis La “virtualizzazione” della memoria Un esempio Dare all’utente la sensazione di una memoria “grande” e “veloce” Principio di località: Consideriamo il vecchio algoritmo per la conversione binario-decimale: Durante l’esecuzione di un programma, in un breve intervallo di tempo, è probabile che: − Si acceda a dati ed istruzioni contenuti in locazioni di memoria contigue (“cluster” di locazioni) Vengano eseguite istruzioni contenute in locazioni vicine a quella dell’istruzione corrente Queste istruzioni vengano ripetute nel tempo Alla virtualizzazione della memoria concorre anche il sistema operativo nel rapporto memoria centrale/memoria di massa i=0; X = 0; Ripeti − X = X + bi * 2i −i=i+1 Finché i < N Le coppia Ripeti-Finché e le istruzioni all’interno vengono eseguite N volte nel tempo (località temporale) e sono anche contigue (località spaziale) 45 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Realizzazione della memoria virtuale Esempio di uso della gerarchia Si connettono tra loro memorie con caratteristiche diverse, costituenti diversi “livelli” della gerarchia (dal più alto al più basso): Memoria Cache: capacità bassa (centinaia di KB), tempi di accesso bassi (nsec) Memoria Primaria: capacità alta (centinaia di MB), tempi di accesso alti (decine di nsec) Disco: capacità molto alta (centinaia di GB), tempi di accesso molto alti (msec) La cache contiene le istruzioni e i dati usati più di frequente L’informazione viene prima cercata in cache La ricerca passa via via ai livelli più bassi della gerarchia se l’informazione non viene trovata, e viene quindi trasferita nelle memorie di livello più alto Da cache a primaria, da primaria a disco Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis 46 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Riprendiamo l’algoritmo per la conversione binariodecimale Abbiamo visto che le istruzioni dentro Ripeti-Finché vengono eseguite N volte Supponiamo che il prelievo di un dato dalla memoria centrale richieda 50 nsec Il prelievo di un dato dalla memoria cache richieda 5 nsec 47 48 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Non uso gerarchie: tutto rimane in memoria primaria Uso gerarchie: copio Ripeti-Finché in cache Consideriamo il vecchio algoritmo per la conversione binario-decimale: i=0; X = 0; Ripeti − X = X + bi * 2i −i=i+1 Finché i < N 50 nsec 50 nsec 50 nsec * N Consideriamo il vecchio algoritmo per la conversione binario-decimale: i=0; X = 0; Ripeti − X = X + bi * 2i −i=i+1 50 nsec * N 50 nsec * N 50 nsec * N Finché i < N 50 nsec 50 nsec 5 nsec * N 5 nsec * N 5 nsec * N 5 nsec * N 49 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Esempio di uso della gerarchia Il Sistema Operativo (SO) E’ evidente che riusciamo a risparmiare molto tempo usando una gerarchia di memoria, tanto più quanto è grande N N=100 T(memoria centrale) = 2*50+4*50*100=20100 nsec Insieme di programmi (software) con le seguenti funzioni gestire le risorse (hardware) del calcolatore in modo corretto, efficiente e sicuro fornire agli utenti e ai programmatori un'interfaccia semplificata con l'hardware Risorse del calcolatore − Ciclo Ripeti-Finché in centrale tutti i componenti hardware necessari per l'esecuzione dei programmi: T(cache+centrale) = 2*50+4*50+4*5*99=2280 nsec − memoria centrale, processore, periferiche, ecc. − Prima iterazione del ciclo Ripeti-Finché in centrale − Iterazioni successive del ciclo Ripeti-Finché in cache Interfaccia utente\hardware insieme di funzionalità software che "nascondono" agli utenti i dettagli dell'hardware (ad es., I\O su memoria secondaria) Risparmio di circa il 88% del tempo 51 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis 50 52 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Sistema operativo come gestore delle risorse Architettura a livelli del SO Gestione corretta, efficiente e sicura delle risorse correttezza: l'accesso a qualsiasi risorsa hardware è permesso solo al SO; ad es., si evitano errori nelle routine di gestione dell'hardware (non è necessario per i programmatori conoscere i dettagli del funzionamento delle periferiche, ecc.) efficienza: le risorse (ad es. memoria, CPU, stampanti) sono limitate, e devono essere condivise tra diversi utenti e programmi sicurezza: gli utenti non hanno il controllo diretto dell'hardware; il SO utilizza meccanismi di protezione per evitare "interferenze" tra utenti diversi e tra utenti e lo stesso SO 53 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Schema dell'architettura a livelli del SO Gli utenti possono interagire solo con la shell del SO ad es.: lanciare un programma, visualizzare il contenuto di una directory, ecc. Applicazioni e programmi utente maschera le caratteristiche dell'hardware sottostante, e offre ai livelli superiori un insieme ben definito di funzionalità software nei sistemi multiutente, offre a ciascun utente l'illusione di una macchina dedicata: ogni utente è isolato dagli altri I diversi livelli sono indipendenti tra loro se un livello viene modificato ma mantiene le stesse funzionalità, l'interfaccia verso i livelli superiori non cambia: questi livelli non devono 54 essere modificati Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Architettura a livelli del SO Gestore dei processi (programmi in esecuzione) condivisione della CPU tra i vari processi (concorrenza) gestione delle fasi di attesa per operazioni di I\O Gestore della memoria principale Interprete dei comandi (shell) allocazione della memoria tra i diversi processi Gestore delle periferiche Gestore del File System (memoria secondaria) Gestore delle periferiche (I\O) Gestore della memoria principale Gestore dei processi Hardware 55 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Un moderno SO è organizzato a livelli (progettazione modulare) Ogni livello si occupa di gestire una parte dell'hardware Ogni livello realizza una macchina virtuale insieme di programmi (driver) che gestiscono le operazioni di I\O con le periferiche Anch’esse risultano come macchine “dedicate” I dettagli HW-SW sono mascherati agli utenti, che si trovano a comunicare con esse attraverso primitive ad alto livello (leggi/scrivi) 56 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Gestione dei processi Architettura a livelli del SO (cont.) Processo: programma in esecuzione (entità dinamica) Gestore del file system organizza la memoria di massa (secondaria) gerarchicamente in file e directory gestisce le operazioni sui file (creazione, scrittura, lettura, ecc.) Interprete dei comandi (shell) è l'interfaccia tra il calcolatore e gli utenti (a linea di comando o grafica) mette a disposizione un insieme di comandi, consentendo ad es. di lanciare l'esecuzione di programmi, "navigare" nel file system, ecc. Nei Sistemi Operativi è realizzato attraverso interfacce grafiche (Graphic User Interface, GUI), con le quali si semplifica il concetto dell’operazione da svolgere − Es. spostare un file nel cestino equivale a scrivere e far eseguire 57 da riga di comando un’istruzione del tipo “cancella il file” Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis programma (entità statica) contenuto della memoria centrale e dei registri della CPU (in particolare PC), e stato del processo (entità dinamiche) Ad un programma possono essere associati più processi − Es. Word: mentre scriviamo un documento (processo principale) ne facciamo stampare un altro (processo secondario) senza interrompere la scrittura Stati di un processo in esecuzione: la CPU sta eseguendo le istruzioni del programma associato (un solo processo in esecuzione in ogni istante su una CPU) in attesa: attendono il verificarsi di un evento "esterno" (I\O) pronti: possono passare in esecuzione quando la CPU si libera 58 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Diagramma dell'evoluzione dei processi Le informazioni sui processi pronti e in attesa sono mantenute in strutture dati dette “code”, proprio come le code di clienti in fila in un negozio. I “clienti” sono in questo caso i processi. Il “commesso” è la CPU. C’è una coda di processi “pronti” e una coda di processi “in attesa” Un processo “in esecuzione” è come il cliente che in un dato istante viene “servito” Un processo “pronto” è il cliente successivo Un processo “in attesa” è come il cliente che sta provando un capo d’abbigliamento (nel frattempo il commesso segue un altro cliente) Termine quanto di tempo Processo in esecuzione Primo processo pronto Fine esecuzione Processo Interruzione in attesa (richiesta di operazione I/O) Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis L'obiettivo del gestore dei processi è rendere efficiente l'uso della CPU condivisa da più processi: mantenere occupata la CPU per il maggior tempo possibile minimizzare tempi di attesa e di esecuzione dei processi Questi obiettivi sono in contrasto tra loro... Inizio esecuzione Es. se la CPU esegue un processo alla volta, riduciamo il tempo di esecuzione del processo, ma aumenta il tempo d'attesa e di esecuzione degli altri... Processo pronto Evento esterno atteso (I\O) Politiche di gestione della CPU ...è quindi necessario un compromesso, definendo i criteri di scelta di uno dei processi pronti da mandare in esecuzione (“schedulazione” dei processi) 59 60 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Deadlock o stallo (mi si è piantato il PC!) Gestione dei deadlock Molte risorse possono essere utilizzate da un solo processo alla volta CPU, stampanti, CD, scanner, ecc.: risorse esclusive Alcune di queste sono non “prerilasciabili” Algoritmo dello struzzo si ignora il problema: in caso di deadlock, il sistema viene riavviato è la soluzione più semplice, adatta per casi in cui il deadlock è molto raro Identificazione e risoluzione es.: la CPU sì, un masterizzatore di CD no! Spesso i processi hanno la necessità di utilizzare più di una risorsa es.: registrare su CD un documento acquisito da uno scanner identificare un deadlock può essere complesso risoluzione: forzare il rilascio di una o più risorse, o eliminazione di processi (CTRL+ALT+CANC per visualizzare il Task Manager di Windows NT\2000\XP) Prevenzione Il deadlock si verifica quando si verifica un’attesa circolare: un insieme di processi è in attesa di un insieme di risorse esclusive non prerilasciabili, tutte assegnate ad altri processi dell'insieme es. il processo A è in attesa del CD assegnato al processo B; il processo B61è in attesa dello scanner, già assegnato al processo A... Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis il SO tiene traccia dell'allocazione delle risorse e dei possibili stati di attesa circolare, impedendo che si verifichino è l'approccio più complesso 62 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Un esempio con Windows XP Gestione della memoria centrale Ogni processo occupa una parte della memoria centrale Problemi la memoria principale ha dimensioni ridotte: può contenere pochi processi bisogna evitare che un processo acceda a celle di memoria allocate ad altri processi (di altri utenti o del SO!) il programma associato ad ogni processo deve poter essere caricato a partire da un indirizzo qualsiasi, ma i programmi al loro interno devono fare riferimento ad indirizzi precisi (es.: operandi delle istruzioni)... 64 63 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Tecniche di allocazione della memoria: allocazione contigua Esempio di allocazione contigua 0 Ogni programma occupa una sequenza contigua di celle di memoria (area di memoria) Un nuovo programma viene allocato in una delle aree libere, se possibile Es.: si supponga che i primi 400 KB siano occupati dal SO, e che sia richiesta l'esecuzione di 5 processi utente, nell'ordine: Processo Memoria Word 600 KB Excel 1000 KB Outlook 300 KB Doom 2 700 KB Int. Explorer 500 KB Tempo (ore) 10 5 20 8 15 400 K 0 sistema operativo 400 K Word 400 K 1000 K 1000 K 1000 K Outlook Outlook 2300 K 2560 K Excel termina 65 0 sistema operativo 2300 K 2560 K alloca Doom 2 Internet Explorer Doom 2 Doom 2 2000 K Outlook sistema operativo 400 K 900 K 1000 K 1000 K 1700 K 2000 K 2000 K 2560 K 400 K Doom 2 Excel 2300 K 0 sistema operativo Word Word 2000 K (cont.) 0 sistema operativo 2000 K Outlook 2300 K 2300 K Outlook 2560 K 2560 K Word termina alloca I.E. Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis 66 Paginazione e segmentazione Problemi con allocazione contigua Frammentazione: possono esistere tante aree di memoria libere, nessuna in grado di contenere un intero processo Compattamento − Raggruppare le aree libere in un’unica più ampia potrebbe richiedere molto tempo 0 400 K 900 K 1000 K Tecniche di allocazione non contigua Paginazione Dopo Prima 0 sistema operativo Internet Explorer 400 K 900 K sistema operativo la memoria è divisa in blocchi i programmi sono divisi in pagine pagine e blocchi hanno tutti uguale dimensione le pagine di uno stesso programma possono occupare blocchi di memoria non contigui Il Sistema Operativo tiene traccia delle pagine fisiche allocate attraverso una “Page Map Table” assegnata ad ogni processo Internet Explorer Doom 2 Doom 2 Deframmentazione − Le aree occupate vengono riallocate in modo contiguo Alternativa: Allocazione non contigua Outlook 2000 K 2300 K Segmentazione Outlook 2560 K Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis 2560 K 67 i programmi vengono divisi in segmenti di lunghezza anche diversa, 68 che possono essere caricati in aree di memoria non contigue Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Un esempio di paginazione Word Pagina 0 Pagina 1 Pagina 2 Pagina 3 Excel Gestione della memoria virtuale Memoria fisica Sis. Op. Questo sistema permette di far eseguire programmi che occupano uno spazio di memoria superiore a qella della primaria A livello del Sistema Operativo, la virtualizzazione della memoria viene gestita utilizzando la paginazione su richiesta Blocco 1 Blocco 2 Si carica la pagina in memoria centrale solo quando “serve” − Swapping Blocco 3 Quando tutti i blocchi della memoria centrale sono occupati, occorre applicare opportune politiche di “thrashing”: − Quale pagina in memoria centrale deve essere rimpiazzata da quella da allocare? − Es. posso sostituire la pagina che è stata meno frequentemente chiamata in un certo lasso di tempo (Least Frequently Used), o più semplicemente applicare un algoritmo a rotazione (First In First Out, come per le code di processi) Blocco 4 Pagina 0 Blocco 5 Pagina 1 Blocco 6 Blocco 7 69 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Gestione del file system Organizzazione di dati e programmi in memoria secondaria: indipendente dal dispositivo fisico (nastri, dischi magnetici e ottici, ecc.) unità di memorizzazione: file i file sono organizzati in strutture gerarchiche ad albero: directory File qualsiasi dato o programma si trova all'interno di un file proprietà dei file: − nome (lo distingue dai file all'interno della stessa directory) − attributi (proprietario, permessi di accesso, tipo, dimensioni, data di 71 creazione e modifica, ecc.) Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis 70 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Gestione del file system (cont.) Directory struttura che può contenere un numero arbitrario di file e altre directory la directory a livello più alto è detta root (radice) due tipi: − directory di sistema: contengono i programmi e i dati del SO − dirtectory utente: contengono applicazioni e dati degli utenti proprietà: − Nome . Estensione − Nome: 8 caratteri; Estensione: 3 caratteri • Vincoli non presenti nei SO più moderni (XP, MacOSX) − Attributi (proprietario, permessi di accesso, ecc.) Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis 72 Esempio di organizzazione del file system Operazioni su file e directory Root programmi utenti mario Tesi.doc ugo Testo.txt Il SO mette a disposizione degli utenti (attraverso l'interprete dei comandi) e delle applicazioni (chiamate di sistema) un insieme di operazioni su file e directory progetti piero Tabella.xls foto programmi ... ... Ogni file e directory è identificato univocamente dal path name, che include l'intero cammino dalla directory radice. Es. (notazione Windows): \Root\utenti\ugo\Testo.txt \Root\utenti\mario\Tesi.doc creazione di file e directory nella directory corrente elenco del contenuto della directory corrente cambiamento della directory corrente copia, cancellazione e ridenominazione apertura di un file (esecuzione o visualizzazione) modifica dei permessi File e directory contenuti in directory diverse possono avere lo stesso nome In Windows la cartella ”root” corrisponde alla cartella “Desktop” 73 Ogni operazione può essere eseguita solo se si dispone dei permessi necessari Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis Per saperne di più… Architettura dei calcolatori Ceri, et al., Capitolo 2 Estensioni dell’architettura di Von Neumann: architetture CISC e RISC Ceri, et al., Capitolo 12 Il Sistema Operativo Ceri, et al., Capitolo 13 75 Fondamenti di Informatica 1 - A.A. 2010/11 - Prof. Gian Luca Marcialis 74