sistemi operativi: struttura - lezione 04
TRANSCRIPT
1
API e ABI• Application Program Interface (API)
– Insieme delle regole che definiscono l'interfaccia del SO, in termini di funzioni utilizzabili
• Application Binary Interface (ABI)– Insieme delle regole che definiscono
l'interazione di un programma con le librerie
• Obiettivi:– Garantire la riproducibilità del processo di
compilazione su diverse istanze dello stesso SO (API)
– garantire la compatibilità di comportamento di un programma fra diverse istanze dello stesso SO (ABI)
2
Tassonomia• Su quali strutture si mappano i programmi ora
visti?• Strutture di SO reali
– Struttura semplice, struttura stratificata– Macrokernel, Microkernel, Hybrid kernel
3
Tassonomia• Tutte le tassonomie prevedono:
– User space: insieme degli indirizzi in cui sono memorizzati i software che girano con privilegi ridotti
– Kernel space: insieme degli indirizzi in cui sono memorizzati i software che girano con privilegi pieni
– User mode: modalità con cui il SO esegue il codice con privilegi ridotti
– Kernel mode: modalità con cui il SO esegue il codice con privilegi pieni
4
Struttura semplice• In realtà, è una assenza di struttura vera
e propria– sistemi “giocattolo”– massima funzionalità nel minimo spazio
• Due elementi principali:– kernel (gestione interruzioni, driver)– programmi di sistema e applicativi
• Esempi:– MS-DOS– Primi UNIX
5
MS DOS: caratteristiche• Microsoft Disk Operating System
– Famiglia di sistemi operativi per PC IBM compatibili (1981-1995)
• Caratteristiche:– singolo utente– singolo task– interfaccia semplice da linea di comando
• Funzioni del kernel non eseguibili concorrentemente (non rientranti)– una volta invocato un servizio di sistema,
non può essere interrotto
6
MS DOS e IBM PC: caratteristiche• I primi processori IBM (8088) potevano
indirizzare 2^20=1024KB– Primi 640 KB: RAM programmi (conventional
memory)– Ultimi 384 KB: dedicati all'hardware (upper
memory area)
• “640K is more memory than anyone will ever need”, Bill Gates, 1981– Ovviamente, ai programmatori 640KB non
bastarono più e cominciarono ad usare anche gli ultimi 384KB
– Bisogno di aumentare la RAM disponibile– Bisogno di mantenere la compatibilità hw/sw
7
MS DOS e IBM PC: caratteristiche• Intel 80286 (1982): in grado di indirizzare 16MB
di memoria• Memoria sopra il primo MB: extended memory
– gestita tramite il driver himem.sys• Primi 64KB (-16 byte) della extended memory:
high memory– Utilizzati per estendere il DOS
8
MS DOS e IBM PC: caratteristiche• Intel 80286 (1982): in grado di indirizzare 16MB
di memoria• Due modalità di uso: real mode e protected
mode• Real mode:
– equivalente ad un vecchio 8086/8088– Indirizzamento a 20 bit
• Protected mode:– Utilizzo di una Memory Management Unit
(MMU) per l'indirizzamento dei 16MB
9
MS DOS e IBM PC: caratteristiche• Intel 80386 (1985): in grado di indirizzare 4GB
di memoria (extended memory)• Real mode:
– equivalente ad un vecchio 8086/8088– Indirizzamento a 20 bit
• Protected mode:– Utilizzo di una Memory Management Unit
(MMU) per l'indirizzamento dei 4GB– Paginazione
• Virtual 8086 mode:– Real mode + modello di segmentazione di un
8086 + paginazione
10x
MS DOS: chiamate di sistema• Invocabili tramite l'eccezione 21H
(int 21H, int 0x21)• Il registro %eax contiene l'identificatore della
chiamata di sistema• Categorie:
– Standard character device I/O– Memory management– Process management– File and directory management– Miscellaneous
11
MS DOS: programmi TSR• Una chiamata di sistema (Terminate and Stay
Resident, TSR) permette di ritornare il controllo al sistema, mantenendo in memoria il programma che la invoca
• Il programma torna in esecuzione sulla base di eventi esterni
• Meccanismo primordiale per:– multitasking (forzato da eventi)– server– software gestione di dispositivi hardware
12
MS DOS: programmi TSR• Un programma scrive il proprio indirizzo di
partenza in uno o più elementi del vettore delle interruzioni
• Quando un programma vuole interrompere il proprio funzionamento, invoca l'eccezione relativa al TSR:– int 21H (prime versioni, limite di 64KB)– int 27H (nessun limite di memoria, exit code)
• Meccanismo ideale per creare un virus– si impostano i vettori di interruzione relativi
all'I/O alla routine principale del virus– ciascuna richiesta di I/O allega il virus al file
13
MS DOS: componenti• Il sistema MS DOS è composto da tre parti
principali: BIOS, kernel, shell• BIOS: Basic Input/Output System
– circuito integrato (ROM, EPROM, EEPROM) contenente I software di gestione delle periferiche (device driver)
– funzioni di lettura/scrittura invocabili tramite eccezioni (trap) o tramite il file io.sys
– fornito dalle case produttrici delle schede madri, piuttosto che dalla Microsoft
– occupa gli indirizzi vicini al 1MB– solitamente, è proprietario; è in corso di
sviluppo un “Free BIOS” da parte della FSF
14
MS DOS: componenti
Integrato AMIBIOS Configurazione BIOS
15
MS DOS: componenti• Il sistema MS DOS è composto da tre parti
principali: BIOS, kernel, shell• kernel: contiene la parte del sistema operativo
indipendente dalla macchina– memorizzato nel file msdos.sys– gestione dei processi– gestione della memoria– gestione del file system– smistamento delle chiamate di sistema
16
MS DOS: componenti• Il sistema MS DOS è composto da tre parti
principali: BIOS, kernel, shell• shell: interfaccia a linea di comando
– memorizzata nel file command.com– comandi di base (builtin)
• Due parti: residente e non residente• Residente:
– memorizzata subito dopo msdos.sys– gestore interruzioni 22H (terminate address),
23H (Ctrl-Break Handler), 24H (Critical Handler)• Non residente:
– memorizzata al termine della memoria– prompt, legge/interpreta/esegue i comandi
17
MS DOS: componenti
La shell MSDOS
18
MS-DOS: struttura
Programmi di applicazione
Programmi di sistema residenti
Driver dei dispositiviMS-DOS
Driver dei dispositivi ROM BIOS
Hardware
Userspace
Kernelspace
19
MS DOS:inizializzazione e configurazione
• Due obiettivi: configurazione device driver e script di avvio del sistema– sysinit: programma che avvia il SO
• Primo passo: sysinit carica config.sys– allocazione buffer cache– inizializzazione device driver– impostazione code page
• Secondo passo: sysinit carica command.com• Terzo passo: command.com legge lo script di
avvio autoexec.bat
20
MS DOS: memoria secondaria• Rappresentazione tramite file e directory• Gerarchia di directory (albero)• Formato nomi file: 8.3
– 8 caratteri per il nome, 3 per l'estensione– case insensitive
• Presenza di una unica “directory di lavoro”• Redirezione stdin (<) e stdout (>)
21
MS DOS: gestione dispositivi• I dispositivi sono identificati tramite sigle
terminate dal carattere “:”– COM1,...,COM4: le quattro porte seriali– CON: la console di lavoro (shell)– LPT1, ..., LPT3: stampanti– PRN: identico ad LPT1– NUL: nessun dispositivo (scarto)– A: primo floppy (3 ½)– B: secondo floppy (3½, 5¼)– C: hard disk
22
Struttura stratificata• Le funzionalità fornite dal SO vengono
suddivise in strati– ciascun strato implementa le proprie
funzionalità basandosi su quelle definite negli strati inferiori
– strato 0: strato fisico– strato n: interfaccia utente
23
Struttura stratificataUno strato di sistema operativo
strato m
strato m-1
Le operazioni dello strato m fannouso delle funzionalità definite nellostrato m-1.
fj
24
Struttura stratificataUno strato di sistema operativo
strato m
strato m-1
Lo strato m definisce ancheoperazioni nascoste, non visibiliagli strati superiori. Tali operazionisono di supporto.
fj
gk
25
Struttura stratificataUno strato di sistema operativo
strato m
strato m-1
Le funzionalità dello strato m+1utilizzano le funzionalità definitenello strato m. Non sono visibilile funzioni di supporto.
fj
gk
strato m+1
26
Struttura stratificata• Vantaggi: modularità
– ciascuno strato usa funzionalità dei livelli inferiori (idealmente, quello direttamente inferiore)
– il primo strato può essere progettato senza considerare il resto del sistema
– una volta implementato e corretto il primo strato, il secondo si appoggia sulle funzioni del primo
♦approccio a guscio (shell)♦ incrementale, più semplice da correggere
– ogni strato nasconde a quelli superiori i dettagli implementativi
27
Struttura stratificata• Svantaggi:
– come definisco esattamente gli strati?♦dove finisce uno e comincia l'altro?♦Es.: il sistema di gestione della memoria ha
bisogno dei driver del disco, per poter implementare lo “swapping”
–driver disco in uno strato più basso rispetto alla gestione della memoria
– l'efficienza di un sistema stratificato è minore rispetto ad un sistema a strutttura semplice
♦aggravio computazionale legato alle di chiamate funzioni fra strati
28
UNIX
utenti
interprete comandi, comandicompilatori, interpreti
librerie di sistema
interfaccia syscall/kernel
segnaligestione terminali
sistema I/O caratteridriver terminali
file systemavvicendamento
sistema I/O blocchidriver nastri, dischi
scheduling CPUsostituzione pagine
demand pagingmemoria virtuale
interfaccia kernel/architettura fisica
controller terminaliterminali
controller mem.memoria
controller disp.nastri, dischi
Userspace
Kernelspace
29
UNIX• Due parti: kernel e programmi di sistema
– KERNEL♦interfaccia system call♦system call, funzionalità di basso livello♦interfaccia architettura fisica
– struttura tendente alla stratificazione♦prime versioni di UNIX ancora semplici♦oggi UNIX è più stratificato
–approccio progettuale top-down• Per una “panoramica” di tutti I SO UNIX mai
esistiti:http://upload.wikimedia.org/wikipedia/commons/7/77/Unix_history-simple.svg
30
OS/2
Applicazione Applicazione Applicazione
Application Program Interface (API) Estensione (API)
sottosistema sottosistema sottosistema
kernel
device driver device driver device driver
gestione della memoriadispatching dei task
gestione dei dispositivi
Userspace
Kernelspace
31
OS/2
Il desktop grafico di OS/2
32
Macrokernel• Detto anche kernel monolitico• L'intero insieme dei servizi (stratificato o no)
esegue in kernel mode• L'intero insieme delle applicazioni (stratificato
o no) esegue in user mode• Vantaggi:
– Esecuzione dei servizi estremamente veloce
• Svantaggi:– Marcata fragilità (un crash interrompe il
funzionamento della macchina)– Dimensione del kernel enorme
• Esempi:– Unix-like kernels, Linux, BSD, AIX
33
Macrokernel: moduli• Per mitigare gli svantaggi, parecchi SO hanno
introdotto il meccanismo dei moduli caricabili (loadable modules)– Solo la funzionalità strettamente necessaria del
kernel viene caricata all'avvio– Le funzionalità superflue possono essere
caricate dinamicamente, successivamente
• Vantaggi:– La dimensione di base del kernel diminuisce
sensibilmente– Un crash di un modulo non pregiudica il
funzionamento del sistema
34
Microkernel• Con l'aumentare dei servizi, il kernel dei
sistemi UNIX è cresciuto notevolmente– problemi enormi di manutenzione del codice– Alta probabilità di “crash” con brusca
interruzione del funzionamento del SO
• IDEA: concepire la maggior parte dei servizi come applicazioni
• Fine anni '80: nascita di Mach– Carnegie Mellon University– Prima implementazione di microkernel
35
Microkernel• Con l'aumentare dei servizi, il kernel dei
sistemi UNIX è cresciuto notevolmente– problemi enormi di manutenzione del codice– Alta probabilità di “crash” con brusca
interruzione del funzionamento del SO• IDEA: concepire la maggior parte dei servizi
come applicazioni cooperanti tramite scambio messaggi
• Il kernel implementa il minimo indispensabile• Fine anni '80: nascita di Mach
– Carnegie Mellon University– Prima implementazione di microkernel
36
Microkernel• Si rimuove dal kernel tutto ciò che non è
strettamente essenziale• Tutto ciò che non è strettamente
indispensabile è implementato come applicativo server (demone) utente
• Cosa rimane nel kernel?– meccanismo di comunicazione a messaggi
fra le varie componenti del sistema (Inter Process Comunication, IPC)
– gestione processi– gestione memoria
37
Microkernel• Vantaggi:
– facilità di estensione del SO♦si scrive un nuovo applicativo server♦il kernel NON deve essere modificato
– il kernel è ridotto all'osso♦modifiche ridotte e localizzate
• Svantaggi:– meno performante di un kernel monolitico
• Implementazioni:– Tru64 UNIX (Digital), Mach, MacOS, Minix
38
Macrokernel vs. Microkernel
Applicazione
A
Macrokernel(kernel monolitico)
Microkernel
Virtual File System
V
SchedulerMemoria virtuale
S
IPC, File System
I
Device drivers
D
Hardware
H
Hardware
H
IPC di baseMemoria virtuale
Scheduler
ApplicazioneIPC
Unixserver
Devicedriver
Fileserver
Usermode
Kernelmode
39
Minix• Sistema operativo UNIX-like, progettato da
Andrew S. Tanenbaum (1987)• Oggi siamo alla versione 3 (2005-2008)• Approccio microkernel:
– 5K linee di codice (Minix v3)– 2.5M linee di codice (Linux)– 5M linee di codice (Windows XP)
• Scritto per sistemi Intel a 32 bit (almeno 386)– Port per PowerPC ed ARM
40
Minix: obiettivi• Affidabilità
– ridurre l'impatto di un crash di sistema– riattivare automaticamente parti difettose– sviluppo di nuovi driver “a caldo”
• Prestazioni– ridurre la perdita di prestazioni rispetto ai kernel
monolitici
• Sviluppo– modularità
41
Minix: design• Kernel: servizi essenziali per instanziare e far
parlare tra loro componenti distinti– Gestione interruzioni– Gestione memoria– Scambio messaggi (IPC) fra componenti– Gestione orologio di sistema (clock driver)– Invocazione servizi messi a disposizione dal
kernel (system task): copia dati kernel<->user, chiamate I/O dirette alle periferiche
• User: driver periferiche, servizi, applicazioni– Device driver dischi, audio, rete, stampante– Gestione file, processi, rete, fault tolerance– Shell, editor, browser
42
Minix: design
bash
s
vim
v
make
m
lynx
m
...
Fileserver
F
Processmanager
P
Networkserver
N
Reinc.server
RN
Datastore
D
SATAdriver
S
Audiodriver
SCSIdriver...
Printerdriver
IRQ, MMU, IPC Clockdriver
Systemtask
Usermode
Kernelmode
Kernel
Driver
Servizi
Apps
Chiamate di sistema, messaggi
Chiamate di kernel, messaggi
Chiamate di kernel, messaggi
43
Minix: comunicazione fra processi• Aree di memoria dei processi rigorosamente
separate• La comunicazione fra processi diverse avviene
tramite scambio di messaggi di lunghezza fissa
• Lo scambio di messaggi è sincrono:– Il mittente si blocca se nessuno può ricevere– Il ricevente si blocca se nessuno può inviare– Il kernel copia il messaggio dall'area dati
mittente all'area dati ricevente
44
Minix: comunicazione processi/kernel• Avviene tramite chiamate di sistema, effettuate
dai processi ai servizi• I servizi inviano messaggi ai driver• I driver effettuano le necessarie chiamate di
kernel• Il kernel soddisfa la richiesta• Il risultato si propaga per i livelli superiori
attraverso messaggi di risposta
45
Minix: affidabilità• Ottenuta tramite due servizi:
– Reincarnation server– Data store
• Reincarnation server:– Controlla se un componente crasha– Riavvia il componente, se necessario, in
maniera trasparente alle applicazioni– Se non lo può riavviare, notifica l'applicazione – Registra le operazioni andate male– Non altera il comportamento dei programmi
• Data store:– Minuscolo database di configurazioni– Ciascun processo ci scrive quello che vuole
46
Minix
47
Hybrid kernel• Combina gli aspetti positivi dei microkernel e
dei macrokernel• Tutti i device driver girano in kernel mode• Per il resto, simile ad un microkernel• Vantaggi:
– Esecuzione driver più veloce (no messaggi)– Crash servizi non interrompe la macchina
• Svantaggi:– È comunque più lento di un macrokernel– È comunque meno robusto di un microkernel
• Esempi:– Windows NT, Windows XP, Plan 9
48
Macro vs. Micro vs. Hybrid kernel
Applicazione
A
Macrokernel(kernel monolitico)
Microkernel
VFS
V
SchedulerMemoria virtuale
S
IPCFile System
I
Device drivers
D
Hardware
H
Hardware
H
IPC di baseMemoria virtuale
Scheduler
Appl.IPC
Unixserver
Devicedriver
Fileserver
User spaceKernel space
Hybrid kernel
Hardware
IPC di baseMemoria virtuale
Scheduler
Appl.IPC
Unixserver
Devicedriver
Fileserver
Applicazione Applicazione
49
Windows XP• Sistema operativo Microsoft (2001)• Successore di Windows 2000• Fondato sull'architettura di Windows NT• Diverse versioni:
– Home Edition: Media player, Messenger, Wireless capabilities, Firewall
– Professional Edition: Home + Remote desktop, accesso “disconnesso” a file remoti, SMP, amministrazione gruppi, Win Server Domains
– Professional x64 Edition: Professional + supporto 64 bit
– Media Center Edition: Home + SMP, televisione– Tablet Edition: versione per Tablet PC
50
Windows XP: aggiornamenti• La Microsoft rilascia, occasionalmente, un
insieme incrementale di modifiche da applicare al SO (Service Pack)
• Service Pack 1: settembre 2002– Random fixes, .NET, Messenger, USB 2.0
• Service Pack 2: agosto 2004– SP 1 + Security, Wi-Fi criptato (WPA), pop-up
blocker, Bluetooth, Firewall, Security Center
• Service Pack 3: aprile 2008– SP2 + random fixes
51
Windows XP: HAL• Windows XP è stato progettato per essere
eseguito su (quasi) ogni tipologia di hardware esistente
• Al posto di riscrivere una versione di XP differente per ciascuna piattaforma hw, è stato creato HAL
• HAL: Hardware Abstraction Layer– Software frapposto tra Windows XP e
l'hardware– XP non conosce nulla dell'hardware; lascia
gestire il compito ad HAL– Ciascun utilizzo di hardware viene delegata ad
HAL
52
Windows XP: Kernel• I servizi di HAL sono sfruttati dal Kernel• Kernel:
– Componenti scritti da Microsoft (servizi) – Componenti scritti dai produttori di hw (device
driver)♦Devono passare dei “test rigorosi”
• Il cuore del kernel è il modulo “Microkernel”– Molto compatto– Sistema di IPC per gli Executive Services
53
Windows XP: Kernel• Executive Services: servizi forniti dal kernel
– Analogo dei server di Minix
• Forniscono servizi alle applicazioni– Disegno della GUI sullo schermo– Controllo permessi– Disk I/O
• Sfruttano il servizio di messaggistica del Microkernel
• Microkernel + Executive Services =Windows XP kernel
54
Windows XP: API• Windows XP fornisce 2 API:
– Win32 API: permette ai programmatori di scrivere programmi a 32 bit che girano in User mode
– Native API: permette ai processi/servizi che girano in User mode di invocare servizi del kernel
♦Utilizzata dalla Win32 API
• Le API di Windows sono memorizzate in librerie dinamiche
55
Windows XP: DLL• DLL: Dynamic Link Library• Librerie di funzioni eseguibili/dati che può
essere utilizzata da una applicazione– Funzioni: user32.dll, kernel32.dll– Dati: shell32.dll (icone)
• L'applicazione si “collega” alla DLL nel momento stesso in cui necessita della funzione– Non a tempo di compilazione, bensì di
esecuzione
• Solitamente, hanno l'estensione .dll
56
Windows XP: DLL• Le DLL possono essere utilizzate da più
applicazioni simultaneamente– Condivisione di codice– CreateWindow() in user32.dll
• Alcune DLL sono installate con Windows XP ed a disposizione di tutte le applicazioni– C:\windows contiene circa 2000 DLL– La maggior parte in c:\windows\system32
● Altre DLL sono installate con le applicazioni – msp232.dll fornisce funzionalità di spellcheck
per Word, Excel, Power Point– Installata con Microsoft Office
57
Windows XP: DLL• Esistono quattro DLL principali• ntdll.dll: Native API (funzioni a livello kernel)
– Utilizzate da Win32 API per interagire con l'hw
• kernel32.dll:– I/O su file– gestione dei thread
• user32.dll:– Gestione delle finestre– Gestione degli eventi (ad es., mouse click)
• gdi32.dll:– Funzioni di disegno finestre
58
Windows XP: design
Hardware Abstraction Layer
H
Hardware
H
DeviceDrivers
D
Microkernel
M
GraphicsDeviceDrivers
G
Object Manager
O
SecurityReference
Monitor
S
IPCmanager
I
VirtualMemoryManager
V
ProcessManager
P
P&PManager
P
PowerManager
P
Filesystems
F
WindowManager
W
I/OManager
I
Win32API
W
ApplicazioneWin32
A
ApplicazioneWin32
A
ApplicazioneWin32
A
Kernelspace
Userspace
59
Windows XP: GUI