SISTEMA OPERATIVO: È un insieme di programmi che gestiscono le risorse dell’elaboratore (CPU, memoria centrale, periferiche) in maniera trasparente all’utente; in altre parole ha un ruolo di interfaccia tra utente e macchina HARDWARE S.O. PROGRAMMI APPLICATIVI UTENTI Poiché alcuni programmi dei s.o. interagiscono con le componenti hardware, essi devono conoscerne le caratteristiche per poterle adoperare; in realtà il s.o. deve poter essere ampliato successivamente, ogni volta che si deve inserire nel sistema un nuovo componente hardware. Plug and play (inserisci ed usa) è la tecnologia con la quale sono realizzati i dispositivi in grado di farsi riconoscere, ovvero di far istallare al s.o. i driver necessari al loro corretto utilizzo -CPU compatibili INTEL Standard di compatibilità -Stampanti compatibili EPSON o HP -Ecc. Il s.o. ha una struttura gerarchica e modulare i programmi che lo compongono si collocano a livelli diversi, in modo da servire i programmi dei livelli superiori e di servirsi di quelli di livello inferiore i programmi che appartengono ad un unico livello si chiamano moduli, le procedure per “dialogare “ tra moduli si chiamano primitive L’utente in realtà interagisce con una “macchina virtuale”, di più semplice utilizzo, formata dall’hardware + il s.o. interprete dei comandi file system gestione delle periferiche nucleo gestione della memoria Modello onion skin (a buccia di cipolla) CLASSIFICAZIONE DEI S.O. IN RELAZIONE ALLA POSSIBILITA’ DI ESEGUIRE UNO O PIU’ PROGRAMMI CONTEMPORANEAMENTE 1. SISTEMA MONOPROGRAMMATO Quando la sua memoria centrale contiene in un certo istante codice proveniente da un unico programma. Possibili alti tempi di inattività della CPU Tempoutente Temposistema Tempoinattivo 2. SISTEMA MULTIPROGRAMMATO È un s.o. che consente di tenere in memoria centrale codice proveniente da più programmi, portati avanti “contemporaneamente”; l’obiettivo è quello di ridurre i tempi di inattività della CPU, soddisfacendo più rapidamente le esigenze degli utenti finali politiche di assegnazione della CPU meccanismi di protezione tra i diversi programmi risoluzione di eventuali conflitti per l’utilizzo di una risorsa system overhead ovvero carico di lavoro in più per il s.o. 3. SISTEMA IN TIME SHARING (a partizione di tempo) È un s.o. multiprogrammato nel quale ciascun processo attivo non può utilizzare la CPU oltre un tempo massimo prefissato detto time slice (fetta o quanto di tempo) CLASSIFICAZIONE DEI S.O. IN RELAZIONE AGLI UTENTI 1. SISTEMA DEDICATO E’ il sistema che prevede l’utilizzo da parte di un unico utente; è il caso dei personal computer MS DOS (fino agli anni ’90) Windows Linux I sistemi dedicati moderni consentono il multitasking ovvero un tipo particolare di multiprogrammazione che consente di eseguire più applicazioni (task), a volte alcune in background (attività come ascolto di musica, trasferimento di file attraverso internet, ecc) 2. SISTEMA BATCH (A LOTTI ) È un s.o. in cui l’utente non interagisce con la macchina durante l’esecuzione dei programmi; usato laddove occorre eseguire programmi lunghi che non necessitano di input dell’operatore (es. la stampa degli estratti conto di una banca a fine mese, la stampa delle bollette della luce, ecc) Oggi è difficile trovare elaboratori che lavorino soltanto in modalità batch, piuttosto in modalità mista, lasciando che il lavoro batch venga svolto a volte fuori dall’orario di lavoro (es. di notte) 3. SISTEMA INTERATTIVO MULTIUTENTE È il s.o. usato laddove ad un elaboratore sono collegati tanti terminali (videotastiera); la CPU deve avere una grande velocità (MIPS – milioni di istruzioni per secondo) e la memoria centrale deve avere una considerevole dimensione CPU ACTIVITY (attività della CPU) = (tempoutente + temposistema) * 100 / tempototale THROUGHPUT (produttività) = tempoutente / tempototale È un’insieme di istruzioni, ovvero la traduzione di un algoritmo in un linguaggio di programmazione È l’insieme di istruzioni e dati coinvolti, ovvero è un programma in esecuzione, cioè qualcosa che evolve nel tempo È il dispositivo che causa l’evolvere di un processo In un s.o. multiprogrammato che lavora in modalità time sharing in un certo istante possiamo avere una situazione come quella rappresentata nella figura Processo in esecuzione P1 Processi pronti P2 P3 Processi in attesa di I/O P4 P5 Processi parcheggiati P6 memoria centrale P7 memoria di massa Vediamo come avviene la transizione di stato dei processi stato di parcheggio I/O terminato stato di attesa fine I/O stato di pronto scadenza time slice stato di esecuzione stato di terminazione richiesta operazione di I/O sincrone , ad es. in caso di errore, fine del time slice INTERRUPT (interruzioni): è un segnale inviato alla CPU che le segnala che è accaduto qualcosa e che deve interrompere momentaneamente la sua attività per eseguire un compito particolare asincrone , generate solo dall’hardware, come la fine di una stampa o di scrittura su disco Quando un processo viene interrotto e di conseguenza cambia il suo stato, prima di poter eseguire un altro processo il s.o. deve salvare tutte le informazioni relative al processo che viene sospeso, in particolare il contenuto del suo registro di stato, che contiene tra l’altro l’indirizzo dell’istruzione da cui dovrà riprendere il processo; quindi dovrà caricare le informazioni relative al nuovo processo che deve essere ripreso (il suo registro di stato), e finalmente riprendere il nuovo processo È la parte del s.o. più vicino all’hardware. Le sue funzioni sono: avvio e terminazione dei processi assegnazione della CPU ai vari processi (politiche di scheduling) sincronizzazione tra i processi sincronizzazione dei processi con l’ambiente esterno semplice modalità f.i.f.o. (first in, first out): a ciascun processo viene assegnata la CPU , solo quando è in attesa di operazioni di I/O cede la CPU al successivo processo in coda (gestione semplice, ma non ottimizzata) round robin con modalità f.i.f.o. (first in, first out): a ciascun processo viene assegnata la CPU per un intervallo di tempo, terminato il quale il processo va in fondo nella coda dei pronti e riattende il proprio turno round robin con code di priorità: i processi in attesa vengono collocati su code a priorità differenti, privilegiando la coda a priorità alta 1. allocazione per partizioni fisse: la memoria centrale è divisa in blocchi (partizioni ) di uguali dimensioni; molto semplice ma con spreco di memoria s.o. P1 P3 P2 BO B1 BLOCCHI PROGRAMMI 1 P1 2 P3 3 P2 B2 B3 4 LIBERO MEMORIA CENTRALE B4 TABELLA DI GESTIONE 1. allocazione per partizioni variabili: i programmi vengono caricati all’inizio in sequenza, quindi laddove c’è uno spazio libero sufficiente; la tabella di gestione è più complessa, deve contenere anche la dimensione, quindi c’è un maggior carico di lavoro da parte del s.o., ma lo sfruttamento della risorsa è migliore ci sono svariati criteri per decidere dove allocare un processo in memoria: First fit : il processo viene allocato nella prima partizione libera adeguata per dimensione Best fit : il processo viene allocato nella partizione libera più adeguata per dimensione, ovvero quella che lascia il più piccolo spazio inutilizzato Worst fit : il processo viene allocato nella partizione libera più grande, quella cioè che lascia uno spazio inutilizzato capace in seguito anche di contenere un altro processo Con questa tecnica il sistema “simula” una memoria centrale più grande di quella reale unendo due componenti: la memoria centrale e la memoria di massa; quando non c’è memoria sufficiente per caricare un programma in memoria centrale, questo viene diviso in parti, e viene caricata in memoria centrale una parte per volta. Si realizza con due differenti tecniche, la paginazione e la segmentazione 1. LA PAGINAZIONE Ogni programma è suddiviso in blocchi detti pagine logiche tutti della stessa dimensione, e la memoria centrale in blocchi della medesima dimensione detti pagine fisiche; la tabella di gestione della memoria è più complessa perché per ogni pagina logica occorre sapere se è stata caricata in memoria e a quale indirizzo, altrimenti il suo indirizzo sulla memoria di massa. Quando una pagina deve essere caricata in memoria centrale possono verificarsi due differenti situazioni, o c’è una pagina fisica disponibile e allora quella logica vi viene caricata e viene contemporaneamente aggiornata la tabella di gestione, oppure non ci sono posti disponibili in memoria centrale e allora si ricopre una pagina fisica già occupata scegliendola con una delle due differenti tecniche: FIFO : viene ricoperta la pagina logica caricata da più tempo in memoria, la più vecchia LRU (LAST RECENTLY USED) : viene ricoperta la pagina logica che non viene usata da più tempo, ovvero quella più vecchia d’uso VANTAGGI: semplicità dovuta alla uguale dimensione delle pagine SVANTAGGI: l’arbitrarietà con la quale vengono create le pagine logiche aumenta il numero di “chiamate” 2. LA SEGMENTAZIONE Ogni programma è suddiviso in blocchi detti segmenti sulla base di criteri logici, stabiliti dal programmatore (es. una certa area dati, una particolare routine, ecc),non tutti della stessa dimensione, e di conseguenza la memoria centrale non è a priori suddivisa in blocchi, ma si frammenta via via nel corso delle elaborazioni. VANTAGGI: più processi possono condividere stessi segmenti; inoltre non ci sono vincoli sul numero di segmenti da caricare in memoria non essendo stabilito a priori il numero di blocchi in cui è divisa la memoria centrale SVANTAGGI: la maggiore complessità delle tabelle di gestione ed il conseguente maggior onere da parte del s.o. Avviene attraverso interfacce o nei casi più complessi elaboratori di canale in maniera assolutamente trasparente per l’utente CPU bus REGISTRO DATI (BUFFER) bus Il buffer Il buffer è un’area di memoria “tampone” dove vengono appoggiati i dati in attesa di essere utilizzati dalla periferica o viceversa e serve a garantire una maggiore efficienza del sistema poiché i tempi di “lavoro” della CPU e delle periferiche sono nettamente differenti P E R I F E R I C H E canale1 CPU bus canale2 canale3 Gli elaboratori di canale hanno una loro autonoma capacità di elaborazione per eseguire il trasferimento dati tra CPU e periferiche Grazie a questi dispositivi il s.o. riesce ad “aumentare” in maniera virtuale il numero di periferiche, attuando quella che viene definita tecnica di SPOOL (Simultaneous Peripheral Operation On Line), che consente a diversi processi di utilizzare la stessa periferica, grazie alla gestione di una coda di spool S P1 Output 1 T Coda di SPOOL A M P2 Output 2 Output 3 Output 2 Output 1 P A N P3 Output 3 T E E’ l’insieme dei programmi che consente all’utente di utilizzare file memorizzati sulle memorie di massa utilizzando semplicemente i loro nomi simbolici, e “ignorando” gli aspetti relativi alle tecniche di memorizzazione e gestione delle memorie di massa. Il file system opera attraverso tabelle di gestione dei file, dette directory o tabelle dei descrittori, che contengono una serie di informazioni, tipo: il nome del file l’indirizzo la data di creazione la data dell’ultimo aggiornamento la grandezza l’eventuale password di protezione il tipo di accesso consentito (lettura, scrittura, ecc) Con l’uso continuo e frequente delle memorie di massa non è sempre possibile che un file sia memorizzato tutto insieme, ma può essere suddiviso in blocchi fisici memorizzati in aree non contigue, e ciò crea un rallentamento e un appesantimento del lavoro a carico del file system. Per questo motivo è buona norma eseguire frequentemente l’operazione di deframmentazione del dispositivo di memoria di massa, operazione che consente un “risistemazione” dei file contenuti, nel senso che vengono eliminati tutti i “buchi” creati con l’uso per creare aree libere sufficientemente ampie per poter contenere nuovi file interi. E’ un programma del s.o. che riceve in input le richieste di esecuzione di operazioni. L’interprete standard del sistema DOS si chiama command.com e contiene alcuni semplici comandi di base per l’utilizzo dell’elaboratore, e consente anche la scrittura di script (i file BAT) da parte dell’utente più esperto che voglia personalizzare il suo elaboratore I s.o. più recenti colloquiano con l’utente attraverso interfacce grafiche, di sempre più semplice utilizzo (user friendly), che hanno nel tempo reso possibile l’utilizzo del computer anche ad utenti per niente esperti Il processo di esecuzione dell’interprete di comando viene considerato il processo padre degli altri processi che verranno lanciati nell’ambito della sessione di lavoro All’accensione del computer il s.o. deve essere caricato in memoria centrale, per poi rimanervi fino allo spegnimento; tale compito è svolto da un programma IPL (Initial Program Loader), che si trova sulla memoria ROM, memoria permanente e di sola lettuta, che prima effettua un controllo sulle varie componenti L’operazione di caricamento del s.o. prende il nome di bootstrap. La procedura di chiusura, shutdown, deve controllare tutte le sessioni di lavoro aperte da eventuali utenti differenti ed eventualmente mandare un messaggio di conferma dello spegnimento del computer, abortendo eventuali processi in corso e non conclusi Sono un insieme di programmi, detti anche programmi di utilità, che agevolano l’attività degli utenti. editor di testi Compilatori Linker Interpreti Debugger ecc. Tecniche per garantire la riservatezza di archivi “sensibili”, evitare la perdita di dati e programmi, impedire l’accesso ad utenti non autorizzati, ecc backup: procedura per effettuare copie di salvataggio restore: procedura per il recupero delle copie di sicurezza antivirus E’ la figura professionale che si occupa dei s.o. e del software di base