Architettura di un sistema informatico Software di base PARTE II Architettura di un sistema informatico Software di base Informatica Generale
Software di base (o di sistema) Software (sw) = programmi Software di base = programmi che rendono utilizzabile il computer e ne arricchiscono le funzionalità Il sw di base include Sistema operativo (SO) Compilatori, linker, loader Interpreti Informatica Generale
Sistema Operativo: funzionalità Gestire le risorse della macchina (CPU, memoria, dispositivi di I/O, file) Dialogare con l’utente (o gli utenti) Rendere disponibili agli utenti i traduttori e consentire l’uso dei programmi applicativi Controllare l’uso del sistema (da parte degli utenti) a fini amministrativi Informatica Generale
Gestione delle risorse SO mono e multiutente Protezione delle informazioni Multiprogrammazione o multitasking Più attività possono (o debbono) essere svolte “contemporaneamente” Programmi e processi Competizione per le risorse Parallelismo e concorrenza Informatica Generale
Interazione basata su comandi testuali Dialogo con l’utente Interazione basata su comandi testuali Informatica Generale
Dialogo con l’utente (2) Informatica Generale
Dialogo con l’utente (3) Interazione mediante interfaccia grafica Informatica Generale
Dialogo con l’utente (4) Informatica Generale
Sistema operativo: architettura Modello cosiddetto “a buccia di cipolla” (o semplicemente a strati) Ogni strato realizza una “macchina virtuale” Usa le funzionalità della macchina sottostante Fornisce servizi alla macchina che segue nella gerarchia Gestisce delle risorse mediante politiche invisibili ai livelli superiori Informatica Generale
Il modello a strati Hardware Gestione CPU (nucleo) Gestione Memoria Gestione I/O Gestione file (file system) Interprete dei comandi Informatica Generale
Nucleo e gestione dei processi Richiesta da soddisfare Programma in esecuzione Processo Uso di un foglio elettronico Stampa di un documento Ricezione di dati da modem … Stati di un processo Running Ready Waiting Informatica Generale
Scheduling (schedulazione) dei processi Coda dei processi Politica di assegnazione della CPU Sincronizzazione ed interruzioni Running Ready Fine quanto CPU allocata Richiesta Risorsa Waiting Risorsa allocata Informatica Generale
Tipi di multiprogrammazione Preemptive Cooperativa Coda singola (First In First Out) Code con priorità associata Priorità in un tipico SO per PC Processo in foreground priorità massima Processi in background Informatica Generale
Gestione dei processi: esempio Un semplice programma per eseguire somme ripetute ciclo: leggi op1 (leggi primo addendo) se op1=0 vai a fine (se nullo, termina) leggi op2 (leggi secondo addendo) ris:=op1+op2 (calcola la somma) scrivi ris (scrivi il risultato) vai a ciclo (ripeti) fine: scrivi ‘’bye bye’’ (saluta) Ready Running Inizio Waiting Informatica Generale
Process Control Block (PCB) Struttura dati del S.O. necessaria per la gestione dei processi PC Base address R1 . PCB (è il “contesto” del processo) Rn - PC serve per sapere da dove ricominciare l’esecuzione - R1Rn contenuto dei registri generali load R1,op1 load R2,op2 add R1,R2 store R1,ris ris:=op1+op2 Informatica Generale
Gestione della memoria Processi in esecuzione concorrente Sistema operativo (WinNT: > 30MB) Word processor (Winword: 48 MB) Browser di rete (Netscape: 612 MB) Posta elettronica (Eudora: 1.54 MB) …. Problemi specifici (tutti correlati) “trovare spazio” per i programmi “rilocare” il codice evitare/ridurre la frammentazione Informatica Generale
Frammentazione: esempio 1) 2) S.O. S.O. Nuovo processo Il processo B termina A A C B B C 3) S.O. Nuovo processo: non trova spazio A La memoria libera complessiva sarebbe sufficiente per D D C Informatica Generale
Frammentazione: una soluzione Si “compatta” la memoria (copiando C “più in alto”) S.O. S.O. A A C C Nuovo problema: “aggiustare”, nel programma copiato, i riferimenti (eventuali) ad istruzioni e dati in memoria “rilocare” il codice Informatica Generale
Rilocazione del codice (un vecchio esempio) . . . if x[1]<x[2] then z := x[1] else z := x[2]; • Programma Pascal • Programma in codice macchina (caricamento a ind. 20000) Indirizzo 20000 (Inizio dati) 00000000 00000000 0000000000000011 00000000 00000000 0000000000000010 00000000 00000000 0000000000000101 …………………………………….……. 00000101 00000001 0100111000100000 00000101 00000010 0100111000100100 00100111 00000001 0000000000000010 10100011 00000000 0101001000100000 00000110 00000010 0100111001000100 10100010 00000000 0101001000101000 00000110 00000001 0100111001000100 Indirizzo 21000 (Inizio programma) Indirizzo 21024 Indirizzo 21032 Informatica Generale
Rilocazione del codice (2) Nella traduzione (compilazione) si ipotizza sempre il “caricamento” all’indirizzo 0 Durante il caricamento (una volta noto l’indirizzo iniziale, o “base”, ad esempio 20000) si aggiustano i riferimenti alla memoria In alternativa, si usa un registro base per “correggere” ogni accesso alla memoria Rilocazione statica Rilocazione dinamica Informatica Generale
Rilocazione statica Compilazione rilocazione e caricamento (ind. 20000) esecuzione rilocazione e caricamento (ind. 32768) esecuzione ……….. Base address=20000 Base address=32768 00000000 00000000 0000000000000011 00000000 00000000 0000000000000010 00000000 00000000 0000000000000101 …………………………………….……. 00000101 00000001 0100111000100000 00000101 00000010 0100111000100100 00100111 00000001 0000000000000010 10100011 00000000 0101001000100000 00000110 00000010 0100111001000100 10100010 00000000 0101001000101000 00000110 00000001 0100111001000100 00000000 00000000 0000000000000011 00000000 00000000 0000000000000010 00000000 00000000 0000000000000101 …………………………………….……. 00000101 00000001 1000000000000000 00000101 00000010 1000000000000100 00100111 00000001 0000000000000010 10100011 00000000 1000010000000000 00000110 00000010 1000000000100100 10100010 00000000 1000010000001000 00000110 00000001 1000000000100100 Informatica Generale
Rilocazione dinamica Compilazione caricamento (indirizzi relativi + base 20000) esecuzione caricamento (indirizzi relativi + base 32768) esecuzione ……….. Registro base 00000000000000000100111000100000 00000000 00000000 0000000000000011 00000000 00000000 0000000000000010 00000000 00000000 0000000000000101 …………………………………….……. 00000101 00000001 0000000000000000 00000101 00000010 0000000000000100 00100111 00000001 0000000000000010 10100011 00000000 0000010000000000 00000110 00000010 0000000000100100 10100010 00000000 0000010000001000 00000110 00000001 0000000000100100 + . Indirizzi assoluti Informatica Generale
Altre tecniche di gestione della memoria Swapping memorizzazione di processi pronti o in attesa in un’area della memoria di massa Paginazione suddivisione di un programma in pagine logiche (e della memoria centrale in pagine fisiche) Memoria virtuale swapping + paginazione (in prima approssimazione) Informatica Generale
Swapping 1) D S.O. A Tempo B C D 2) S.O. Area di A Swap B D Nuovo processo 1) D S.O. C viene copiato su disco A Tempo B C D D viene caricato in memoria 2) S.O. Area di Swap A B D Informatica Generale
Paginazione 1) 2) S.O. S.O. A A C B B C 3) S.O. 4) S.O. A A D C C Nuovo processo Il processo B termina A A C B B C 3) S.O. 4) S.O. Nuovo processo A A D Pagine fisiche non adiacenti C C Informatica Generale
Paginazione (2) Proc A Memoria fisica 1 (RAM) 1 2 2 3 3 4 4 5 Proc B 6 Memoria fisica (RAM) 1 1 2 2 3 3 4 4 5 Proc B 6 1 7 2 8 Proc C 9 1 Informatica Generale
Paginazione (3) (Ipotesi semplificativa per questo esempio: indirizzi base 10 e pagine di lunghezza 10000) RAM di 100000 celle Tabella di conversione ind. Logici/ind. fisici Proc A 1 2 0xxxx 0xxxx 1xxxx 1xxxx 2xxxx 2xxxx 3xxxx 5xxxx 4xxxx 6xxxx 3 1 4 2 5 3 6 4 7 8 Supporto hardware Memory Management Unit (MMU) 9 Informatica Generale
Ulteriore funzionalità della MMU Memoria virtuale Principi di località l’insieme di pagine logiche utilizzate “varia lentamente” Non tutte le pagine logiche debbono risiedere nella RAM più processi eseguibili simult. Ulteriore funzionalità della MMU Page fault caricamento della pagina mancante Pagina non utilizzata da “molto tempo” scaricamento della pagina Illusione di (al più) 50% di RAM addizionale Informatica Generale
Gestione delle periferiche (I/O) Componente fisica Dispositivo di I/O (inclusi dischi e nastri) Scheda di I/O (collegata al bus) Componente “logica” (software) Programma driver Installazione Manuale Plug&Play (PnP) Informatica Generale
driver forniti da costruttori di periferiche Driver logici Sono programmi del S.O. driver “standard” driver forniti da costruttori di periferiche Nascondono la struttura fisica comandi di I/O Standardizzano l’interazione stampante laser e stampante inkjet floppy, hard disk e CD ROM Informatica Generale
Esempi di comandi di I/O di alto livello In forma testuale ( in S.O. con interazione testuale oppure da programma) lpr -Plw1 pippo.txt read(input,x,y,z) read(nomefile,nomevar) In forma grafica (vedi slide successiva) Informatica Generale
Comandi di I/O Informatica Generale
Tecnica di spool Problema: cosa succede se più processi (o più utenti) mandano “contemporaneamente” in stampa documenti sulla stessa stampante? Processo1 Computer 1 Processo2 Computer 2 Processo3 Come evitare che I dati escano nello stesso ordine in cui vengono eseguiti i comandi di uscita? Informatica Generale
Spool di stampa Processo1 Processo2 Processo3 Processo di spool Driver Informatica Generale
File (management) system Creazione e cancellazione dei file Modifica e aggiornamento Protezione dei file e modalità di accesso Copia, spostamento, creazione di collegamenti, ecc. Gestione della memoria di massa Informatica Generale
Organizzazione dei dati sulle memorie di massa Ogni “entità referenziabile ” su disco è un file un programma un insieme di dati utilizzati da un programma una base di dati (o un archivio) un grafico I file sono identificati da un nome (filename) nome estensione Esempi: tesi.doc, sort.pas, sort.exe Informatica Generale
“case sensitive” o “insensitive” caratteri speciali Ancora sui file Regole per i nomi lunghezza massima “case sensitive” o “insensitive” caratteri speciali Informazioni ausiliarie lunghezza file data creazione e modifica diritti di accesso Informatica Generale
Organizzazione logica di un file system Struttura ad albero (file system gerarchici) Ai nodi e alle foglie possono essere associate informazioni Radice dell’albero Nodo interno Foglia Informatica Generale
Organizzazione logica di un file system (2) Struttura ad albero La radice è un’unità disco (o una partizione di unità) I nodi interni sono cartelle (directory) Le foglie sono file Una cartella può contenere file e/o altre cartelle percorso di identificazione di un file c:\Mauro\Didattica\InfGen\algoritmi.ppt Informatica Generale
Organizzazione logica di un file system (3) Esempio WinNT Programmi Mauro Didattica Ricerca Personale InfGen Tesi algoritmi.ppt hardware.ppt Software.ppt Informatica Generale
Strumenti grafici di esplorazione di un f.s. Informatica Generale
Ancora sui file system gerarchici Unità o volume e directory radice (root) Directory corrente (o di lavoro) Pathname (assoluto e relativo) \Mauro\Didattica\datiealg.ppt Didattica\datiealg.ppt Directory “padre” Formattazione di un’unità Informatica Generale
Directory corrente per un applicativo Informatica Generale
Directory corrente per un applicativo (2) Informatica Generale
Directory corrente per un applicativo (3) Informatica Generale
Directory corrente per un applicativo (4) Informatica Generale
Directory corrente per un applicativo (5) Informatica Generale
Il Sistema Operativo MS-DOS MS-DOS = Microsoft Disk Operating System Sistema monoutente e “monotasking” Interazione con l’utente tramite comandi testuali L’interprete dei comandi è detto SHELL File di comandi (BATCH) File System gerarchico (FAT) Root e directory corrente (o di lavoro) Informatica Generale
I comandi di MS-DOS Prompt di sistema Formato generale Caratteri “jolly” ? (cap?.doc) * (cap*.*) File speciali (per indicare certe periferiche): COM1:, COM2:, CON:, LPT1: Esempi C:\> oppure C:\Mauro\Didattica> <Comando DOS> ::= <Parola chiave><parametri> Informatica Generale
Alcuni comandi DOS FORMAT A: inizializza un dischetto (crea root e FAT) MD <nome> (ovvero MD <pathname>) crea una nuova sottodirectory nella directory corrente (ovvero della directory <pathname>) CD <pathname> la directory <pathname> diventa la d. corrente DIR (ovvero DIR <pathname>) elenca il contenuto della directory corrente (ovvero nella directory <pathname>) Informatica Generale
DEL <pathname> cancella il file <pathname> Alcuni comandi DOS (2) COPY <pathname1> <pathname2> crea <pathname2> come copia di <pathname1> DEL <pathname> cancella il file <pathname> RD <pathname> cancella la directory <pathname> (che deve essere vuota, cioè non contenere file o altre directory) REN <pathname1> <nome> ridenomina il file <pathname> cambiando il nome vero e proprio in <nome> Informatica Generale
Esempi di interazione in DOS Informatica Generale
Esempi di interazione in DOS (2) Informatica Generale
Esempi di interazione in DOS (3) Informatica Generale
Classificazione dei comandi Ad ogni comando corrisponde un programma che realizza la particolare azione Comandi interni (“sempre” in memoria) più efficienti tutti i comandi citati sono interni (tranne FORMAT) Comandi esterni caricati quando serve file con estensione EXE, COM e BAT Informatica Generale
Interprete dei comandi (command.com) Esegue i comandi predefiniti (interni ed esterni) Esegue comandi aggiuntivi (file con estensione BAT, COM o EXE nella directory corrente nelle directory opportunamente specificate dall’utente nel file di sistema AUTOEXEC.BAT Informatica Generale
Operazioni speciali consentite dalla shell Pipelining ( | ) invio dell’output di un comando in input ad un secondo comando DIR | FIND “EURO” Ridirezionamento dell’output ( < e > ) sostituzione dello standard input (tastiera) o dello standard output (video) DIR > LPT1: DIR | FIND “EURO” > LISTA LISTAF < SORT > LISTAORD Informatica Generale
Come il FS tiene traccia dei dati Tabella di Allocazione dei File (FAT) Directory principale (root) Entrambe risiedono su disco ad indirizzi prestabiliti Entrambe vengono caricate in memoria durante l’inizializzazione del sistema Informatica Generale
Root directory Informatica Generale
Tabella di allocazione dei file (FAT) 1 44 45 78 46 77 78 80 79 80 Informatica Generale
Il sistema operativo Windows Multitasking Monoutente (Windows 95), multiutente (Windows NT) Capacità di eseguire applicazioni scritte per il DOS File System gerarchico (FAT per Win95, NTFS per WinNT) Interfaccia grafica evoluta Gestione integrata delle “nuove tecnologie” (reti locali, Internet, fax, multimedialità) Informatica Generale
La barra delle applicazioni La gestione delle risorse e il file system Alcuni concetti base Scrivania (desktop) Il pulsante di avvio La barra delle applicazioni La gestione delle risorse e il file system Proprietà di file e cartelle Menù di scelta rapida Creazione di collegamenti Il cestino Esecuzione di un programma Guida in linea Accessori Informatica Generale
La scrivania (desktop) Informatica Generale
Il pulsante di avvio Informatica Generale
Il pannello di controllo Informatica Generale
Il pannello di controllo (2) Informatica Generale
Personalizzazione della scrivania Informatica Generale
Barra delle applicazioni (personalizzazione) Informatica Generale
Barra delle applicazioni Informatica Generale
Barra delle applicazioni (2) Informatica Generale
Esplorazione del FS (alternativa a gestione risorse) Informatica Generale
Menu di scelta rapida Informatica Generale
Proprietà di file e cartelle Informatica Generale
Creazione di collegamenti Informatica Generale
Creazione di collegamenti (2) Informatica Generale
Creazione di collegamenti (3) Informatica Generale
Il cestino Informatica Generale
Il cestino (2) Informatica Generale
Esecuzione dei programmi Informatica Generale
Esecuzione dei programmi (2) Informatica Generale
Guida in linea Informatica Generale
Guida in linea (2) Informatica Generale
Help in linea Informatica Generale
Accessori Informatica Generale
Gestione dei processi: esempio Un semplice programma per eseguire somme ripetute ciclo: leggi op1 (leggi primo addendo) se op1=0 vai a fine (se nullo, termina) leggi op2 (leggi secondo addendo) ris:=op1+op2 (calcola la somma) scrivi ris (scrivi il risultato) vai a ciclo (ripeti) fine: scrivi ‘’bye bye’’ (saluta) CPU disponibile Ready Running Inizio CPU tolta “d’ufficio” Waiting op1 letto leggi op1 Informatica Generale