Sistema Operativo prof.ssa Elisa Scarafile 1) Definizione di Sistema Operativo .................................................................................................... 1 2) Organizzazione a strati di un Sistema Operativo ............................................................................. 3 Kernel (Nucleo o gestore di processi) .............................................................................................. 4 Tecnica del time sharing ............................................................................................................. 4 Stati di un processo ...................................................................................................................... 4 Gestore della Memoria .................................................................................................................... 6 Gestore delle periferiche .................................................................................................................. 8 File System ....................................................................................................................................... 8 Interprete comandi ......................................................................................................................... 11 1) Definizione di Sistema Operativo In informatica, un sistema operativo (abbreviato in SO, o all'inglese OS, operating system) è il programma responsabile del diretto controllo e gestione dell'hardware che costituisce un computer e delle operazioni di base. Compito del sistema operativo è quello di fare da interfaccia tra le risorse hardware e i programmi applicativi. Principali S.O. sviluppati dalla Microsoft: MS-DOS (sviluppato con IBM, versioni dalla 1.0 alla 8.0) Windows 3.0 Windows 3.1 prima versione con un volume di vendite elevato Windows 95 (versione 4.0) Windows 98 (versione 4.1) Windows Me (versione 4.9) OS/2 (sviluppato dalla IBM poi congiuntamente con Microsoft, poi solo da IBM) Windows NT versioni multiple per ogni rilascio Windows NT 3.1 Windows NT 3.5 Ultima revisione:20/04/2013 1/11 Sistema Operativo prof.ssa Elisa Scarafile Windows NT 3.51 Windows NT 4.0 Windows 2000 (versione 5.0) Windows XP (versione 5.1) Windows Server 2003 e Windows XP Professional x64 Edition (versione 5.2) Windows Vista e Windows Server 2008 (versione 6.0) Windows 7 Successore di Vista. (versione 6.1) Windows Server 2008 R2 Successore di Server 2008. Windows Azure Sistema operativo Microsoft per il cloud computing basato su Windows Server. Windows 8 (autunno 2012). (versione 6.2) Principali S.O. Open source Unix-like GNU/Linux Arch Linux CentOS Chrome OS Debian GNU/Linux Edubuntu Fedora Core Gentoo Linux Knoppix Kubuntu Mandriva Linux, fino al 2004 nota con il nome "Mandrake Linux" Mepis Slackware SUSE Linux Ubuntu Linux Xubuntu OpenSolaris Solaris Express BeleniX marTux NexentaOS Schillix GNU Hurd SSS-PC sviluppato dall'Università di Tokyo Ultima revisione:20/04/2013 2/11 Sistema Operativo prof.ssa Elisa Scarafile 2) Organizzazione a strati di un Sistema Operativo Il Sistema operativo è un insieme di programmi che regola il funzionamento delle apparecchiature che costituiscono il sistema di elaborazione. Le richieste dell'utente vengono acquisite e gestite dal sistema operativo in modo coordinato, rispettando le politiche di gestione, ovvero le regole scelte per realizzare i meccanismi desiderati, stabilendo gerarchie e priorità. Il modello "onion skin" (buccia di cipolla) rappresenta il sistema come una successione di strati costruiti sopra la macchina hardware, ciascuno dei quali rappresenta un livello di macchina virtuale. Ogni livello all'interno del modello, viene visto come un oggetto unico, che non corrisponde alla macchina fisica ma che è in grado di svolgere le funzioni richieste indipendentemente dagli altri livelli; come notiamo dall'immagine, i livelli più bassi sono vicini all'hardware al contrario quelli più esterni che sono vicini all'utente. Ciascuno strato costituisce un modulo, ovvero una collezione di routine che attiva i meccanismi fisici necessari per risolvere problemi logici di uno stesso tipo. Se un sistema operativo è costruito con criteri di modularità, può essere usato su macchine diverse; l'attitudine di un sistema operativo a essere eseguito su macchine diverse definisce il grado di portabilità. Ultima revisione:20/04/2013 3/11 Sistema Operativo prof.ssa Elisa Scarafile Kernel (Nucleo o gestore di processi) Il kernel è il cuore di un sistema operativo. Si tratta di un software che ha il compito di fornire ai moduli che compongono il sistema operativo e ai programmi in esecuzione sul computer le funzioni fondamentali ed un accesso controllato all'hardware, sollevandoli dai dettagli della sua gestione. Si occupa dell’esecuzione dei programmi e della risposta agli eventi esterni generati dalle periferiche. Scopo principale è quello di gestire i processi corrispondenti ai programmi che sono contemporaneamente attivi, attuando una politica di alternanza (scheduling) nell’accesso alla CPU da parte dei processi in esecuzione. Fra quest'ultime la più semplice viene chiamata round robin, la quale prevede una coda di processi pronti e una serie di processi in attesa. Tecnica del time sharing Permette la condivisione della CPU tra più processi, assegnando ad ogni processo un “quanto” di tempo di utilizzo della CPU, al termine del quale viene sospeso per lasciare il posto ad un altro processo in attesa di esecuzione. Stati di un processo Pronto->Esecuzione Dalla coda (struttura di tipo FIFO (First In First Out)) dei processi pronti, il kernel, prende il processo e lo manda in esecuzione Esecuzione->Attesa Ultima revisione:20/04/2013 4/11 Sistema Operativo prof.ssa Elisa Scarafile Il processo in esecuzione chiede delle risorse di Input /Output, e quindi passa nella coda dei processi in attesa. Attesa -> Pronto Quando l’operazione di Input/Output è terminata, il Kernel sposta il processo nella coda dei processi pronti. Esecuzione -> Pronto Quando termina il “quanto” di tempo, il processo viene spostato nella coda dei processi pronti, e contemporaneamente un altro processo passa da pronto a esecuzione. Quindi riassumendo: Il processo viene creato e viene posto nella coda dei processi pronti; 2. il primo processo tra i processi pronti viene posto in esecuzione; 3. il processo in esecuzione dispone delle risorse del sistema fino a: a. il termine del quanto di tempo • il nucleo interrompe il processo e lo mette in coda ai processi pronti; • quando arriva in cima alla coda dei processi pronti, il processo torna in stato in esecuzione, proseguendo con l’elaborazione dell’istruzione successiva a quella su cui era stato interrotto; b. la richiesta di un’operazione di ingresso/ uscita il nucleo sposta il processo attivo nello stato di attesa; • quando l’operazione di ingresso/ uscita si completa il processo può proseguire l’elaborazione e viene messo in fondo alla coda dei processi in pronti e prosegue come nel punto precedente; c. il termine delle propria esecuzione (istruzione finale) • il processo viene eliminato e rimosso dall’elenco dei processi esistenti; In ogni caso il nucleo provvede a sostituirlo con il primo dei processi pronti. Si può raffinare questa politica organizzando i processi pronti su diverse code, corrispondenti alle diverse priorità. I processi in attesa vengono posti su code corrispondenti alle diverse priorità assegnate a ciascuno: al momento di scegliere il processo da mandare in esecuzione vengono favoriti quelli a priorità più elevata. Il gestore dei processi (scheduler), che è anch'esso un processo, ha la priorità massima, così come il processo che si occupa della gestione delle interruzioni ( interrupt handler) deve avere la priorità maggiore rispetto a qualunque altro processo. Ultima revisione:20/04/2013 5/11 Sistema Operativo prof.ssa Elisa Scarafile Gestore della Memoria Un programma per essere eseguito, deve risiedere in memoria centrale. Il gestore della memoria è l’insieme dei programmi che gestiscono l’allocazione in memoria centrale del programma da eseguire, al fine di risolvere le relative esigenze dei vari processi, in modo trasparente ed efficiente. Consente ai programmi di lavorare in un proprio spazio di indirizzamento virtuale e di ignorare quindi le effettive zone di memoria fisica occupata. Il gestore della memoria deve allocare la memoria e partizionarla tra i processi che la richiedono. Ci sono varie tecniche di gestione della memoria: - Metodo a partizioni fisse Metodo a partizioni variabili la paginazione la segmentazione Metodo a partizioni fisse: il metodo a partizioni fisse è il più semplice da realizzare in quanto suddivide la memoria centrale in parti di uguali dimensioni. I programmi che risiedono in memoria devono corrispondere al numero di partizioni fisse. Svantaggi: · Il numero massimo di processi che possono essere allocati in memoria è prefissato · Si ha uno spreco di memoria perché un programma di solito ha dimensioni minori di quelle della partizione e lo spazio avanzato non può però essere utilizzata da un altro programma · Il programma può essere di dimensioni maggiori della partizione Vantaggi: · Il carico di lavoro svolto dal sistema operativo è minore. Metodo a partizioni variabili: Con il metodo a partizioni variabili mentre un programma viene eseguito vengono create le partizioni. Se si libera una partizione di dimensione inferiore rispetto al programma che deve essere caricato tale programma deve aspettare lo spazio. Se si liberano due partizioni vicine possono essere occupate entrambe dallo stesso programma anche se non viene occupato tutto lo spazio. Ultima revisione:20/04/2013 6/11 Sistema Operativo prof.ssa Elisa Scarafile Man mano che si inseriscono i programmi si crea una deframmentazione cioè periodicamente i programmi presenti in memoria centrale devono essere portati verso l’alto per non avere troppi spazi liberi. Svantaggi: · Il carico di lavoro svolto dal sistema operativo è maggiore Vantaggi: · Non c’è un numero fisso di partizioni · Ogni partizione ha dimensioni uguali al programma. Dunque non c’è uno spreco di memoria. Nel caso di programmi di dimensioni paragonabili con quelle della memoria centrale la loro allocazione sarebbe problematica e in caso di programmi di dimensioni superiori non sarebbe possibile. Per questo motivo si possono utilizzare due diverse tecniche di suddivisione dei programmi in blocchi: · la paginazione · la segmentazione. La paginazione suddivide la memoria centrale e i programmi in pagine (o segmenti). In tal modo è possibile eseguire un programma di dimensioni maggiori della memoria centrale, partizionando il programma e caricandone in memoria centrale una parte alla volta (quella correntemente in esecuzione). Eseguendo contemporaneamente più programmi, se la somma delle dimensioni supera la dimensione della memoria centrale si utilizza la tecnica della memoria virtuale. Quest’ultima trova lo spazio necessario, utilizzando una memoria che ha più spazio ma che risulta più lenta, e cioè l’hard disk. La Segmentazione: questa tecnica di gestione suddivide la memoria disponibile in blocchi di lunghezza fissa o variabile detti segmenti. Un programma può essere diviso in 2 segmenti principali uno che contiene i dati e uno che contiene il codice da eseguire. La segmentazione aumenta l’efficienza e il risparmio della memoria e un risparmio del tempo di gestione della memoria ma comporta anche due conseguenze negative cioè la frammentazione della memoria e la diminuzione della semplicità del sistema operativo. Ultima revisione:20/04/2013 7/11 Sistema Operativo prof.ssa Elisa Scarafile Gestore delle periferiche Il gestore delle periferiche maschera le caratteristiche fisiche delle periferiche e le specifiche operazioni di ingresso/uscita, permettendo una più semplice comunicazione tra l’ambiente CPU/RAM e i dispositivi esterni. I SO comprendono i driver per la gestione delle periferiche più comuni. Ogni aggiunta o modifica alla configurazione standard comporta l’installazione di software addizionali (driver aggiuntivi). I SO più recenti sono dotati di funzioni Plug&Play (PnP) che permettono di aggiungere (plug) nuove periferiche al sistema che quindi, possono essere utilizzate (play) senza l’intervento dell’utente per la selezione e l’installazione del driver. File System (Gestore dei file) Il file system è il modo in cui i file sono immagazzinati e organizzati su un dispositivo di archiviazione (memorie di massa), come un hard disk o un CD-ROM. Esistono molti tipi di file system, creati per diversi sistemi operativi, per diverse unità di memorizzazione e per diversi usi. Si possono identificare due grandi classi di file system: quelli per unità locali, destinate ad organizzare fisicamente i dati su un disco (FAT32 [file allocation table], NTFS [NT File System]) , e i file system distribuiti (NFS [Network File System, SAMBA]), nati per condividere i dati fra più computer collegati attraverso una rete, superando le differenze fra sistemi operativi e file system locali delle varie macchine. I suoi compiti sono: - Gestire i dati in memoria di massa. - Strutturare i dati in modo gerarchico utilizzando file e directory. - Fornire operazioni di alto livello per la gestione di file, ad esempio creare un nuovo documento, directory ecc. - Proteggere i dati da accessi esterni. - Garantire la condivisione sicura dei dati. Il file system, per gestire le informazioni, mette a disposizione dell’utente il file come strumento di base, che rappresenta dunque l’unità minima archiviabile . Il file è un contenitore con le seguenti caratteristiche: • • • Nome (filename) Contenuto (informazione che voglio memorizzare) Attributi (dimensioni,data creazione,diritti d’accesso) Ultima revisione:20/04/2013 8/11 Sistema Operativo prof.ssa Elisa Scarafile In particolare il nome di un file è costituito generalmente da due componenti separate da un punto: nome.suffisso • • Nome: è scelto dall’utente, solitamente in modo da evocare il contenuto Suffisso o Estensione: è automaticamente aggiunto dall’applicazione con cui si sta usando o generando il file e ne indica il tipo di contenuto; per es .DOC, .XLS, .TXT, .CPP Una directory è un contenitore logico che può contenere file ma anche altre cartelle. Con i pathname, ovvero il nome del file espresso attraverso un percorso, è possibile individuare ogni entità del file system. Si definisce pathname ASSOLUTO, quando il nome del file viene descritto elencando tutti i nodi che occorre attraversare a partire dalla root(dicesi radice, la directory di livello maggiore) fino ad arrivare al file. Bensì si parla di pathname RELATIVO, quando l’accesso inizia dalla directory corrente. Struttura ad albero nella gestione dei file, da parte del File System Ultima revisione:20/04/2013 9/11 Sistema Operativo prof.ssa Elisa Scarafile Un ulteriore servizio è quello di collegamento o link o shortcut. Il collegamento è un riferimento ad un altro oggetto presente nel file system (sia esso file o directory). Ciò consente di avere lo stesso file presente in più directory, ma di risparmiare in termini di occupazione del file, in quanto non è necessario effettuare il duplicato del file . Root Ultima revisione:20/04/2013 10/11 Sistema Operativo prof.ssa Elisa Scarafile Interprete comandi E’ il modulo del SO direttamente accessibile dall’utente. Consente all’utente di attivare i programmi tramite un click (interfaccia grafica) oppure da tastiera. Le operazioni che svolge sono: - cercare in memoria di massa il programma da eseguire. - allocare la memoria centrale richiesta dal programma. - caricare nello spazio allocato in memoria centrale, il programma e i relativi dati. - creazione e attivazione del processo corrispondente. Ultima revisione:20/04/2013 11/11