1 / 62

Sistemi Operativi

Sistemi Operativi. Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 11 Marzo 2014. Agenda. Intro e un p o ’ di storia Qualche curiosità Accenni sul funzionamento di un SO. Cosa vediamo adesso…. Intro e un p o ’ di storia Qualche curiosità

sheila
Download Presentation

Sistemi Operativi

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Sistemi Operativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 11 Marzo 2014

  2. Agenda • Intro e un po’ di storia • Qualche curiosità • Accenni sul funzionamento di un SO

  3. Cosa vediamo adesso… • Intro e un po’ di storia • Qualche curiosità • Accenni sul funzionamento di un SO

  4. Le generazioni • 40’: Prima generazione • E’ in realtà difficile parlare di SO • 50’: Seconda generazione • La General Motors Research Laboratories crea il 1mo SO per l’IBM 701 • 60’: Terza generazione • Multiprogramming, più programmi simultaneamente nella memoria centrale • Time-sharing • 70’-90’: Quarta generazione • Circuiti LSI (Large Scale Integration) • Nascita dei Personal Computer • 00’: Quinta generazione • Sistemi multicore

  5. UNIX • 1969: La storia di UNIX inizia nei laboratori Bell della AT&T • 1973: La svolta, UNIX viene scritto in C. • 1975: Viene scritta la Versione 6 di UNIX • Divenne largamente utilizzata anche fuori dai laboratori Bell • Il problema/il vantaggio: • Essendo allora UNIX libero, ogni venditore di macchine si faceva una versione proprietaria esclusiva, un po' diversa ed spesso incompatibile con le versioni degli altri venditori

  6. *NIX

  7. GNU Operating System • 1984: Nasce il progetto GNU • GNU’s Not Unix • GNU è un sistema operativo tipo Unix distribuito come SW libero • Il Kernel di GNU è Hurd • Kernel in continuo sviluppo • GNU/Linux • Nota: il kernel (nucleo) è un programma che si occupa di dare le funzionalità di base per il funzionamento di un computer

  8. Linux • 1991: Nascita di Linux • Linus Torvalds • Si scontra in un newsgroup Usenet con il professor Andrew Tanenbaum • Tanenbaum è l’invetore di Minix • Divieto di modifcare il codice per fini non educational e sotto approvazione dell’autore • Kernel monolitici Vs microkernel

  9. microkernel Vs kernel modulare • microkernel • kernel minimale con “lo stretto indispensabile” ad utilizzare l’hardware • si scrivono tutti i servizi (chiamate di sistema) in user-space • comunicano direttamente con il kernel minimale • le altre applicazioni in user-space possono decidere di utilizzare le chiamate di sistema o riferirsi direttamente al microkernel. • kernel monolitico • Tutto quanto necessario ad usare il sistema e a fornirne un utilizzo ai programmi che vi girano è programmato in un unico programma (monolitico) che gira in kernel-space

  10. Linux e la sua comunità • I LUG: Linux User Group • Associazioni senza fine di lucro • Diffondere l’uso del SW Libero • Diffondere l’uso dei SO basati sul kernel di Linux • Il Linux DAY • Evento per la promozione del SW libero e dei sistemi basati su Linux

  11. shell di DOS

  12. DOS • CP/M • Control Program for Microcomputers • Gary Kildall della Digital Research • 1980: 86-DOS/QDOS • Quick and Dirty Operating System • Tim Paterson della Seattle Computer Products • 1981: • Luglio: Microsoft compra per$50K(?) l’86-DOS • Agosto: Microsoft Disk Operating System • MS-DOS 1.0

  13. Windows • Nov. 1983: Annuncio di Windows • Nov. 1955: Windows 1.0 rilasciato • 1998: Windows 98 • 2000: Windows 2000 • 2001: Windows XP • 2007: Windows Vista • 2009: Windows 7 • kernel ibrido • microkernel fatto comunicare tramite messaggi con i restanti servizi, tutto in kernel-space

  14. Mac OS e Mac OS X • 1984: Mac OS • Macintosh Operating System • Primo OS ad usare con successo una GUI • ‘86-’95: NextSTEP (’98 Rhapsody) • kernel Mach (microkernel) • Objective-C • Gestione orientata agli oggetti • Diventerà Cocoa • Mac OS X • Rhapsody + Mac OS

  15. Calcolo parallelo Sun Intel N Cores 1000 cores #Cores 64 cores 32 Larrabee Il mondo dell’informatica è pronto per una rivoluzione 8-24 cores 4 Quad core 2 Dual core 1 Time 2005 2006 2007 2014

  16. Sistemi Operativi per multicore • Barrelfish Operating System • @ ETH • http://www.barrelfish.org/ • K42/Tornado OS • @ IBM/Uniersity of Toronto • http://www.eecg.toronto.edu/~tornado/ • fos: Factored Operating System • @ MIT • groups.csail.mit.edu/carbon/fos • Tessellation OS • @ Berkeley • http://tessellation.cs.berkeley.edu/

  17. Cosa vediamo adesso… • Intro e un po’ di storia • Qualche curiosità • Accenni sul funzionamento di un SO

  18. In Italia…Alessandro Rubini • Co-autore di Linux Device Drivers • Pagina personale • http://ar.linux.it/ • Intervista: Il kernel? Non è vecchio, solo complicato • http://linea-dombra.blogspot.com/2010/04/il-kernel-non-e-vecchio-solo-complicato.html

  19. … il Politecnico di Milano • RTAI: RealTime Application Interface • Patch Real Time per Linux • DIAPM: Dipartimento di Ingegneria Aerospaziale • https://www.rtai.org/ • AcOS: AutonomicOperating System for AdaptiveComputing • Patch Self-Aware per Linux e FreeBSD • DEI: Dipartimento di Elettronica e Informazione • www.changegrp.org/acos • morphone.OS • Patch Self-Aware per Android • DEI: Dipartimento di Elettronica e Informazione • www.changegrp.org/morphone

  20. Cosa vediamo adesso… • Intro e un po’ di storia • Qualche curiosità • Accenni sul funzionamento di un SO

  21. Il sistema Operativo • Il sistema operativo (SO) è uno strato software che nasconde agli utenti i dettagli dell’architettura hardware del calcolatore • Fornisce diverse funzionalità ad alto livello che facilitano l’accesso alle risorse del calcolatore • Supporta l’esecuzione dei programmi applicativi definendo una macchina virtuale, cioè un modello ideale del calcolatore, sollevando il software applicativo dal compito di gestire i limiti delle risorse disponibili

  22. Il SO e la macchina reale RAM A B C D CPU A, B, C, D Periferiche A, B, C, D utilizzo a rotazione suddivisione in blocchi utilizzo a rotazione bus

  23. Il SO e le macchine virtuali CPU B RAM B HD B CPU C RAM C HD C bus proc. C proc. B Rete B I/O B Rete C I/O C OD B OD C CPU A RAM A HD A CPU D RAM D HD D proc. D proc. A Rete A I/O A Rete D I/O D OD A OD D • Il sistema operativo può gestire più processi simultaneamente • Rende quindi visibile ad ogni processo una macchina virtuale ad esso interamente dedicata e quindi con risorse proprie • nella figura OD = other devices (altri dispositivi)

  24. Il SO è tipicamente organizzato a strati Ciascun strato costituisce una macchina virtuale che gestisce una risorsa del calcolatore Le principali funzionalità offerte sono: La gestione dei processi La gestione della memoria La gestione delle periferiche (tra cui la rete) La gestione del file system La gestione dell’interfaccia utente Le prime tre funzionalità sono indispensabili per il funzionamento del sistema e pertanto costituiscono il nucleo del SO (Kernel) Architettura del SO Kernel

  25. Tipi di Sistema Operativo • Esistono diversi tipi di sistema operativo, ma in generale si possono dividere in: • Monoutente e monoprogrammato • Esecuzione un solo programma applicativo alla volta • Viene utilizzato da un solo utente per volta • Esempio: DOS • Monoutente e multiprogrammato (multitasking) • Consente di eseguire contemporaneamente più programmi applicativi • Esempio: Windows 95 • Multiutente • Consente l’utilizzo contemporaneo da parte di più utenti • E’ inerentemente multiprogrammato • Esempio: Linux

  26. Gestione dell’interfaccia utente • Il SO fornisce un interprete dei comandi inseriti dall’utente attraverso la tastiera o il mouse • L’interfaccia utente può essere • Testuale (esempio: DOS) • Grafica (esempio: Windows) • Consente l’inserimento di diversi comandi: • Esecuzione di programmi applicativi • Operazioni sulle periferiche • Configurazione dei servizi del SO • Operazioni sul file system (creazione, rimozione, copia, ricerca, ecc.)

  27. Gestione del file system • Il SO si occupa di gestire i file sulla memoria di massa: • Creare un file • Dargli un nome • Collocarlo in un opportuno spazio nella memoria di massa • Accedervi in lettura e scrittura • Gestione dei file indipendente dalle caratteristiche fisiche della memoria di massa • I file vengono inclusi all’interno di directory (o cartelle, o cataloghi) • In genere, le directory sono organizzate ad albero

  28. La struttura ad albero

  29. Organizzazione dei file • A ciascun utente è normalmente associata una directory specifica, detta home directory • Il livello di protezione di un file indica quali operazioni possono essere eseguite da ciascun utente • Ciascun file ha un pathname (o nome completo) che include l’intero cammino dalla radice dell’albero • Il contesto di un utente all’interno del file system è la directory in cui correntemente si trova

  30. Gestione delle periferiche • Sono meccanismi software a cui è affidato il compito di trasferire dati da e verso le periferiche • Consentono ai programmi applicativi di leggere o scrivere i dati con primitive di alto livello che nascondono la struttura fisica delle periferiche • e.g., nel sistema Unix le periferiche sono viste come file speciali

  31. Gestione dei processi • Il SO multiprogrammato e multiutente si occupa di gestire l’esecuzione concorrente di più programmi utente • La CPU del calcolatore (o le CPU nei sistemi multiprocessore) deve essere distribuita in maniera opportuna fra i programmi da eseguire • Ogni programma eseguito ha a disposizione una macchina virtuale realizzata dal SO che ne consente l’esecuzione come se la CPU del calcolatore fosse interamente dedicata a esso

  32. Ma prima… PAUSA!!!... 10’

  33. Che cosa è un processo per il SO? • Processo ≠ programma ! • Processo = esecuzione di un programma, composto da: • codice eseguibile (il programma stesso) • dati • Lo stesso programma può essere associato a più processi: • Un programma può essere scomposto in varie parti e ognuna di esse può essere associata a un diverso processo • Lo stesso programma può essere associato a diversi processi quando esso viene eseguito più volte, anche simultaneamente

  34. Processi e strutture dati • Ad un processo sono associate le seguenti strutture dati: • Uno o più segmenti di codice • Uno o più segmenti di memoria dati • I descrittori di eventuali risorse in uso (file, finestre, periferiche, ecc.) • Uno o più thread • Un processo consta di tre zone di memoria chiamate regioni: dati, codice e stack

  35. Ricordate la… visibilità Livello globale g1,g2,g3 a,b main a,c blocco1 f1 a,d blocco2 d blocco3 char g1, g2, g3; main() { int a, b; … {/*blcco1*/ double a,c; } … } void f1(){ … {/*blocco2*/ char a,d; } … {/*blocco3*/ float d … } }

  36. Ambiente di esecuzione • L’ambiente di esecuzione di una funzione (variabili e parametri formali) viene creato al momento della chiamata e rilasciato quando la funzione termina • In una sequenza di chiamate, l’ultima chiamata è la prima a terminare • La zona di memoria di lavoro che contiene l’ambiente di esecuzione di un sottoprogramma è gestito con la logica di una pila (stack) • L’ultimo elemento inserito nello stack è il primo ad essere estratto • Logica LIFO (Last In First Out)

  37. Ambiente di esecuzione: esempio Ambiente c Ambiente b Ambiente a void a (); void b(); void c(); main(){ … a(); … } Esecuzione di a Esecuzione di b Esecuzione di c Termine di c Termine di b Termine di a void a (){ printf(“Esecuzione di a\n”); b(); printf(“Termine di a\n”); } void b(){ printf(“Esecuzione di b\n”); c(); printf(“Termine di b\n”); } void c(){ printf(“Esecuzione di c\n”); … printf(“Termine di c\n”); }

  38. Record di attivazione • Alla chiamata di una funzione • si alloca uno spazio di memoria (record di attivazione) in cima allo stack per contenere i parametri formali e le variabili locali • lo spazio viene rilasciato quando la funzione termine (ricordate la funzione swap senza puntatori?) • Il record di attivazione contiene: • L’ambiente locale della funzione • L’indirizzo di ritorno al chiamante • Funzionamento: • Ad ogni attivazione viene allocato un record di attivazione • Al termine dell’attivazione il record viene rilasciato (l’area di memoria è riutilizzabile) • La dimensione del record di attivazione è già nota in fase di compilazione • Il numero di attivazioni della funzione non è noto • Il primo record di attivazione è destinato al main()

  39. Lo stack • Nello stack, i record vengono allocati “uno sopra l’altro”; il primo record dello stack è relativo all’ultima funzione attivata e non ancora terminata • Lo stack cresce dal basso verso l’alto • Stack pointer: registro della CPU che contiene l’indirizzo della cima della pila • Una parte della RAM è destinata a contenere lo stack • Stack overflow: quando l’area della RAM destinata allo stack viene superata (troppi annidamenti di chiamate) SP 312 312 311 Operazione di inserimento: -incremento SP -scrittura in parola indirizzata da SP Operazione di estrazione: -lettura da parola indirizzata da SP -decremento SP 310 ... 303

  40. Problema • Si scriva un programma in C che, preso un Cubo di char, lo stampa a video • La dimensione del cubo è 2x2x2

  41. Soluzione: cubo di caratteri

  42. Ma se… • Si scriva un programma in C che, preso un Cubo di char, lo stampa a video • La dimensione del cubo è 1000x1000x1000 Stack Overflow: 103x103x103=109

  43. Lo stato di un processo • Lo stato del processo può essere distinto fra stato interno e stato esterno. • Lo stato interno indica: • la prossima istruzione del programma che deve essere eseguita; • i valori delle variabili e dei registri utilizzati dal processo. • Lo stato esterno indica se il processo è: • in attesa di un evento, ad es. la lettura da disco o l’inserimento di dati da tastiera; • in esecuzione; • pronto per l’esecuzione, e quindi in attesa di accedere alla CPU.

  44. Stato di un processo (1) Inizio esecuzione - Fine quanto di tempo- Interruzione esterna Primo processopronto Evento esterno atteso Interruzione interna Processo in esecuzione Processopronto Processo in attesa - Fine esecuzione- Abort per errore • In esecuzione: assegnato al processore ed eseguito da esso • Pronto: può andare in esecuzione, se il gestore dei processi lo decide • In attesa: attende il verificarsi di un evento esterno per andare in stato di pronto

  45. Stato di un processo (2) Inizio esecuzione - Fine quanto di tempo- Interruzione esterna Primo processopronto P1 P2 Evento esterno atteso Interruzione interna Processo in esecuzione Processopronto Processo in attesa - Fine esecuzione- Abort per errore • I processi appena creati sono messi in stato di pronto • Il kernel decide quale processo pronto mettere in stato di esecuzione • Il kernel assegna il processore a un processo per un quanto di tempo • Coda dei processi pronti • Round-robin • Priorità dei processi

  46. Stato di un processo (3) Inizio esecuzione - Fine quanto di tempo- Interruzione esterna Primo processopronto P1 P2 Evento esterno atteso Interruzione interna Processo in esecuzione Processopronto Processo in attesa - Fine esecuzione- Abort per errore • Il processo in esecuzione passa in stato di attesa se richiede operazioni di I/O (interruzione interna) • Corrisponde alla esecuzione dell’istruzione “chiamata supervisore”(SuperVisor Call, SVC)

  47. Stato di un processo: cambio contesto Inizio esecuzione - Fine quanto di tempo- Interruzione esterna Primo processopronto P1 P2 Evento esterno atteso Interruzione interna Processo in esecuzione Processopronto Processo in attesa - Fine esecuzione- Abort per errore • Cambiamento di contesto: • Salvare il contesto di P1 nel suo descrittore di processo • Il processore è ora libero, un altro processo passerà in esecuzione

  48. Stati di un processo (5) Inizio esecuzione - Fine quanto di tempo- Interruzione esterna Primo processopronto P1 P2 Evento esterno atteso Interruzione interna Processo in esecuzione Processopronto Processo in attesa - Fine esecuzione- Abort per errore • Quando l’operazione di I/O è finita viene generata una interruzione esterna • Il processo in esecuzione viene interrotto • Il kernel esegue il gestore delle interruzioni che esegue le azioni opportune • P1 può tornare pronto • Il kernel sceglie quale processo mandare in esecuzione

  49. Stato di un processo: Preemption Inizio esecuzione - Fine quanto di tempo- Interruzione esterna Primo processopronto P1 P2 Evento esterno atteso Interruzione interna Processo in esecuzione Processopronto Processo in attesa - Fine esecuzione- Abort per errore • Preemption: quando il quanto di tempo è scaduto, il kernel interrompe il processo in esecuzione • Si cerca di garantire un uso equo della CPU a tutti i processi

More Related