Introduzione al Sistema Operativo Il sistema operativo è un insieme di programmi che permettono di gestire in modo ottimale le risorse del computer facilitare l'uso del computer svincolando l’utente dalle conoscenze delle caratteristiche fisiche della macchina. I primi sistemi operativi erano semplici, costituiti da pochi programmi che rendevano il computer poco autonomo nella esecuzione dei lavori. L' operatore doveva avviare e seguire le singole fasi necessarie allo svolgimento di un determinato job. In caso di errore l'operatore doveva intervenire direttamente per identificare l'errore e rimuoverlo. Gli attuali sistemi operativi invece rendono la macchina molto più autonoma. L'utente una volta richiesto l'esecuzione di un compito, deve solo attendere in pochi secondi l'espletamento del compito e se si dovessero verificare situazioni di errore il sistema operativo provvede a riconoscere e a comunicare all'utente il tipo di errore che si è verificato. Un' altra caratteristica degli attuali S.O. è il Plug and Play (inserisci e vai) che consiste nella capacità del S.O. di riconoscere e far funzionare i nuovi dispositivi aggiunti al computer senza che l'utente debba provvedere all'installazione dei driver ( programma pilota del dispositivo) necessari al funzionamento degli stessi. L' esigenza di rendere sempre più facile l'uso del computer e di utilizzare al meglio le risorse del computer stesso ha determinato una continua evoluzione dei sistemi operativi. I primi sistemi operativi erano sistemi in monoprogrammazione, questi sfruttavano poco la capacità elaborativa della CPU, ad essi seguirono i sistemi in multiprogrammazione prima, e i sistemi in time sharing poi che hanno permesso un uso più efficiente della CPU e delle altre risorse del computer. Sistema operativo in monoprogrammazione Si parla di sistema in monoprogrammazione quando un solo programma utente è residente in ogni istante in memoria centrale e viene eseguito. Nel sistema in monoprogrammazione, quando viene richiesta l'esecuzione del programma, la CPU inizia ad eseguire le istruzioni del programma, una alla volta, cominciando dalla prima. Quando incontra un’ operazione di I/O, la CPU affida l'esecuzione dell'operazione all'elaboratore di canale e si pone in attesa che l'operazione sia completata. Terminata l'operazione di I/O la CPU riprende l'esecuzione del programma. Vedi figura Tcpu R U N Tcpu Tcpu R U N R U N attesa Inizio programma attesa Fine programma Tempo Si può rilevare che, durante l'esecuzione del programma, il tempo che la CPU è inattiva è di gran lunga maggiore del tempo in cui la CPU è operativa, questo perché i dispositivi coinvolti nello svolgimento delle operazioni di I/O hanno dei tempi di lavoro dell'ordine di secondi o minuti mentre la CPU ha tempi di lavoro di nano secondi (1 nanosecondo= 1 miliardesimo di secondo). La CPU nei sistemi in monoprogrammazione risulta quindi essere una risorsa poco sfruttata. Per un migliore utilizzo della CPU, sono stati sviluppati i sistemi operativi in multiprogrammazione. 1 Sistema operativo in multiprogrammazione S.O. A B Memoria centrale In un sistema in multiprogrammazione l'elaboratore intercala l'esecuzione di due o più programmi presenti in memoria pronti per essere eseguiti. Il sistema operativo assegna la CPU al programma che ha la priorità più alta, supponiamo A, il programma A entra in esecuzione. Dopo un certo intervallo di tempo il programma A dovrà fermarsi in attesa che venga eseguita una operazione di Input/Output. Il S.O. salva lo stato di avanzamento del programma A e avvia l'esecuzione del programma B. Il programma B entra in esecuzione fino a quando non si verifica un'interruzione(=segnale emesso dalla periferica interessata all'operazione di I/O) che segnala alla CPU che l'operazione di I/O del programma A è terminata. Il S.O. a questo punto memorizza lo stato di avanzamento del programma B e fa riprendere l'esecuzione del programma A. L'elaborazione in multiprogrammazione riduce il tempo in cui la CPU resta inutilizzata in quanto si eseguono più programmi in minor tempo. Nel sistema in multiprogrammazione, tuttavia, un programma che richiede molte operazioni di calcolo potrebbe monopolizzare per troppo tempo la CPU, ai danni di altri in attesa; viceversa un programma con molte operazioni di I/O risulta penalizzato e può avere un tempo di esecuzione molto più lungo di quello che avrebbe in un sistema monoprogrammato. Per ovviare anche a questo inconveniente e per migliorare l’efficienza del sistema sono stati introdotti i sistemi operativi in time sharing o a ripartizione di tempo. Sistema in time sharing In un sistema operativo in time sharing a ciascun programma viene assegnato un tempo massimo di utilizzo della CPU, detto “time slice”, superato il quale il programma viene forzatamente interrotto. La CPU, quindi, cicla da un programma all'altro dedicando qualche millisecondo a ciascuno dei programmi presenti in memoria centrale. I sistemi multiutente lavorano in time sharing. La configurazione che, in generale, un sistema multiutente presenta è un elaboratore centrale al quale sono collegati più terminali attraverso i quali ciascun utente richiede l'esecuzione di un determinato compito. Ciascun utente ha l'impressione di avere a disposizione l'intero sistema di elaborazione. Infatti, data l'alta velocità elaborativa della CPU nei confronti dell'operatore umano, il tempo che l'utente impiega per inviare da terminale la richiesta di una elaborazione, la CPU lo impiega per servire gli altri utenti. Osservazione Nei sistemi operativi in mutiprogrammazione e in time sharing aumenta il carico di lavoro del sistema operativo (overhead system) che deve effettuare il context switch (cambiamento di contesto) ossia • salvare lo stato del processo interrotto (PCB Process control block è una struttura dati del sistema operativo che contiene le informazioni essenziali per la gestione del processo) • scegliere il processo da far avanzare • caricare lo stato(PCB) del nuovo processo 2 Modalità di elaborazione dati Modalità batch: nell'elaborazione batch o a lotti i dati da elaborare vengono accumulati negli archivi magnetici (file) durante un periodo ed elaborati a determinate scadenze in una unica operazione di lettura , elaborazione, emissione. L'elaborazione delle paghe settimanali è un esempio di elaborazione a lotti : i dati sulle paghe si accumulano durante il periodo di una settimana e poi sono elaborati. Si usa questo tipo di elaborazione anche per l'aggiornamento delle scorte di magazzino, per il calcolo degli estratti conto di una banca e così via. Modalità real time : nell'elaborazione in tempo reale i dati da elaborare arrivano ininterrottamente al computer e vengono elaborati istantaneamente influenzando elaborazioni successive. Per esempio per le prenotazioni su linee aeree o ferroviarie ogni prenotazione viene registrata dal sistema elaborativo non appena viene formulata in una delle varie agenzie in modo che il calcolatore possa fornire in ogni istante la situazione aggiornata delle disponibilità dei posti su un dato volo o treno. Modalità interattiva : nella modalità di elaborazione interattiva l'utente attraverso la tastiera, può condurre un vero e proprio colloquio con il sistema in modo da seguire direttamente i vari passi relativi alla elaborazione richiesta. I risultati dell'elaborazione, letti direttamente dall'utente nell'istante che sono prodotti, danno luogo da parte dell'utente stesso a richieste che vengono comunicate all'elaboratore e che possono influire sulla elaborazione successiva 3