1
1. Introduzione
• Architettura dei sistemi di calcolo
2
1. Introduzione
• Un Sistema Operativo (SO) è un
intermediario fra l’hardware (hw) e gli
utilizzatori di tale hw
• Utilizzatore è definito come (=:=)
programmi che risolvono problemi per
(classi di) utenti umani
• Scopo primario è offrire un ambiente in cui
eseguire programmi
3
1. Introduzione
• Diversi punti di vista:
– Governo; fornisce un ambiente
– Allocatore e Gestore di Risorse: hw software (sw)
• tempo di CPU, memoria primaria e secondaria,
• dispositivi di I/O
– Programma di controllo degli utenti rispetto all'I/O
• 2 obiettivi primari:
– Rendere il sistema conveniente da usare
– Usare il sistema in modo efficiente
1
4
1. Introduzione
• Confine del SO non ben definibile: fino ad
includere window system!
• Vediamo l’evoluzione per:
– terminologia
– concetti fondamentali
5
1.2 Sistemi Primitivi
• Macchine hw enormi, usabili (difficilmente)
solo dal programmatore, direttamente dalla
console del sistema
• 1° Passo: Sviluppo di librerie di uso comune
specie per I/O
– device driver (driver di dispositivo): rendere
indipendente l’I/O dai dispositivi del sistema
– driver di dispositivo conosce come funziona il
dispositivo e si interfaccia in modo standard
con il resto del sistema
6
1.2 Sistemi Primitivi
• Compaiono i compilatori (Fortran, Cobol)
– più facile programmazione
– più difficile preparare il programma per
l’esecuzione (varie fasi: compilazione, linking,
caricamento, esecuzione)
– grandissimo tempo di approntamento per
l’esecuzione di un programma
– CPU inutilizzata!
2
7
1.3 Semplici Sistemi Batch
• Scopo: aumentare l’utilizzazione della
macchina
• 2° Passo: Monitor residente
– Figura professionale dell’operatore di macchina
– il programmatore resta fuori della sala
macchina!
– Lavori simili messi nello stesso lotto (batch)
• {meno tempo di approntamento: e.g. prima tutte le
compilazioni, poi i link, poi eseguire i programmi
generati,…}
8
1.3 Semplici Sistemi Batch
• Monitor residente contiene
– sequenzializzazione automatica dei job
– interprete del linguaggio di comandi (JCL)
– Caricatore
– Set di device driver
• Mancanza di interazione fra utente
(programmatore) e job
• Buon turn-around time (=:=)
– tempo_restituzione_job - tempo_sottomissione_job
9
1.3.2 Sovrapposizione di CPU e I/O
• Mentre un device fa I/O la CPU è in un
ciclo attesa ⇒ bassa utilizzazione
• Elaborazione off-line (fuori linea)
– I/O su nastro
– Utilizzo di calcolatori
ausiliari, operazioni
manuali
– Ritardo nel
riempimento dei
nastri
3
10
1.3.2 Sovrapposizione di CPU e I/O
(Cont)
• Spooling (Simultaneous Peripheral
Operation On-Line)
– Reso disponibile dai dischi (accesso diretto!)
– Esecuzione contemporanea dei diversi flussi di
I/O
11
1.3.2 Sovrapposizione di CPU e I/O
(Cont)
• lanciati dalla CPU
– esecuzioni dei job sovrapposta all’I/O
– maggiore utilizzazione
– Utile anche per elaborazioni da remoto
• Job Pool =:= gruppo di job pronti per
l’esecuzione
– È possibile scegliere l’ordine di esecuzione
– Job Scheduling (=:= scelta dell’ordine)
12
1.4 Sistemi Batch Multiprogrammati
• Un singolo utente usa la CPU oppure usa
l’I/O, perché è un programma sequenziale
• Multiprogrammazione =:= Caricare in
memoria primaria per l’esecuzione
numerosi job
– Quando un job richiede I/O, passare ad
eseguire un altro job che richieda invece
CPU
4
13
1.4 Sistemi Batch Multiprogrammati
• Il SO deve prendere decisioni al posto degli
utenti
– Quale job in memoria eseguire fra quelli che
richiedono la CPU? =:= CPU scheduling
– Protezione ⇒ i job non si devono "disturbare"
né "spiare"
14
1.5 Sistemi Time-Sharing
• Estensione della multiprogrammazione
(inizio anni ‘60).
• Obiettivi:
– Gli utenti sono in grado di interagire con il
programma in esecuzione
– programmi interattivi
– interpreti di comandi interattivo (un comando
dietro l’altro)
– debugger interattivo per facilitare la messa a
punto dei programmi
15
1.5 Sistemi Time-Sharing
• File System in linea per tenere dati e
programmi
– File =:= collezioni di dati correlati fra loro,
definita dal creatore del file
– Directory =:= raggruppamenti logici di file
• Nuovi "tipi" di utenti possono usare con
profitto la macchina e i suoi programmi
5
16
1.6 Sistemi di Calcolo Personali (PC)
• Calcolatore dedicato ad un singolo utente
– Diminuzione del costo della CPU e dei dischi
• IBM PC + MS-DOS+Windows
• Apple Macintosh+MacOS
• Iniziale regressione culturale riguardo ai SO:
– single user
– monoprogrammazione
– niente protezione
– virus
– worms
17
1.6 Sistemi di Calcolo Personali (PC)
• Ora si torna faticosamente alla civiltà
perché:
– hw migliore (workstation)
– reti di calcolatori (LAN)
– sistemi distribuiti
– uso dei PC nei gruppi di lavoro
• Evoluzione dei sistemi di calcolo e dei SO
18
6
19
1.7 Sistemi Paralleli
• Multiprocessori =:= più di una CPU, e in comune:
– bus di sistema, clock, memoria (spesso) periferiche
– accoppiamento stretto
• Aumento del throughput (=:= job completati
all’ora) a parità di costo perché
– costi I/O e struttura condivisi
– miglior costo per CPU medio-piccole
20
1.7 Sistemi Paralleli
– vantaggio prestazionale cresce meno che
linearmente col costo
– maggiore affidabilità: fail-soft, graceful
degradation
– Simmetrici =:= ciascun processore esegue una
copia del SO
– Asimmetrici =:= ogni processore ha un compito
specifico
21
1.8 Sistemi Distribuiti
• Sistemi con molte CPU che non condividono
memoria né clock → sistema di comunicazione
• Accoppiamento lasco
• Vantaggi:
– Condivisione delle risorse
– Accelerazione del calcolo (load sharing)
– Affidabilità (se i siti sono indipendenti, altrimenti il
contrario!)
– Supporto alla comunicazione e alla cooperazione fra gli
utenti
7
22
1.9 Sistemi Real-Time
• =:= quando ci sono requisiti rigidi sui tempi
impiegati dalle applicazioni della macchina
o sul flusso dei dati
– Es. controllo di dispositivi in applicazioni
industriali
• I limiti di tempo sono ben definiti e
prefissati:
– l’elaborazione deve terminare entro un certo
tempo
23
1.9 Sistemi Real-Time
• Il programmatore applicativo deve fare la
sua parte, e il SO la sua!
• Hard real-time =:= obbligo tassativo
– → limitata (o nulla) memoria secondaria
– → ROM, FLASH-EPROM, EEPROM
– → SO molto semplici per garantire tempo di
esecuzione limitato superiormente
– ⇒ ⇒ SO specializzati
24
1.9 Sistemi Real-Time
• Soft real-time =:= obbligo non tassativo,
compatibile con la coesistenza con task che
non sono real-time
– non sono adatti al controllo industriale
– applicazioni multimediali, realtà virtuale,
esplorazione sottomarina o spaziale, ...
– è una funzionalità sempre più diffusa
8
25
Conclusioni
• I SO sono dei mediatori fra utenti e hw per
fornire
– ambiente più conveniente per l’esecuzione dei
programmi
– aumentare l’efficienza dell’utilizzo dell’hw
• Continua evoluzione sotto la pressione di
– bisogni degli utenti
– caratteristiche dell’hw
– costo dell’hw
– modo di usare la macchina che gli stessi SO
rendono possibile
26
2 Strutture dei Sistemi di Calcolo
• Dal corso di Architetture
• Architettura generale in figura
27
2.1 Operazioni della Macchina
• Bootstrap per partire
• Interrupt & Trap & System Call
• Vettore delle interruzioni & salvataggio del
contesto
• Disabilitazione delle interruzioni,
mascheramento
• I SO sono event-driven
– interrupt
– trap
– system call → test sulla causa dell’evento
9
28
2.2 Struttura dell’I/O
• Controller per ogni dispositivo
– SCSI (Small Computer System Interface)
controlla in daisy chain fino a 7 dispositivi
– EIDE (Enhanced Integrated Drive Eletrocnics)
controlla fino a 4 dischi
• Ha memoria locale, CPU locale, sposta i
dati dai suoi buffer al dispositivo controllato
29
2.2.1 Interrupt
• L’utente può vedere l’I/O come sincrono o
asincrono
• Sincrono =:= la system call termina quando
l’I/O termina
• Asincrono =:= la system call termina
quando l’I/O è avviato; un’altra system call
necessaria per attendere e/o prelevare
risultati
30
2.2.1 Interrupt
• Il SO può a sua volta fare I/O in modo
sincrono o asincrono:
– sincrono =:= la CPU cicla in attesa della
terminazione, ad es. dell’interrupt
– asincrono =:= la CPU passa a fare altro fino
all’interrupt
– → maggiore efficienza ed utilizzazione della
CPU!
10
31
I/O sincrono vs asincrono
• Confronto tra i due metodi
32
2.2.2 Struttura DMA
• I dispositivi veloci non possono
interrompere ad ogni byte trasferito
• DMA =:= Direct Memory Access: il driver
trasferisce direttamente da/in memoria i dati
• Il driver inizializza il controller DMA per
un trasferimento di un blocco; il controller
DMA interrompe quando tutto il
trasferimento è finito
33
2.3 Struttura della Memoria
• Corso di Architetture! (Richiami)
• I programmi devono essere in memoria
principale (MP) per essere eseguiti
– dimensione della MP: da milioni di byte a
migliaia di milioni di byte
• Architettura Von Neumann: fetch &
execute, metodi di indirizzamento, memorymapped I/O
Animazione
11
34
2.3 Struttura della Memoria
• La MP è ancora troppo lenta per la velocità
della CPU
– memoria cache fra CPU e MP, sulla CPU
• La MP è volatile, non permanente e troppo
piccola per i bisogni degli utenti
– memoria secondaria (MS)
35
2.3 Struttura della Memoria
• La MS è spesso costituita da dischi magnetici a
testine mobili (anno 2001)
– 7200 giri/m, molti "piatti", 2 facce, molti settori
– 10-40 MB/s transfer rate, tempo di accesso 8-20 ms
– capacità 10-75 GB
• Controller di disco, a volte dotato di memoria
cache
• Floppy, dischi ottici, nastri magnetici
– → Gerarchia di memorie
36
2.4 Gerarchia di Memorie
P
i
ù
v
e
l
o
c
i
P
i
ù
c
a
p
a
c
i
• Velocità implica costo maggiore, capacità
minore, volatilità maggiore
12
37
2.4.1 Caching
• Il luogo di immagazzinamento a lungo
termine non è il più conveniente per l’uso a
breve termine
– Durante l’uso copiare l’informazione in una
memoria più veloce ma più costosa e più piccola
– Ricopiare l’informazione in quella permanente
meno veloce, meno costosa, più grande, dopo
l’uso
• La gerarchia della figura è una gerarchia di
cache, una sull’altra
38
2.4.1 Caching
• Gestione della cache: quanto più è veloce,
tanto più la gestione deve essere veloce e
fatta in modo automatico
– registri-cache-MP: hw della CPU
– MP-MS: il SO
– MS-Memoria ottica: dispositivi magneto-ottici
– MS-Nastri: utente, ma ora anche il SO
39
2.4.1 Caching
• Coerenza e consistenza della cache:
problema quando i dati sono presenti in più
memorie e in più posti
– molte cache dello stesso dato, ad es. in un
multiprocessore stretto
13
40
2.5 Protezione Hardware
• Corso di Architetture! [Richiami]
• Condivisione delle risorse → protezione da
cattivo uso (incorretto e malizioso)
• Esiste condivisione anche in ambiente
monoprogrammato (PC!): programmi
eseguiti in successione possono distruggersi
i dati su disco
– → Proteggere il SO e tutti i programmi dai
programmi malfunzionanti
41
2.5.1 Operazioni in Dual-Mode
• Corso di Architetture!
• Stato normale (modo utente) e stato
privilegiato (modo monitor)
– istruzioni privilegiate eseguite in modo
monitor: solo il SO può effettuare queste
operazioni, garantendo la protezione hw
42
2.5.2 Protezione dell’I/O
• Le istruzioni di I/O sono privilegiate (Corso
di Architetture!)
• Solo il SO può accedere ai dispositivi di
input/output
• I primi microprocessori non avevano
istruzioni privilegiate, e quindi i SO non
proteggevano l’I/O (vedi MSDOS)
14
43
2.5.3 Protezione della Memoria
• Dati del SO (ad es. interrupt vector) + codice
SO
• Dati e codice dell’utente
– indirizzi legali di un programma
• Esempio di protezione: registro base + limite
– Protezione a cura dell’hw della CPU
– Registri gestiti dal SO con istruzioni privilegiate
44
45
2.5.4 Protezione della CPU
• Il SO è attivo solo quando la CPU lo esegue
(è la cosa più difficile da capire!)
– Esempio: esecuzione di una system call
• ⇒ Come riprendere la CPU ad un
programma utente?
• Dispositivo Timer che genera interrupt a
tempo
15
46
2.5.4 Protezione della CPU
• Il Timer è caricato con istruzioni
privilegiate, gestito tramite interrupt vector
protetto
• Può anche servire a calcolare data e ora
• Dispositivo Clock, che genera interrupt
periodicamente (a frequenza di rete)
47
2.6 Architettura Generale di un Sistema
• Maggiore utilizzazione della CPU
– multiprogrammazione
– time-sharing
• Condivisione delle risorse
– protezione
– modifica dell’architettura del calcolatore
– sistemi a due stati/modi
– trap per chiamare il SO
• Passaggio di info al SO
– esecuzione della funzione del SO
– ritorno al programma utente chiamante (prima o poi!)
48
Uso di una system call
16
49
3. Strutture di SO
• Panoramica generale di
– Componenti ed interconnessioni
– Servizi
– Interfacce
– Programmi di sistema
– Struttura del sistema
– Macchine virtuali
– Progettazione e implementazione
50
3.1.1 Gestione dei Processi
• Processo =:= un programma in esecuzione
• È l’unità di lavoro
– ♦ del SO
– ♦ dell’utente
• I processi sono concorrenti (=:= eseguono
contemporaneamente)
– ♦ multiplexing della CPU
51
3.1.1 Gestione dei Processi
• Il SO è responsabile delle seguenti attività:
– Creazione e cancellazione dei processi
– Sospensione e ripristino dei processi
– Fornitura di meccanismi per la sincronizzazione
– Fornitura di meccanismi per la comunicazione
– Fornitura di meccanismi per la gestione dei
deadlock
17
52
3.1.2 Gestione MP
• Numerosi programmi in memoria ⇔ contesa
sulla MP
• Attività del SO per la gestione della memoria
– Tenera traccia di quali parti della memoria sono
utilizzate e da chi
– Decidere quali processi caricare in memoria
quando vi sia spazio
– Allocare e deallocare spazio in base alle necessità
• Interazione con la gestione della CPU: per
eseguire occorre essere in memoria!
53
3.1.3 Gestione della MS
• I programmi e i dati rimangono su disco
fino al momento del caricamento
• Il SO è responsabile delle seguenti attività:
– Gestione dello spazio libero
– Allocazione dello spazio
– Scheduling del disco
54
3.1.4 Gestione del sistema di I/O
• Obiettivo: nascondere il più possibile le
differenze fra i vari controller
• Componenti principali:
– Sistemi di buffer-cache
– Interfaccia generale per device driver
– Insieme di driver specifici
18
55
3.1.5 Gestione dei file
• La parte (più) visibile di un SO
• Scopo: fornire una visione uniforme e
astratta della MS
– raccolta di file
– decisi dal creatore/utente
• Organizzazione in directory: struttura logica
decisa dall’utente
• Condivisione ↔ controllo degli accessi
56
3.1.6 Sistema di Protezione
• I diversi processi devono essere protetti
dalle attività degli altri processi
• La protezione è un meccanismo che
controlla l’accesso da parte di programmi,
utenti o processi alle risorse di un sistema
• La protezione aumenta l’affidabilità del
sistema perché può individuare errori alle
interfacce fra i componenti
57
3.1.7 Reti
• Può fornire accesso generalizzato ad una
rete di comunicazione
• Può essere un sistema operativo distribuito,
che fornisce le basi per costruire
applicazioni distribuite
19
58
3.1.8 Interprete di comandi
• =:= interfaccia tra utente e SO
• A volte parte del SO, altre volte uno speciale
programma applicativo (shell in Unix e MsDos)
• A volte orientato a comandi, a volte un vero e
proprio window & menu system
– immagini (icone) rappresentano programmi, file,
directory
– si punta e selezionano icone o menu, usando il
bottone del mouse (clickando) si attivano
programmi, passando loro gli oggetti selezionati
come argomenti
59
3.2 Servizi del SO
• Fornisce servizi ai programmi e agli utenti
di tali programmi
• Rendono la programmazione della
macchina più semplice e produttiva:
– esecuzione di programmi
– I/O e manipolazione di file
– comunicazione fra i processi
– Error detection
60
3.2 Servizi del SO
• Rendono l’utilizzo della macchina più
efficiente
– allocazione delle risorse
– contabilizzazione dell’uso delle risorse
– protezione e sicurezza
20
61
3.3 System Call
• Intefaccia tra processo e sistema operativo
• Esempio: un programma che copia un file in
uno nuovo
• Operazioni tipiche che richiedono
esecuzione di system call
– scrivere sullo schermo/leggere dalla tastiera
– passare argomenti ad un programma mandato in
esecuzione
– aprire un file, crearne uno nuovo
62
3.3 System Call
– messaggi all’utente e alla console (operatore)
– terminare in modo anomalo
– cancellare un file
– leggere da un file, scrivere su un file
– indicazioni di stato riguardanti condizioni di
errore
– chiudere i file
– terminare con successo
63
3.3 System Call
• Comandi di alto livello/accesso diretto alle
system call (syscall), modellate come
funzioni
• Passaggi di parametri alle syscall
– registri
– blocco il cui indirizzo è passato come
parametro in un registro
– via stack
21
64
Passaggio di parametri via blocco
65
Tipi di system call
• Controllo dei processi
– end, abort, load, execute
– create process, terminate process
– get process attributes, set process attributes
– wait for time
– wait event, signal event
– allocate e free memory
• Caricamento programmi: dove si torna?
– al chiamante ⇒ chiamata di programmi
– si eseguono concorrentemente ⇒
multiprogrammazione
66
Tipi di system call
• Manipolazione di file
– create file, delete file
– open, close
– read, write, reposition
– get file attributes, set file attributes
• Struttura di connessione via open/create +
close
22
67
Tipi di system call
• Gestione dei dispositivi
– request device, release device
– read, write, reposition
– get file attributes, set file attributes
– logically attach o detach devices
• Trasparenza rispetto ai file, struttura di
connessione
68
Tipi di system call
• Gestione delle informazioni
– get time o date, set time o date
– get system data, set system data
– get process, file, o device attributes
– set process, file, o device attributes
• Time & Date, utenti, processi
69
Tipi di system call
• Comunicazione
– create, delete communication connection
– send, receive messages
– transfer status information
– attach o detach remote device
• 2 Modelli: Message-Passing - Shared Memory
– Spesso connection oriented, host o process
oriented
– Shared Memory: MapMemory per accedere ad
aree di altri processi
23
70
Message Passing vs Shared Memory
71
3.4 Programmi di Sistema
• Programmi che rendono più conveniente
l’ambiente per i programmi e gli utenti
– librerie (ad es. per le syscall)
– comandi utente, processi e daemon
• Varie categorie:
– manipolazione dei file,
– informazioni di stato,
– modifica dei file (text editor),
– supporto alla programmazione,
– caricamento ed esecuzione dei programmi,
– comunicazioni, programmi applicativi
72
3.4 Programmi di Sistema
• Interprete di comandi è il più caratterizzante,
anche quando non fa parte del SO
– l’interprete contiene il codice per eseguire i
comandi dell’utente
– i comandi sono (quasi) tutti dei programmi di
sistema, mandati in esecuzione dall’interprete
– SO deve permettere a un programma di
mandarne in esecuzione un altro
– SO deve permettere di passare argomenti da
programma a programma
24
73
3.5 Struttura del Sistema
• Per tenere sotto controllo la complessità
• 3.5.1 Struttura semplice
• Nessuna, perché il sistema è molto
semplice, per hw molto limitato.
– Es. MS-DOS
74
3.5.1 Struttura semplice
• Molto limitata, perché il sistema
inizialmente era semplice, su hw semplice.
Es. Unix
• Approccio a micro-kernel. Es Mach
75
3.5.2 Approccio a strati
• Hw rende possibile e conveniente la
scomposizione in componenti
• Approccio a strati: ogni strato è un oggetto astratto
Notare: incapsulamento,
e non perforazione dei
livelli (come in DOS),
filtraggio delle chiamate
di livello inferiore
25
76
3.5.2 Approccio a strati
• Poco efficienti → ridurre i livelli,
modularizzare in verticale. Es OS/2
77
3.6 Macchine Virtuali
• Utilizzare l’hw in modo da poter usare
anche SO diversi contemporaneamente
• La macchina virtuale è esattamente identica
(a parte la quantità) alla macchina reale
78
3.6 Macchine Virtuali
• CPU scheduling per multiplexare la CPU,
spooling e file system per virtualizzare i
dispositivi di I/O (minidisk del VM/370)
• Utilizzo sofisticato del dual-mode, sempre
mediando attraverso il monitor di macchina
virtuale
• Le istruzioni privilegiate si eseguono molto
più lentamente perché sono simulate.
26
79
3.6 Macchine Virtuali
• Vantaggi:
– protezione delle risorse
– varietà di SO sulla stessa macchina
– facile sviluppo di nuovi SO sulla stessa
macchina
– Stanno tornando di moda per macchine virtuali
diverse (Es. Intel su PowerPC)
• Es. Java Virtual Machine, VMware
80
3.7 Progetto e Implementazione
del Sistema
• Notare: Differenza fra obiettivi di utente e
di sistema; e sono difficili fa formalizzare
• Occorre separazione netta fra politiche e
meccanismi
– politica =:= cosa fare
– meccanismo =:= come fare
• Perché?
– Flessibilità: le politiche cambiano, e quindi
devono poter cambiare
81
3.7 Progetto e Implementazione
del Sistema
• Sistemi a micro-kernel: nel kernel solo
meccanismi
• Allocazione delle risorse & scheduling sono
politiche
• Implementazione dei SO: linguaggi di alto
livello + assembler
– maggior portabilità
– maggior manutenibilità
– maggior capacità di evoluzione
27
82
3.8 Generazione del Sistema
• Varietà di macchine di una certa classe
• Varietà di configurazioni di memoria e di
I/O diversi
• Quale CPU, quanta MP, quali dispositivi di
I/O, quali opzioni di SO
– ⇒ configurato e/o generato per ogni sito per
mezzo di SysGen
83
3.8 Generazione del Sistema
• Varie alternative per SysGen
– modifica sorgenti
– ricompilare, ambiente di compilazione
necessario
– creazione di tavole e selezioni di moduli
linkabili
– necessario re-linkare e ambiente di link
– tutto table-driven
– il SO contiene sempre tutto il codice, scelta a
run-time
84
3.8 Generazione del Sistema
• Differenza di grandezza del SO, generalità
del SO, facilità di SysGen
• Caricamento del kernel =:= booting
– 1. Codice in ROM detto programma di
bootstrap cerca il kernel su un dispositivo di
I/O, lo carica e gli dà il controllo
– 2. Spesso viene caricato un programma di boot
più ricco, che si trova in traccia 0 (zero) sul
disco di boot o sulla rete, il quale cerca il kernel
sul disco o sulla rete
28