Università degli Studi di Cagliari Corso di Laurea in Biotecnologie Industriali Sommario INFORMATICA http://www.diee.unica.it/~marcialis/Informatica A.A. 2016/2017 Docente: Gian Luca Marcialis ARCHITETTURA DEI CALCOLATORI SISTEMI OPERATIVI Breve storia dell’informatica e dei calcolatori elettronici Calcolatori elettronici come esecutori di algoritmi Architettura di Von Neumann 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 Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis 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 - A.A. 2016/17 - Prof. Gian Luca Marcialis La preistoria (metodi e modelli teorici) 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) Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis La preistoria (i primi strumenti meccanici) 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.) Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Gli anni ’60 e ’70: dal salone alla scrivania Anni ’60 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 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 Gli anni ’30 - ’50: l’era dei Colossi Anni ’30 - ’40 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 Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Gli anni ’80 e ’90: dalla scrivania alla tasca Anni ’80 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 ’90 reti di calcolatori, Internet rapida obsolescenza dei hardware e software prodotti Finalmente il 2000… Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis 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 Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis 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 Informatica - A.A. 2016/17 - 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 Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Bus di sistema CPU Memoria centrale Periferica1 (I/O) Periferica2 (I/O) ... Dispositivi di ingresso e uscita (I/O) Componenti dell’architettura di Von Neumann Memoria centrale 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. Schema di funzionamento della macchina di Von Neumann I programmi sono composti da istruzioni codificate in binario: 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 e i dati 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 Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Il modulo di memoria 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 Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis La memoria centrale 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 Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Struttura della memoria centrale 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 Con un registro indirizzi di k bit, si possono indirizzare 2k parole di memoria: gli indirizzi vanno da 0 a 2k-1 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) 0 Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Informatica - A.A. 2016/17 - 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à) Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Capacità della memoria 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. Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Il processore 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 Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Esecuzione di un programma: funzionamento elementare Insieme di istruzioni di una CPU 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 Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Dispositivi di ingresso e uscita (I/O) Si carica in memoria centrale il programma in codice binario Sono anche detti unità periferiche per sottolineare il loro ruolo di completamento delle funzioni di base della CPU il programma occupa una sequenza contigua di “word” di memoria 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.) Ogni istruzione è sottoposta, sequenzialmente, a un “ciclo di esecuzione” L’ultima istruzione indica esplicitamente il termine delle operazioni (“halt”) Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Informatica - A.A. 2016/17 - 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! Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Interfacce interne Interfacciamento di unità periferiche Le periferiche hanno caratteristiche molto diverse tra loro EIDE o SCSI (collegamento con “flat cable”) Hard Disk / CDROM / DVD 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 Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis 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 Interfacce esterne Il bus di sistema 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 Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis 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.) Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Limiti dell’architettura di von Neumann Limite principale: stretta sequenzialità delle operazioni Esecuzione delle istruzioni tre fasi salienti (in realtà cinque): 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... Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Estensioni dell’architettura di Von Neumann 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 aritmetici ad alta precisione: in virgola mobile (Floating Point Unit, FPU, all’interno della ALU) o per la grafica su video (schede grafiche) − 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 − Intel QuadCore, 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 Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Sistema operativo come gestore delle risorse 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 Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Il Sistema Operativo (SO) 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 tutti i componenti hardware necessari per l'esecuzione dei programmi: − memoria centrale, processore, periferiche, ecc. Interfaccia utente\hardware insieme di funzionalità software che "nascondono" agli utenti i dettagli dell'hardware (ad es., I\O su memoria secondaria) Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Architettura a livelli del SO Un moderno SO è organizzato a livelli (progettazione modulare) Ogni livello si occupa di gestire una parte dell'hardware Ogni livello realizza una macchina virtuale 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 essere modificati Informatica - A.A. 2016/17 - 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 Interprete dei comandi (shell) Gestore del File System (memoria secondaria) Gestore delle periferiche (I\O) Gestore della memoria principale Gestore dei processi Hardware Informatica - A.A. 2016/17 - 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 allocazione della memoria tra i diversi processi Gestore delle periferiche 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) Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Gestione dei processi Architettura a livelli del SO (cont.) 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 da riga di comando un’istruzione del tipo “cancella il file” Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Processo: programma in esecuzione (entità dinamica) 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 Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Diagramma dei processi: un esempio Politiche di gestione della CPU Reimmissione nella lista pronti in caso di «quanto» insufficiente L'obiettivo del gestore dei processi è rendere efficiente l'uso della CPU condivisa da più processi: Coda di processi pronti (con priorità per alcuni) Selettore CPU (processo in esecuzione) Processo servito/terminato 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... 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... Eventuale messa in coda di attesa di evento interno/esterno (interrupt) prima di reimmissione nella coda dei processi pronti Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Deadlock o stallo (mi si è piantato il PC!) Molte risorse possono essere utilizzate da un solo processo alla volta CPU, stampanti, CD, scanner, ecc.: risorse esclusive Alcune di queste sono non “prerilasciabili” 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 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 B è in attesa dello scanner, già assegnato al processo A... Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis ...è quindi necessario un compromesso, definendo i criteri di scelta di uno dei processi pronti da mandare in esecuzione (“schedulazione” dei processi) Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Gestione dei deadlock 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 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 SO tiene traccia dell'allocazione delle risorse e dei possibili stati di attesa circolare, impedendo che si verifichino è l'approccio più complesso Informatica - A.A. 2016/17 - 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)... Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Informatica - A.A. 2016/17 - 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 FNaF 700 KB Int. Explorer 500 KB Tempo (ore) 10 5 20 8 15 Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis 400 K 0 sistema operativo 400 K Word 400 K 1000 K 0 sistema operativo 400 K 0 sistema operativo 900 K 1000 K Internet Explorer 1000 K 1000 K 2000 K Five Five Five Nights Nights Nights At At At Freddy’s Freddy’s 1700 K Freddy’s 2000 K 2000 K 2000 K Excel Outlook Outlook 2300 K 2300 K 2300 K 2560 K 2560 K 2560 K Excel termina alloca FNaF 1000 K sistema operativo 400 K Word Word 2000 K (cont.) 0 sistema operativo Outlook Outlook Outlook 2300 K 2300 K 2560 K 2560 K Word termina alloca I.E. 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 Deframmentazione − Le aree occupate vengono riallocate in modo contiguo Alternativa: Allocazione non contigua Dopo Prima 0 sistema operativo Internet Explorer 400 K 900 K Internet Explorer Five Nights At Freddy’s Five Nights At Freddy’s Outlook 2000 K 2300 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 Segmentazione Outlook 2560 K 2560 K Tecniche di allocazione non contigua Paginazione Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis i programmi vengono divisi in segmenti di lunghezza anche diversa, che possono essere caricati in aree di memoria non contigue Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Un esempio di paginazione Word Pagina 0 Pagina 1 Pagina 2 Pagina 3 Excel Pagina 0 Pagina 1 Memoria fisica Sis. Op. Blocco 1 Blocco 2 Blocco 3 Blocco 4 Blocco 5 Blocco 6 Gestione della memoria virtuale Questo sistema permette di far eseguire programmi che occupano uno spazio di memoria superiore a quello disponibile in primaria A livello del Sistema Operativo, la virtualizzazione della memoria viene gestita utilizzando la paginazione su richiesta Si carica la pagina in memoria centrale solo quando “serve” − Swapping 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 7 Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Esempio di paginazione su richiesta Word Pagina 0 Deallocato – non serve Memoria fisica Sis. Op. Pagina 1 Blocco 1 Pagina 2 Blocco 2 Pagina 3 Blocco 3 Outlook richiede allocazione pagina 0 Outlook Pagina 0 Pagina 1 Blocco 4 Excel Pagina 0 Pagina 1 Blocco 5 Allocata su blocco libero Blocco 6 Blocco 7 Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Gestione del file system (cont.) 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 creazione e modifica, ecc.) Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Esempio di organizzazione del file system Root 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.) Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis programmi utenti mario Tesi.doc ugo Testo.txt 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 File e directory contenuti in directory diverse possono avere lo stesso nome In Windows la cartella ”root” corrisponde alla cartella “Desktop” Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Operazioni su file e directory Interfacce utente-macchina: la shell 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 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 Ogni operazione può essere eseguita solo se si dispone dei permessi necessari Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Interfacce grafiche Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Per saperne di più… Capp 2-3 del libro di testo Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis