Sistemi Operativi* Giuseppe Prencipe Presentazioni

Presentazioni....
Sistemi Operativi*
Giuseppe Prencipe
Introduzione
Giuseppe Prencipe
Università di Pisa
[email protected]
Pagina web Università di Siena
Lezioni e Ricevimenti
Giovedi: 9:00—12:00
Email
* Parte dei lucidi: Amir Averbuch
Esame
Testi
Sistemi Operativi – Silberschatz et al. –
Addison-Wesley
????
1
Testi
Testi
I Moderni Sistemi Operativi – Tanenbaum
A. Silberschatz, P. B. Galvin, and G.
– Jackson Libri (Futura ed.)
Testi
W. Stallings, “Operating Systems:
Internals and Design Principles”, 4a
Edizione, Prentice-Hall, 2000.
2
Gagne, “Applied Operating Systems
Concepts”, John Wiley & Sons, 2000
Testi
A. S. Tanenbaum and A. S. Woodhill,
Operating Systems: Design and
Implementation”, 2a Edizione, Prentice-Hall
Intl., 1997.
....e appunti
Cos’è un sistema operativo?
Quello che dirò a lezione....
È un programma!
È il primo software che viene eseguito
dopo il boot
Coordina l’esecuzione degli altri
programmi
Programmi utente
Fornisce vari servizi comuni necessari agli
utenti e alle applicazioni
Cos’è un sistema operativo?
•Un Sistema Operativo (SO, OS) è un
programma che agisce come
intermediario/interfaccia tra l’utente di un
computer e l’hardware del computer.
•Scopi del SO:
–Controllare/eseguire applicativi.
–Rendere la macchina semplice da usare.
–Semplificare i problemi degli utenti.
–Utilizzare l’hardware del computer
efficientemente.
3
Il SO controlla
la macchina
gdb
gcc
Utente
diff
Applicazione
vi
Kernel SO
Hard
ware
grep
date
Sistema Operativo
Hardware
xterm
emacs
netscape
Visione statica dei componenti di
un sistema di calcolo
Strati di un sistema di calcolo
Visione dinamica
Un’altra visione
Molte
applicazioni
End
User
Programmer
Applicazioni
Application
Programs
Utilities
Operating-System
OperatingSystem
Designer
Sistema
Operativo
Istruzioni
Macchina
Computer Hardware
Hardware
4
Un SO
Chiamate di
Sistema
Istruzioni
Privilegiate
Un Hardware
Punto di vista utente
La percezione del calcolatore dipende
dall’interfaccia
SO progettato pensando alla facilità d’uso
Qualche attenzione alle prestazioni
Scarsa atenzione all’utilizzo delle risorse
Gli utenti possono
Massimizzare uso risorse
Essere connessi a stazioni di lavoro
Facilitare uso individuale e ottimizzare uso risorse
Utilizzare Desktop/Palmari
Facilitare uso individuale
Utilizzare Embedded Systems
Nessuna visibilità agli utenti
Cosa è incluso in un SO?
Difficile a dirsi! Ci sono diverse possibilità
Azione legale
contro Microsoft
O più semplicemente:
Nucleo (Kernel) – programma che gira sempre
Applicativi
5
Il SO viene visto come un Assegnatore di
Risorse
CPU, RAM, I/O
Il SO viene visto come Programma di
Essere connessi a Mainframe
File systems
Device drivers
Protocolli di rete
Utilità di sistema
Tool di sviluppo
Shells
Librerie
Accessori (Windows)
Sistema a finestre
Browser
Punto di vista del sistema
Controllo
Gestisce l’esecuzione dei programmi utenti
Non c’è uniformità nel definire cosa fa
parte del SO
Cos’è un SO?
Fornisce astrazioni
Alloca risorse
Inoltre:
Coordinatore
Amico: rende il tuo sistema di calcolo facile da usare
Mago: fa sembrare il tuo sistema più potente di
quello che è (più di 1 processore, più memoria)
Il lavoro del SO è di adattarsi all’hardware. Ad
esempio, MS-DOS, Windows, UNIX, ecc.
Alcune definizioni di SO
Scopo del SO
Macchina astratta
Definito in base a cosa fa:
Implementa funzionalità di alto livello, nascondendo dettagli di
basso livello.
Allocatore di risorse
Gestisce ed alloca le risorse finite della macchina.
Programma di controllo
Agevolare l’utente
Rendere efficiente il sistema
Unix – inizialmente difficile da usare perchè
scarno, fino all’introduzione delle GUI (graphic
user interface)
Per capire meglio i SO è necessaria un pò
di storia....
Controlla l'esecuzione dei programmi e le operazioni sui
dispositivi di I/O.
Storia: Una prospettiva sociologica
Fase 0: Nessun Sistema Operativo.
Computers sono esotici strumenti sperimentali (mainframe).
Programmi in linguaggio macchina.
Dispositivi immissione dati erano schede e unità a nastro
L’utente=operatore siede alla console.
L’utente prepara i job (programma e dati) e lo passa (pila di schede
perforate) alla macchina. Dopo un pò (anche giorni!), i risultati vengono
restituiti. In caso d’errore l’immagine di memoria e registri (dump) viene
consegnata al programmatore per il debugging.
Nessuna sovrapposizione tra calcolo, I/O, and pause utente (pensare o
rispondere).
I programmi vengono caricati a mano usando delle schede.
Vengono sviluppate librerie, usate da tutti gli utenti. Questo è il
precursore dei SO.
Grosso Problema: Lunghe attese.
Fase 1: I computers sono costosi; le
persone no!
Rendere efficiente l’uso della macchina: mandare via la persona
dalla macchina! Utente≠operatore.
Il SO diventa un batch monitor: un programma che carica I lavori in
sequenza. In caso di errore, effettua il dump.
Per accelerare l’elaborazione:
Operatore raggruppa i programmi in lotti simili (batch), utilizzando le
schede di controllo necessarie per distinguere I vari job, i dati e il tipo
di elaborazione.
CPU spesso inattiva (I/O lento):
CPU: migliaia operazioni al secondo.
Lettore schede veloce: 20 schede al secondo.
Problemi simili ancora oggi!
Uso più efficiente dell’hardware, ma difficile debugging!
6
Sistemi Multiprogrammati
Poter organizzare la sequenza d’esecuzione
permette la multiprogrammazione.
Un singolo utente non può costantemente tenere
occupata la CPU o I/O.
La Multiprogrammazione organizza i lavori in modo
da impegnare la CPU il più possibile.
Il SO tiene in memoria contamporaneamente
diversi lavori (sottoinsieme dei lavori presenti
nel lotto – dovuto a memoria limitata)
Il SO ne sceglie uno e lo esegue. Quando il
lavoro va in attesa (per I/O o eventi), il SO
esegue un altro dei lavori in memoria centrale
Decide per gli utenti: job scheduling, gestione
memoria, CPU scheduling
Sistemi Multiprogrammati
Problemi
Nessuna protezione tra i diversi job.
Lavori brevi aspettano molto se lavori lunghi sono in esecuzione.
Soluzioni
Hardware: protezione memoria e rilocazione.
Lavori brevi vengono eseguiti prima dei lunghi.
SO deve controllare l’interazione tra I lavori.
SO diventa materia di studio.
OS/360: primo SO progettato per una famiglia di computers. Un
sistema operativo progettato per essere eseguito da piccoli a grandi
calcolatori.
Non funzionavano benissimo! OS/360 fu introdotto nel 1963;
funzionò nel 1968.
Sistemi complicati.
Tutto in assembler.
Fase 2: I computers e persone sono costose!
Estensione logica della multiprogrammazione: partizione del tempo
d’elaborazione (time sharing) :
Molti utenti usano lo stesso calcolatore allo stesso tempo.
I terminali costano poco: ogni utente ne ha uno.
Le azioni e i comandi eseguiti sono tendenzialmente brevi: il sistema
passa rapidamente da un utente all’altro (tempo di risposta)
Scheduling CPU e multiprogrammazione.
Un programma caricato in memoria è detto processo.
Tipicamente è necessario usare la memoria secondaria come
estensione di quella centrale (memoria virtuale): i programmi
possono avere dimensioni maggiori della memoria fisica. L’utente
vede un’unica memoria (memoria logica).
Devono fornire un file system.
•CTSS:
•Developed at MIT.
•One of the first timesharing systems.
•Pioneered much of the work in scheduling.
•Motivated MULTICS.
7
MULTICS:
Sviluppato da MIT, Bell Labs, General Electric.
•Visione: Un calcolatore principale che supporta “tutti”. Gli
utenti avrebbero acquistato il “calcolo” come si acquista
l’elettricità.
•Tante, tante, tante idee seminali!
•Realizzarlo fu più difficile del previsto.
•Problemi legati alla tecnologia.
UNIX:
Ken Thompson e Dennis Ritchie costruirono us sistema
progettato da programmatori per programmatori.
Originariamente implementato in assembler. Riscritto da Ritchie
e Thompson in C.
Nuova idea: SO portabile!
Le università ottennero il codice per gli esperimenti.
Berkeley aggiunse il supporto per la memoria virtuale per il VAX.
DARPA (Defense Advanced Research Projects Agency) selezionò
UNIX come piattaforma di rete (arpanet).
UNIX divenne un SO commerciale.
Importanti idee furono rese popolari da UNIX
SO scritto in un linguaggio ad alto livello.
SO portabile tra diverse piattaforme hardware.
File systems “montabile”.
Fase 3: I computers sono economici; le
persone ancora costose.
Avere un computer in ogni terminale!
CP/M primo SO per Personal computer.
IBM aveva bisogno di un software per il loro PC’s, ma il
CP/M era indietro con i lavori.
Contattarono Bill Gates (Microsoft) per realizzarne uno.
Gates contattò Seattle Computer Products, comprò 86DOS, e “creò” MS-DOS.
Personal workstations
PERQ
Xerox Alto
SUN Workstation (Stanford University Network)
Personal computers
Apple II
IBM PC
Macintosh
Applicazioni commerciali danno impulso
Word processors
Fogli di calcolo
Databases
Il mercato viene diviso in sottomercati orizzontali
Hardware
Sistemi operativi
Applicazioni
8
Personal computers
Hanno sfruttato gli studi fatti per i SO dei
mainframe.
Motivati da scopi diversi: ottimizzare l’uso
per il singolo utente.
Inizialmente nessuna protezione file;
sucessivamente obiettivo primario (reti,
sicurezza).
Fase 4: Sistemi paralleli
Cresce l’interesse per sistemi con più CPU: sistemi
paralleli
Più unità d’elaborazione in stretta comunicazione, che
condividono i bus, clock macchina, e talvolta memorie e I/O
(sistemi strettamente connessi – tightly coupled systems)
Vantaggi:
Maggiore produttività (throughput):+processori –tempo.
Relazione non lineare!
Economia di scala: condivisione periferiche, alimentatori, ecc.
Incremento affidabilità: un guasto di qualche CPU non pregiudica
il completamento del programma (se la sua esecuzione viene
ripartita fra le CPU disponibili); semplicemente lo rallenta. Si
studia tolleranza ai guasti (fault-tolerance).
Meccanismo per identificazione, diagnosi e correzione guasti
Backup: processi duplicati e checkpoint (copia da unità primaria a
secondaria). Costoso.
SMP e AMP....
Sistemi paralleli: SMP e AMP
SMP: Symmetric multiprocessing
I processori sono controllati da un unico SO, dove ogni processore
ha uguale possibilità di accesso all’I/O. Ogni CPU esegue una identica
copia del SO.
Tutti i processori condividono le stesse aree di memoria, così l’utente
ha l’impressione che il sistema sia un normale sistema a 1
processore.
I processori sono considerati “uguali”, e le applicazioni possono
essere eseguite su ognuno di essi (la scelta dipende dal SO).
A un processore inattivo può essere assegnato un qualsiasi
programma da eseguire.
Suddivisione del carico.
Le CPU possono essere aggiunte per migliorare la performance e
gestire aumenti di carichi di lavoro.
UNIX, Linux e Windows supportano SMP.
AMP: Asymmetric multiprocessing
A ogni CPU si assegna un compito specifico (ad es. controllare il file
system). Un’unità d’elaborazione principale controlla il sistema, e le
altre attendono ordini da essa o si occupano di un compito
predefinito. Gerarchia tra le unità.
Fase 5: Arriva la rete!
9
Rete: canale di comunicazione tra due o più sistemi.
Sistemi distribuiti.
Protocollo di comunicazione più diffuso: TCP/IP
Si hanno:
Rete locale (LAN): nodi all’interno della stessa stanza, piano,
edificio.
Rete geografica (WAN): gruppi di edifici, città, territorio di una
regione o stato.
Microrete: dispositivi BlueTooth (decine di metri)
Mezzi di trasmissione: fili di rame, fibre ottiche, satellite, radio,
microonde
Si condivido dati e non hardware.
Applicazioni di rete hanno dato impulso all’industria:WWW, Email,
News
Processi migrano dovunque….senza controllo!
Sistemi client-server
Oggi i sistemi centralizzati fungono da
sistemi server che soddisfano “alcune”
richieste dei sistemi client.
Server
di calcolo: interfaccia grafica per inviare richieste
di esecuzione di un’azione
di file: interfaccia al file system
Sistemi paritetici
Inizialmente i PC erano stati progettati per essere “isolati”.
Con il diffondersi di Internet, la capacità di collegarsi alla
rete è divenuta parte del SO.
Le reti di calcolatori non condividono clock, memoria, o
bus: sono detti sistemi debolmente connessi (loosely
coupled systems) o sistemi distribuiti.
Alcuni SO interpretano la rete offrendo più che la semplice
possibilità di collegarsi in rete
Condivisione file
Scambio messaggi e comunicazione fra i vari computer collegati
Un SO distribuito è un ambiente in cui più SO comunicano
tra loro in modo da dare l’illusione che vi sia un unico SO
che controlla la rete.
Sistemi real-time
Sistemi di cluster
Le batterie di sistemi (cluster) si basano sull’uso
congiunto di più unità d’elaborazione riunite che svolgono
attività comuni.
Differiscono dai sistemi paralleli perchè sono somposte da
calcolatori completi.
Ogni nodo può tenere sotto controllo (tramite LAN) gli
altri
Batterie asimmetriche: un calcolatore rimane in attesa attiva (hot
standby) mentre gli altri eseguono. Uno controlla gli altri.
Batterie simmetriche: tutti eseguono le applicazioni e si
controllano reciprocamente.
Batterie di sistemi paralleli: più calcolatori accedono ai
dati in una memoria di massa condivisa
Batterie di sistemi connessi WAN: problemi per l’accesso
condiviso ai dischi. Gestione distribuita degli accessi
(distributed lock manager – DLM)
Sistemi palmari
I sistemi d’elaborazione in tempo reale si hanno quando ci sono rigidi
vincoli ti tempo per le operazioni della CPU o il flusso di dati.
Dispositivi di controllo.
Termini fissati entro i quali si deve terminare la computazione.
Tempo reale stretto (hard real-time)
Compiti critici completati in un dato intervallo di tempo.
Garantito se tutti i tempi d’attesa nel sistema sono delimitati.
Limitato (o nessun) uso di memoria secondaria (uso RAM o ROM).
Mancano delle caratteristiche tipiche SO (separazione utente-macchina fisica).
Controllo industriale, robotica.
Tempo reale debole (soft real-time)
I processi critici hanno priorità sugli altri, e la mantengono sino al
completamento dell’esecuzione.
Le attese devono essere limitate (un processo non può attendere
indefinitamente che il nucleo lo faccia eseguire).
Utilità in lavori non così critici come tempo reale stretto.
Multimedialità, realtà virtuale.
10
PDA (personal digital assistant), telefoni
cellulari.
Memoria: 1Mb-decineMb. Necessità di
gestire la memoria in modo efficiente.
Velocità CPU ridotta (limitare consumo
batteria). SO non deve gravare
eccessivamente la CPU.
Dimensioni schermo ridotte.
Sistemi embedded
Riepilogo
I generazione ('45-'55): relè/valvole, no sistema
Per calcolatori palmari (PDA), cellulari, ma
anche televisori, forni a microonde, lavatrici,
etc.
operativo
II generazione ('55-'65): transistor e schede perforate
sistemi batch: IBM 1401 (scheda , nastro) e IBM 7094 (calcolo)
Hanno spesso caratteristiche di real-time
Limitate risorse hardware
esempio: PalmOS, Epoc, PocketPC, QNX.
Riepilogo
IV Generazione ('80-oggi): circuiti integrati su larga
scala
III generazione ('65-'80): circuiti integrati
compatibilita' tra macchine IBM diverse (360,370, . . . )
OS/360 con multiprogrammazione
MULTICS: servizio centralizzato e time-sharing
PDP-1 . . . -11: minicalcolatori a 18bit
UNIX: Versione singolo utente di MULTICS per PDP-7
Tipologie SO
Diversi obiettivi e requisiti a seconda delle situazioni
Supercalcolatori
Personal Computer IBM e MS-DOS
MacIntosh di Apple con GUI (Graphical User Interface)
Sistema operativo Windows
Windows costruito su DOS
Windows 95 e Windows 98 (ancora con codice assembly a 16bit)
Windows NT e Windows 2000 (a 32bit)
Mainframe
Server
Multiprocessore
Personal Computer
Windows Me (update di Windows 98)
Windows XP
Linux versione open source di Unix
11
Real Time
Embedded
SO per mainframe
SO per supercalcolatori
Grandi quantit`a di dati (> 1TB ≅ 1012 B)
Grandi quantità di dati (> 1T B)
Grande I/O
Enormi potenze di calcolo (es. NEC Earth
Elaborazione "batch" non interattiva
Assoluta stabilità
Applicazioni: banche, amministrazioni, ricerca. . .
Simulator, 40 TFLOP)
Architetture con migliaia di CPU
Elaborazione "batch" non interattiva
Esempi: IBM OS/360, OS/390
Sistemi per server
Sistemi multiprocessore con spesso più di una CPU
in comunicazione stretta.
Rilevamento automatico dei guasti
Elaborazione su richiesta (semi-interattiva)
Applicazioni: server web, di posta, dati, etc.
Esempi: Unix, Linux, Windows NT e derivati
12
SO Oggi
Sistemi complessi che presentano miriadi di problemi.
milioni di linee di codice.
100--1000 programmatori per anno.
Interazioni complesse
Asincrono.
Universale (eseguito su piattaforme diverse).
Differenti classi di utenti hanno differenti necessità.
Performance è cruciale!
Poco compresi
Il SO tipicamente “dura” più di chi lo ha programmato.
Troppo grande per essere compreso da una singola persona.
Mai completamente debuggato (OS/360 rilasciato con 1000
bugs).
Comportamento difficile da prevedere; aggiustamenti spesso
fatti con tentativi.