Storia ed evoluzione dei sistemi operativi
Il corso intende fornire una introduzione alla struttura e alle funzioni dei moderni sistemi operativi, esaminando:
Ma cos’è un Sistema Operativo?
Chi ha mai usato un calcolatore senza Sistema Operativo?
È un ambiente software che agisce da intermediario tra l’utente e l’hardware di un computer.
E’ un ambiente per eseguire programmi in modo facile ed efficiente.
E’ un insieme di programmi sempre in esecuzione e a diretto contatto con l’hardware (Kernel)
In figura sono indicati i principali componenti di un sistema di calcolo.
La struttura dei moderni sistemi operativi è il frutto di aggiunte di programmi introdotti nel tempo per far fronte a specifiche esigenze.
Uno sguardo alla storia del calcolo …
Svantaggi:
Soluzione: schede e nastri perforati
La struttura del job è definita dalle schede di comando.
Con i sistemi batch il controllo viene trasferito automaticamente da un job al successivo da un programma residente in memoria chiamato monitor che legge le schede di comando e chiama le opportune routine.
Monitor residente:
GM OS (1955) – Per alcuni è il primo sistema operativo in assoluto per sistemi batch. Sviluppato dalla General Motors per l’IBM701, basato su monitor residente.
SAGE (1957 ?) – Semi-Automatic Ground Environment system. Programma di controllo per sistemi IBM. Primo sistema operativo real time sviluppato in ambito militare.
Fortran Monitor System (1958) – Sistema operativo sviluppato dall’aviazione americana per calcolatori IBM. Primo con supporto per un linguaggio ad alto livello.
SOS (1959) – Sistema operativo sviluppato dall’IBM SHARE Users Group per l’IBM 709.
Uso inefficiente della CPU
Soluzione: uso di memorie di massa veloci ad accesso diretto (dischi)
Sovrapposizione di I/O e elaborazione
Più job vengono mantenuti nella memoria principale contemporaneamente in particolari strutture (job pool) e l’uso della CPU viene diviso fra loro (Scheduling della CPU)
La multiprogrammazione impone al SO…
Se nel job pool è presente un job molto lungo, eventuali job più piccoli devono attendere la fine di tale job anche se devono usare la CPU per poco tempo
Tempo medio di elaborazione elevato
Soluzione: sospendere l’esecuzione di job che superano un fissato tempo limite (time slice)
Un job viene sospeso quando:
La CPU viene commutata tra più job che vengono mantenuti contemporaneamente in memoria e sul disco.
I job sono sottoposti a swap–in dal disco alla memoria ed a swap–out dalla memoria al disco.
Riduzione del tempo medio di attesa
Con la multiprogrammazione e il time sharing si riducono i tempi medi di attesa e ogni utente ha la sensazione di essere l’unico utente del sistema.
Sistemi interattivi:
Il time sharing permette l’accesso alla cpu a molti programmi residenti in memoria.
La memoria ha una capacità limitata.
Come fare a tenere numerosi programmi (anche grandi) contemporaneamente in memoria?
Dividere il programma in pezzi (pagine) e conservare:
Il time–sharing impone al SO…
John McCarthy e Herb Teager (Stanford, 1961) pongono le basi per il primo S.O. time sharing: il CTSS (Compatible Time Sharing System) Sistema prototipale, piccolo e con poche funzionalità.
Fernando José Corbató (MIT, 1965), tra i progettisti di CTSS dirige il progetto MAC per il S.O. MULTICS (MULTIplexed Information and Computing Service) Evoluzione del CTSS, ma grande, complesso e poco efficiente.
Kenneth Thompson (Bell labs, 1969), dopo il ritiro della Bell Labs dal progetto MULTICS, sviluppa UNIX semplificando il progetto MULTICS. S.O. con time sharing e memoria virtuale. Disponibile per calcolatori medio/grandi.
Dennis Ritchie (Bell Labs, 1972), sviluppa il linguaggio C e riscrive UNIX nel nuovo linguaggio. Primo S.O. portabile su differenti piattaforme.
Bill Joy (Berkley, 1978), a partire dal codice che i Bell Lab furono tenuti a distribuire a causa di leggi antitrust, guida un gruppo di ricercatori nello sviluppo di BSD Unix con funzionalita’ di rete TCP/IP. Una delle piu’ diffuse distribuzioni negli anni 80.
Paul Allen e Bill Gates (1980), alla Microsoft sviluppano XENIX, prima versione commerciale per microcomputer. Seguiranno le prime versioni commerciali per processori Intel: Venix, QNX, Idris… Poco diffuse per la scarsa potenza dei processori per PC.
Richard Stallman (Stanford, 1985), lancia il progetto GNU per la distribuzione libera e gratuita del software di Unix. Sviluppa solo alcuni tool (compilatori, debugger, ..)
Andrew Tanenbaum (Amsterdam, 1986), professore alla Vrije University sviluppa Minix, piccolo S.O. Unix per processori Intel (ora sufficientemente potenti). Sviluppato per usi didattici – gratuito.
Linus Torvalds (Finlandia, 1992) sviluppa Linux a partire da Minix e dai tools realizzati nel progetto GNU. Free e open source. Motivo: costi troppo alti per le licenze. Versione per processori Intel poi adottata da tutte le grandi industrie.
Obiettivo:
Costruire calcolatori economici e facili da usare (personal computer)
1980 – Microsoft, dietro commessa della IBM produce un S.O. per personal computer chiamato PC-DOS 1.0. Per i PC IBM compatibili viene prodotta una versione simile chiamata MS-DOS
1982 – DOS V.1.2 con driver per floppy disk
1983 – DOS V.2.0 con driver per hard disk e gestione del file system
1984 – DOS V.3.0 con supporto di rete
1985 – Windows 1.0 prima interfaccia grafica
1987 – Windows 2.0 con funzionalita’ di multitasking
1988 – DOS V.4.0 con shell e gestione della memoria estesa
1991 – DOS V.5.0 gestione più efficiente della memoria
1992 – Windows 3.1. oltre 3 milioni di copie in due mesi
1993-94 – Windows NT 3 e NT4. S.O. object oriented per server di alto livello. Stessa interfaccia grafica di Windows 3.1 ma kernel completamente riscritto
1995 – Windows 95: S.O. per applicazioni a 32 bit. Non più una interfaccia grafica come Windows 3.1 ma un completo S.O.
1996-1998 – Windows CE 3.0. S.O. per computer palmari
1998 – Windows 98. browser integrato, supporti Java e HTML e vari supporti hardware (USB, firewire, DVD… )
2000 – Windows 2000 con supporto molto efficiente per le connessioni di rete
2001 – Windows XP
Un sistema di unità processanti omogenee, strettamente collegate che comunicano per risolvere problemi su larga scala in maniera efficiente.
Principale obiettivo:
Ridurre i tempi di elaborazione
Le CPU condividono la memoria e il clock
Principali svantaggi:
Ogni CPU ha una propria memoria e comunica mediante una rete
Principali svantaggi:
Rete GARR che connette univ. e centri di ricerca italiani
Crescita di 1000 volte in 8 anni (x2 in 9 mesi)
Utilizzare i calcolatori connessi ad una rete come una unica risorsa di calcolo (calcolo distribuito).
Un sistema di unità processanti non omogenee, autonome, indipendenti, geograficamente distribuite che sono aggregate per risolvere problemi su larga scala in maniera efficiente.
Principale obiettivo: Aggregare risorse
I calcolatori paralleli/distribuiti impongono al SO…
Spesso utilizzati per applicazioni dedicate:
Caratteristiche:
Struttura e funzioni dei sistemi operativi
1. Storia ed evoluzione dei sistemi operativi
2. Struttura dei sistemi operativi
3. Interazione tra hardware e sistemi operativi
4. La rappresentazione dei processi
6. I Thread
7. Lo scheduling dei processi: introduzione e primi esempi
9. La sincronizzazione dei processi
10. I semafori
11. Allocazione contigua dei processi in memoria centrale
12. Allocazione non contigua dei processi in memoria centrale
14. Gli algoritmi di avvicendamento delle pagine
16. I sistemi RAID
17. L'organizzazione logica dei file system
18. L'organizzazione fisica dei file system
1. Storia ed evoluzione dei sistemi operativi
2. Struttura dei sistemi operativi
3. Interazione tra hardware e sistemi operativi
4. La rappresentazione dei processi
6. I Thread
7. Lo scheduling dei processi: introduzione e primi esempi
9. La sincronizzazione dei processi
10. I semafori
11. Allocazione contigua dei processi in memoria centrale
12. Allocazione non contigua dei processi in memoria centrale
16. I sistemi RAID
17. L'organizzazione logica dei file system
18. L'organizzazione fisica dei file system
I podcast del corso sono disponibili anche su iTunesU e tramite Feed RSS.