Sistemi Operativi (prima parte) Appunti di TPI Elaborati dal prof. Ing. Mario Catalano Per la classe 3 Einf. Il Sistema Operativo (O.S. Operating System) è un insieme di programmi che governa e controlla l’uso delle componenti del sistema di elaborazione ed ha lo scopo di renderli disponibili all’utente per un utilizzo trasparente ed efficace. Il Sistema Operativo può essere inteso come aiuto verso l’utente attraverso i programmi di utilità: editor, compilatori, ecc. ecc. GUI, device, plug and play e come gestore delle risorse: gestione della memoria, gestione della cpu, gestione di i/o e gestione del file system) Caratteristiche • Il sistema operativo: – è un insieme di moduli software – controlla le risorse hardware del sistema – mette a disposizione dell’utente una macchina virtuale, in grado di eseguire comandi dati dall’utente, utilizzando la macchina “reale”. – la macchina virtuale nasconde tutti i dettagli hardware che sarebbero troppo complicati da gestire per la maggior parte degli utenti Funzioni di servizio del SO Esecuzione di applicazioni Accesso ai dispositivi di ingresso/uscita Archiviazione di dati e programmi Controllo di accesso Contabilizzazione Gestione dei malfunzionamenti Visioni fornite da un SO Dall'alto: il sistema operativo fornisce all'utente un'interfaccia conveniente. Dal basso: gestisce tutti le parti di un sistema complesso, allocando in modo ordinato le diverse risorse della macchina: processori, memorie, dischi, interfacce di rete, stampanti e altre periferiche. Inteprete dei comandi (shell) L’interprete dei comandi è quella parte del sistema operativo che riceve ed elabora le istruzioni impartite da un utente. E’ possibile utilizzare lo stesso sistema operativo con shell differenti. Questo può rendere molto diverso il modo di impartire comandi. Inteprete dei comandi (shell) La shell è dunque lo strato più esterno di un sistema operativo. Di fatto, rappresenta l’interfaccia tra utente e sistema. MacOS X Windows XP Linux – KDE 3.0 Interfaccia L’interfaccia è il mezzo attraverso il quale l’utente invia comandi alla shell. Esistono diverse interfacce possibili per l’interazione uomo-macchina. Interfacce Due sono i tipi di interfaccia più diffusi per interagire con un computer: • Interfacce a caratteri, caratteri dette “a riga di comando” (CLI, command line interfaces) • Interfacce grafiche (GUI, graphical user interfaces), in particolare di tipo WIMP (Windows, Icons, Menus, Pointing device) Elementi grafici Come abbiamo visto le interfacce attuali, basate sulla metafora della scrivania, sono di tipo WIMP. Gli elementi che le compongono vengono detti widget (a small gadget) Una “widget” è un elemento che fornisce informazioni all’utente o gli permette di interagire con il sistema operativo o con un’applicazione. Esempi di widget sono le icone, i menu, i pulsanti, le finestre, le barre di scorrimento, le caselle di testo… Classificazione dei SO Come sono scritti i SO • Data la stretta dipendenza dall’HW alcune parti del SO sono in linguaggio macchina. • Tradizionalmente la maggior parte del SW che compone un SO è scritta in C. – Es. Windows, Linux Struttura a “cipolla” Gli strati della “cipolla” • Ogni strato (livello) costituisce una macchina virtuale: – usa le funzionalità di quello sottostante – fornisce servizi al livello che segue nella gerarchia – gestisce delle risorse mediante politiche invisibili ai livelli superiori (struttura modulare del Sistema Operativo) ARCHITETTURA DI SISTEMA OPERATIVO UN Livello 1: Nucleo Hardware Livello 2: Gestione della M.C. Livello 3: Gestione Periferiche Livello 4: Gestione informazioni Programmi di utility: Spool, editor, ecc. Programmi Utente. Livello 0: Macchina fisica: a questo livello appartengono i moduli software che gestiscono l’hardware; Livello 1: Nucleo del sistema operativo: contiene il software Memory Management che ha il compito di gestire il processore da assegnare ai programmi residenti in M.C; Livello 2: Memory Management: contiene i moduli per la gestione della Memoria Centrale ovvero la determinazione dell’allocazione e rilocazione dei programmi; Livello 3: I/O Management contiene i moduli che controllano il flusso dei segnali e informazioni da e verso le periferiche (Device Management) Livello 4: File System o gestore delle Memorie di massa contiene i moduli che controllano l’accesso alle informazioni memorizzate su memoria di massa (Data Management) Il livello superiore rappresenta l’utilizzo dell’utente che sfrutta i servizi del sistema operativo sia dal punto di vista delle gestioni delle risorse sia dal punto di vista come aiuto a gestirlo in un modo molto semplice. Organizzazione a “strati” Ogni macchina virtuale è un insieme di programmi che realizza delle funzionalità che utilizzano i servizi forniti a livello inferiore. Ogni macchina virtuale ha il compito di gestire risorse specifiche di sistema regolandone l’uso e mascherandone i limiti. I meccanismi che garantiscono la correttezza logica sono separati dalle politiche di gestione (maggiore flessibilità). ogni “strato” risolve un problema specifico Il Nucleo – Si appoggia direttamente sulla macchina fisica – Effettua la gestione dei processi – In un sistema multitasking realizza una macchina virtuale in cui ad ogni processo è assegnata un processore virtuale – Realizza le primitive di sincronizzazione e scambio messaggi tra processi Il gestore della memoria – Realizza le funzionalità di allocazione della memoria – Partiziona la memoria tra i vari processi che la richiedono garantendo la protezione delle diverse zone di memoria Il gestore delle periferiche – Maschera le caratteristiche fisiche delle periferiche – Fornisce agli strati superiori un insieme di procedure di alto livello per l’accesso alle diverse periferiche – Gestisce, almeno in parte, i malfunzionamenti delle periferiche Il gestore del file system • Il gestore del file system – E’ responsabile della gestione delle periferiche di massa – Fornisce agli strati superiori un insieme di procedure per l’accesso al file system – Garantisce la protezione nell’accesso ai file Il gestore del file system • Le funzioni di base che sono supportate da un file system sono – Il recupero di dati precedentemente memorizzati – L’eliminazione di dati obsoleti – La modifica/aggiornamento di dati preesistenti – La copia di dati • Tra supporti di memorizzazione diversi (ad es. da HD a CD) • In cartelle diverse nello stesso supporto Riassumendo: Funzioni • Il gestore dei processi (nucleo) gestisce l’esecuzione dei programmi da parte dell’unità di elaborazione • Il gestore della memoria alloca la memoria e la partiziona tra i vari programmi • I driver sono responsabili delle operazioni di ingresso/uscita che coinvolgono le periferiche • Il file system è responsabile della gestione dei file in memoria di massa • L’interprete comandi consente all’utente di attivare i programmi Una possibile classificazione dei moderni S.O. • I moderni sistemi operativi possono essere classificati in: – Sistemi monotask: • Permettono l’esecuzione di un solo programma utente per volta (es. DOS) – Sistemi multitask • Permettono l’esecuzione di più programmi utente contemporaneamente Ambiente monotasking • Viene gestita l’esecuzione di un solo programma per volta • L’esecuzione non puo’ essere sospesa (per assegnare la CPU ad un altro programma) prima bisogna terminare l’esecuzione in corso • Alla terminazione di un programma, si puo’ attivare un altro programma • Piu’ programmi attivati con un solo comando: job • Lentezza: – la CPU non puo’ essere usata da nessun processo mentre il programma in esecuzione svolge operazioni di I/O (molto piu’ lente di letture/scritture in Memoria) Ambiente multitasking • SO che permettono l’esecuzione contemporanea di piu’ programmi • Se una sola CPU esecuzione contemporanea virtuale (una sola istruzione alla volta) • Minimizzano il tempo di inattivita’ ella CPU durante le operazioni di I/O, che possono anche occupare l’80% del tempo Time sharing • Ripartizione del tempo di CPU tra tutti i processi che la vogliono • Durata del quanto di tempo: tra 100 e 200 millisecondi • A ciascun utente sembra di avere la CPU tutta per lui, solo piu’ lenta Coda dei processi pronti • I processi sono messi in una coda • Il processo in cima alla coda ha a disposizione la CPU per un quanto di tempo, fissato e uguale per tutti • Quando il tempo finisce, viene interrotto e messo in fondo alla coda • Se richiede un’operazione di I/O, va nel gruppo dei processi sospesi, quando l’operazione finisce viene rimesso in coda per la CPU • La CPU va al primo in coda Sistemi paralleli • Sistemi multiprocessore costituiti da più CPU con capacità di comunicazione diretta. • i processori condividono la memoria ed il clock; le comunicazioni avvengono normalmente attraverso la memoria condivisa. Sistemi distribuiti • Distribuiscono le elaborazioni fra più processori fisici. • Ciascun processore ha la propria memoria locale; i processori comunicano fra loro attraverso vari tipi di linee di comunicazione, quali bus ad alta velocità. Sistemi Real Time • Un sistema Real Time è al servizio di una specifica applicazione, ad es.: – controllo macchinario medico – controllo caldaia – controllo radar • Ha severi limiti nei tempi di risposta – ossia la risposta deve essere prodotta in tempi utili per l’ambiente esterno Grazie per l’attenzione!