Sistemi Operativi: Struttura - Lezione 04

1,018 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,018
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
48
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Sistemi Operativi: Struttura - Lezione 04

  1. 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) 1
  2. 2. Tassonomia • Su quali strutture si mappano i programmi ora visti? • Strutture di SO reali – Struttura semplice, struttura stratificata – Macrokernel, Microkernel, Hybrid kernel 2
  3. 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 3
  4. 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 4
  5. 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 5
  6. 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 6
  7. 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 7
  8. 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 8
  9. 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 9
  10. 10. 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 10x
  11. 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 11
  12. 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 12
  13. 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 13
  14. 14. MS DOS: componenti Integrato AMIBIOS Configurazione BIOS 14
  15. 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 15
  16. 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 16
  17. 17. MS DOS: componenti La shell MSDOS 17
  18. 18. MS-DOS: struttura User Programmi di applicazione space Programmi di sistema residenti Kernel Driver dei dispositivi space MS-DOS Driver dei dispositivi ROM BIOS Hardware 18
  19. 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 19
  20. 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 (>) 20
  21. 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 21
  22. 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 22
  23. 23. Struttura stratificata Uno strato di sistema operativo Le operazioni dello strato m fanno strato m uso delle funzionalità definite nello strato m-1. strato m-1 fj 23
  24. 24. Struttura stratificata Uno strato di sistema operativo Lo strato m definisce anche strato m operazioni nascoste, non visibili agli strati superiori. Tali operazioni sono di supporto. strato m-1 gk fj 24
  25. 25. Struttura stratificata Uno strato di sistema operativo Le funzionalità dello strato m+1 strato m utilizzano le funzionalità definite nello strato m. Non sono visibili le funzioni di supporto. strato m-1 gk strato m+1 fj 25
  26. 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 26
  27. 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 27
  28. 28. UNIX utenti User space interprete comandi, comandi compilatori, interpreti librerie di sistema Kernel interfaccia syscall/kernel scheduling CPU space segnali file system gestione terminali avvicendamento sostituzione pagine sistema I/O caratteri sistema I/O blocchi demand paging driver terminali driver nastri, dischi memoria virtuale interfaccia kernel/architettura fisica controller terminali controller mem. controller disp. terminali memoria nastri, dischi 28
  29. 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/U nix_history-simple.svg 29
  30. 30. OS/2 User space Applicazione Applicazione Applicazione Application Program Interface (API) Estensione (API) sottosistema sottosistema sottosistema gestione della memoria Kernel kernel dispatching dei task space gestione dei dispositivi device driver device driver device driver 30
  31. 31. OS/2 Il desktop grafico di OS/2 31
  32. 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 32
  33. 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 33
  34. 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 34
  35. 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 35
  36. 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 36
  37. 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 37
  38. 38. Macrokernel vs. Microkernel Macrokernel Microkernel (kernel monolitico) Applicazione User mode Virtual File System IPC, File System Applicazione Unix Device File IPC server driver server Scheduler Memoria virtuale Kernel IPC di base Memoria virtuale mode Device drivers Scheduler Hardware Hardware 38
  39. 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 39
  40. 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à 40
  41. 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 41
  42. 42. Minix: design User ... bash vim make lynx Apps mode Chiamate di sistema, messaggi File Process Network Reinc. Data Servizi server manager server server store Chiamate di kernel, messaggi SATA Audio SCSI Printer ... Driver driver driver driver driver Chiamate di kernel, messaggi Clock System Kernel Kernel IRQ, MMU, IPC mode driver task 42
  43. 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 43
  44. 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 44
  45. 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 45
  46. 46. Minix 46
  47. 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 47
  48. 48. Macro vs. Micro vs. Hybrid kernel Macrokernel Microkernel Hybrid kernel (kernel monolitico) Applicazione Applicazione Applicazione VFS Unix File server server Appl. Unix Device File IPC IPC server driver server File System Appl. Device Scheduler IPC driver Memoria virtuale IPC di base IPC di base Memoria virtuale Memoria virtuale Device drivers Scheduler Scheduler Hardware Hardware Hardware User space 48 Kernel space
  49. 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 49
  50. 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 50
  51. 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 51
  52. 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 52
  53. 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 53
  54. 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 54
  55. 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 55
  56. 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:windowssystem32 Altre DLL sono installate con le applicazioni ● – msp232.dll fornisce funzionalità di spellcheck per Word, Excel, Power Point – Installata con Microsoft Office 56
  57. 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 57
  58. 58. Windows XP: design Applicazione Applicazione Applicazione Win32 Win32 Win32 User Win32 space API Security Virtual I/O IPC Process P&P Power Window Reference Memory Manager manager Manager Manager Manager Manager Monitor Manager Kernel Object Manager space Graphics Device File Device Drivers Microkernel systems Drivers Hardware Abstraction Layer Hardware 58
  59. 59. Windows XP: GUI 59

×