TEMA 3 SOFTWARE. Software di base e software applicativo. Sistemi operativi. Redatta da: Franco ANTONELLI; Amedeo GROSSI; Francesca GIROLAMI; Tiziano PIETRELLA. IL SOFTWARE La parola Software comprende tutti i programmi, indipendentemente dal tipo di compito o di compiti che un programma è in grado di eseguire. “Senza il software un calcolatore è un ammasso di ferraglia inutile. Con il software un calcolatore può immagazzinare, elaborare e recuperare informazioni, trovare errori ortografici nei documenti, giocare e impegnarsi in numerose altre attività per guadagnarsi da vivere.”1 Il software può essere suddiviso in due classi: i programmi di sistema che gestiscono le operazioni del calcolatore stesso, e i programmi applicativi che, forse, risolveranno i problemi dei loro utilizzatori. SOFTWARE SOFTWARE DI BASE SOFTWARE APPLICATIVO FIRMWARE SISTEMI OPERATIVI SOFTWARE APPLICATIVO L’insieme dei programmi relativi ad una applicazione, legati tra loro logicamente e finalizzati a risolvere una specifica esigenza, costituisce un’applicazione. I linguaggi di programmazione ad alto livello ed i pacchetti applicativi costituiscono il software applicativo. 1 Tannenbaum Andrew S., Proggettazione e sviluppo die sistemi operativi. Milano, Gruppo Editoriala Jackson, 1988. A cura di Paolo Ciancarini. Pag. 1. 1 Un linguaggio di programmazione è un linguaggio artificiale per la codifica di istruzioni. Permette la creazione di pacchetti applicativi che consentono all’utente di risolvere problemi di diverso tipo. I pacchetti applicativi si suddividono in: preconfezionati su misura I pacchetti applicativi su misura vengono realizzati per risolvere problemi specifici su richiesta dell’utente (personalizzati). I pacchetti applicativi preconfezionati si suddividono a loro volta in pacchetti a scopo generale (general purpose), es. Office, e pacchetti a scopo specifico (special purpose), es. Dbase. Quelli a scopo generale sono concepiti per risolvere le problematiche di carattere generale e quindi possono no soddisfare completamente le esigenze di una specifica fascia di utenti (Es. Elaboratori di testo). Quelli a scopo specifico sono quelli sviluppati per una particolare categoria di utenti. (Es. CAD) SOFTWARE DI BASE Il software di base è il livello di software più vicino alla macchina fisica. Comprende i programmi chiamati a far funzionare le componenti hardware, ed a fornire le interfacce macchina utente. Inizialmente l’hardware era direttamente programmabile tramite interruttori ma poi si capì, ed il progresso tecnico lo rese possibile, che era meglio programmarlo dall’esterno. Si cominciò quindi a scrivere, in forma binaria, le istruzioni su appositi supporti (schede o nastri) che venivano poi fatti leggere dall’elaboratore che le eseguiva passo passo. Questo programma faceva tutto: interagiva con utente ed hardware; stampava; trasferiva dati ecc.. Per migliorare le prestazioni si è poi cominciato ad estrarre da questi programmi le routines. Le routines erano procedure che svolgevano sempre e solo un determinato compito. Es. la routine di stampa stampa qualsiasi cosa gli si indichi di stampare. Estraendo le routine comuni si è creato il software di base. Una parte del software di base è stato messo direttamente nell’hardware: firmaware. Un’altra parte ha formato il sistema operativo. Il più importante dei programmi di sistema è il sistema operativo, che controlla tutte le risorse del calcolatore e fornisce la base sulla quale possono essere scritte le applicazioni. 2 SISTEMI OPERATIVI I sistemi operativi, chiamati anche executive system, supervisor system o monitor system, sono un insieme di programmi che creano l'interfaccia tra l'utente e l'hardware e gestiscono, inoltre, le risorse del computer, cioè, quei dispositivi hardware e software che concorrono all'elaborazione dell’informazione. FUNZIONI DI UN SISTEMA OPERATIVO Le funzioni di un sistema operativo sono: 1. facilitare la gestione delle unità periferiche con programmi che svincolino il programmatore dalla conoscenza del loro funzionamento (questi programmi si chiamano DEVICE DRIVERS o DEVICE HANDLERS o DRIVERS).Ogni periferica ha il proprio driver. 2. ottimizzare e facilitare la gestione dei dati registrati sulle memorie di massa (questa funzione si chiama FILE MANAGEMENT). 3. consentire una migliore utilizzazione della C.P.U. ripartendo il tempo di elaborazione tra i vari programmi (TIME SHARING). 4. consentire una migliore utilizzazione della Memoria Operativa con la tecnica di multiprogrammazione. 5. consentire il caricamento dinamico di programmi tra memoria centrale e memoria di massa nel caso di multiprogrammazione. 6. consentire l'elaborazione in tempo reale quando è necessario. 7. fornire all'utente programmi speciali per facilitargli la stesura e la messa a punto di propri programmi (ad esempio i linguaggi di programmazione). 8. tradurre i programmi scritti dall'utente in un linguaggio comprensibile all'uomo e in un linguaggio comprensibile dalla macchina (compilatori ed interpreti dei linguaggi di programmazione ad alto livello). 9. SPOOLING cioè trasferire temporaneamente su una memoria di massa i risultati nel caso in cui la stampante non sia momentaneamente disponibile (SPOOL = Simultaneous Peripherical Operation On Line = operazione simultanea on-line con una periferica). 3 STRUTTURA DI UN SISTEMA OPERATIVO Il S.O. tipo è costituito da sette componenti principali: 1. Supervisore (supervisor) o controllore (monitor). 2. Organizzatore (scheduler) o gestore delle code, smistatore (dispatcher). 3. Gestore delle interruzioni (interrupt handeler). 4. Gestore delle periferiche (device handler o device driver). 5. Gestore della memoria (memory manager). 6. Gestore della libreria (library manager). 7. Libreria dei programmi del sistema (editor, compilatori). 1. SUPERVISOR (MONITOR) Il monitor, anche detto supervisor, nucleo o programma di controllo. E` residente nella memoria operativa per tutta la durata del funzionamento dell'elaboratore sorveglia provvede a coordinare l'esecuzione degli altri programmi dopo averne comandato il caricamento (o lancio). E` la parte principale di ogni sistema operativo. 2. SCHEDULER (DISPATCHER) Lo scheduler (anche detto dispatcher, smistatore, distributore o controllore dei compiti) fa parte del monitor. Assegna il tempo di CPU ai vari programmi e crea e gestisce le code dei programmi in attesa di risorse dell’elaboratore (CPU, memoria, bus o altri programmi) che attualmente sono già assegnate. Per ogni risorsa dell’elaboratore esiste un coda di programmi. Lo scheduler si occupa della gestione di queste code, utilizzando eventualmente algoritmi che permettono di creare classi di priorità all’interno dei programmi. Anche lo scheduler è sempre residente nella memoria operative del computer. 3. INTERRUPT HANDLER Il suo compito è quello di individuare le interruzioni, di decidere quale programma va utilizzato per “servire” o “gestire” l’interruzione e di avviarne l’esecuzione, dopo aver salvato le informazioni relative allo stato della CPU, che verranno ripristinate al termine dell’esecuzione del programma associato all’interruzione. 4 Il monitor, il dispatcher e l'interrupt handler risiedono nella memoria operativa dopo l’operazione di caricamento attraverso la procedura di bootstrapping. 4. DEVICE HANDLER I device handler sono programmi che consentono il corretto e veloce utilizzo delle periferiche. Nel S.O. c’è uno di questi programmi per ogni tipo di periferica presente nella configurazione del sistema. Questo a causa delle differenze della struttura fisica e logica tra le varie periferiche, differenze di cui i gestori devono tener conto. 5. MEMORY MANAGER E’ il "direttore" della memoria operativa. Il memory manager si occupa dell'assegnazione di zone della memoria principale ai vari programmi in esecuzione. Svolge il compito di protezione della memoria ove il SO preveda la possibilità di esecuzione contemporanea di più programmi. Utilizza memorie ausiliarie per depositarvi temporaneamente un intero programma, o parte di esso, durante l’esecuzione.Questa attività è richiesta durante lo scambio (swapping) e durante la sovrapposizione (overlayng) di programmi. 6. LIBRARY MANAGER && 7. LE LIBRERIE Il library manager è il programma che gestisce la libreria dei programmi. Una libreria è una raccolta di programmi che viene fornita dalla casa costruttrice insieme con il S.O., o che viene costruita dall’utente, il quale vi inserisce i propri programmi. La libreria non è parte integrante del S.O., mentre lo è il programma che la gestisce. Normalmente un S.O. è costituito da una serie di moduli: un modulo di gestione detto NUCLEO (es. MS-DOS.SYS e IO.SYS), che decide e supervisiona tutte le attività, e altri moduli detti UTILITY o programmi (Es. accessori) di servizio, che vengono richiamati dal nucleo quando sono necessari. Un componente fondamentale di un qualsiasi S.O. è l’Analizzatore Sintattico, che serve ad analizzare tutto ciò che viene scritto sulla tastiera e inviato al microprocessore. (Es. Command.com) Esistono anche dei sottoprogrammi di sistema che vengono eseguiti solo se attivati dall’utente, questi sono i comandi. (Es. Format) I sistemi operativi sono legati all’architettura di un elaboratore. 5 Il sistema operativo può essere: monoutente: quando consente di eseguire più programmi diversi fra loro, ma sempre uno alla volta. (MS-DOS) multiutente: quando un elaboratore è in grado di eseguire più programmi contemporaneamente, multiutente (multitasking) MODALITA’ OPERATIVE Tipi di elaborazione: 1. Elaborazione a lotti (batch processing): più lavori (job) vengono raccolti e presentati al sistema che li elabora in sequenza e ne fornisce i relativi risultati (l’intervento dell’utente non è necessario e non è consentito es. calcolo interessi conti bancari). 2. Elaborazione in tempo reale (real time processing): i dati su cui operano i programmi per ottenere risultati arrivano ininterrottamente e vengono elaborati istantaneamente influenzando eventualmente elaborazioni successive. I S.O. di questo genere sono progettati per elaboratori che operano con terminali che hanno velocità molto maggiori di quelle degli utenti umani (è il caso del controllo di processi industriali). I dati vengono trasmessi all’elaboratore da terminali connessi ad una rete: i sistema costituito dall’elaboratore e dai terminali è detto sistema on-line. 3. Elaborazione in multiprogrammazione (multiprogramming): più job possono intervenire contemporaneamente. La CPU dedica di volta in volta il suo tempo ad istruzioni di job differenti permettendone così uno sviluppo contemporaneo senza dover attendere il completamento di un job prima di iniziarne un altro. Ai vari job è assegnata una posizione fissa di memoria centrale e ciascuno di essi divide con gli altri il tempo di CPU e di device (apparecchiature) disponibili. Quando un job richiede l’uso di un periferico, il processore è usato da un altro job e si evitano i tempi di attesa del completamento di una operazione di input-output, molti lunghi rispetto ai tempi di elaborazione. La legge di priorità di accesso alla CPU è stabilita dal S.O. che, generalmente, assegna priorità maggiore ai job che utilizzano in modo massiccio le unità periferiche. Con questa tecnica, nella memoria centrale dell’elaboratore possono essere presenti due o più programmi in caso di esecuzione. In questo caso l’utente non può intervenire durante l’esecuzione de suo job, compito. 6 4. Multielaborazione (multiprocessing): più job vengono elaborati simultaneamente mediante la duplicazione di unità. Ad esempio più unità centrali possono operare in parallelo utilizzando eventualmente gruppi di memorie o periferiche in comune. 5. Divisione di tempo (time sharing): il tempo di CPU è ripartito fra più utenti. Più job possono essere elaborati simultaneamente ed ogni utente avrà la sensazione di essere l’unico utilizzatore del sistema. Il funzionamento in time sharing differisce dalla multiprogrammazione per il fatto che l’elaborazione rimane sempre sotto il controllo dell’utente e quindi esiste un colloquio utente-elaboratore, cioè c’è un rapporto interattivo o convenzionale. 6. Modo interattivo (conversazionale): viene stabilito tra l’utente e il sistema un colloquio tramite unità di accesso che generalmente consiste in un terminale video con tastiera. Con l’interattività ad esempio è possibile verificare istantaneamente la validità sintattica delle frasi del programma e provvedere immediatamente alla loro eventuale correzione. Quando l’utente non può intervenire nell’esecuzione del job abbiamo il modo non interattivo. Tipo di accesso permesso all’utente al sistema di elaborazione: 1. accesso locale dei job (LJE Local Job Entry): l’utente può accedere alle classiche unità di input-output poste nello stesso ambiente del sistema di elaborazione. 2. accesso remoto (RJE Remote Job Entry): i job giungono al sistema da stazioni remote collegate tramite linee telefoniche. Quando è possibile accedere ad un elaboratore centrale da numerose stazioni remote parliamo di sistema ad accesso multiplo. (Es Linux) SUPPORTI FORNITI DAL SISTEMA OPERATIVO Il sistema operativo aiuta l’utente a risolvere ogni problema inerente al job che vuole elaborare tramite una serie di programmi. 1. PROGRAMMI TRADUTTORI. Traducono le istruzioni scritte dall’utente in linguaggio simbolico in istruzioni in linguaggio assoluto costituito da sequenze di bit che specificano il codice operativo e la modalità per l’indirizzamento degli operandi. L’ingresso del programma 7 traduttore si chiama programma sorgente (source program), mentre l’uscita è il programma oggetto (object program). Nel caso di linguaggi assemblativi i traduttori vengono detti Assemblatori e la sequenza di operazioni che permette la traduzione del programma dalla forma simbolica a quella binaria è detto processo di assemblaggio: tra codici operativi mnemonici e binari esiste una corrispondenza uno a uno. Nel caso di linguaggi ad alto livello il traduttore prende il nome di: a. Compilatore. Traduce i programmi in codice macchina, in linguaggio assembler od in un linguaggio intermedio che verranno a loro volta assemblati o compilati per generare il programma oggetto; per ogni frase del linguaggio sorgente vengono prodotte generalmente più di una istruzione in codice macchina (non vi è quindi corrispondenza uno a uno). b. Interpretatore. Esamina uno alla volta le frasi del programma sorgente, ne interpreta il significato e provvede immediatamente alla loro esecuzione. L’interpretatore dipende dalla macchina (essendo scritto nel linguaggio base) e simula un elaboratore avente come linguaggio macchina il linguaggio ad alto livello in esame. Anche se esistono diversi tipi di programmi traduttori si possono distinguere principalmente tre fasi, a partire dal programma sorgente sino all’esecuzione dello stesso: a. di traduzione, durante la quale il traduttore legge il programma sorgente (source program) e lo traduce in programma oggetto; b. di caricamento, durante la quale il programma caricatore (loader) carica il codice oggetto in memoria ottenendo il codice assoluto; c. di esecuzione, durante la quale si ottengono a partire da dati in ingresso, dei dati in uscita secondo l’algoritmo sviluppato dal programmatore. Un traduttore può essere logicamente pensato come formato da due parti principali: la prima parte è un analizzatore che effettua un analisi grammaticale e sintattica, la seconda è quella che produce il codice oggetto. 2. PROGRAMMI CARICATORI (loader). Provvedono a legare fra loro i vari moduli componenti di un programma (ricercando automaticamente quelli che non gli vengono forniti direttamente dall’utente) e a caricare in memoria il programma per l’esecuzione. In particolare devono essere svolte le seguenti istruzioni: a. allocazione (allocation) dello spazio di memoria necessario al programma; b. collegamento (linking) dei diversi moduli del programma; 8 c. rilocazione (rilocation) degli indirizzi per farli corrispondere allo spazio assegnato; d. caricamento (loading) delle istruzioni macchina e dei dati in memoria centrale. Se si ha una stringa di informazioni, in particolare costituita da una successione di istruzioni di macchina che costituiscono il programma traduttore o il programma oggetto dell'utente, tali istruzioni devono trovarsi memorizzate nelle opportune locazioni di memoria centrale per essere eseguite. Se in memoria vi è già il sistema operativo questa funzione di caricamento viene demandata ad opportuni programmi, chiamati loader ma chi carica in memoria lo stesso sistema operativo o parte di esso? La funzione di caricamento iniziale viene, di solito, affidata ad un piccolo programma detto bootstrap, costituito da istruzioni di lettura codificate secondo il linguaggio macchina. Questo programma, una volta eseguito, consente di leggere da una unità periferica le istruzioni più complesse del traduttore o del programma oggetto dell’utente o parte del sistema operativo, registrato su un supporto, e di caricarle in locazioni successive di memoria. Rimane, pertanto, solo il problema di caricare in memoria, inizialmente, un corto programma di bootstrap. Il caricamento di questo, veniva realizzato solo mediante l'impostazione di commutatori presenti sul pannello della unità centrale secondo una combinazione di bit 1 e di bit 0 corrispondenti alle istruzioni costituenti il bootstrap stesso, mentre la memorizzazione di tali bits in locazioni successive avveniva mediante la pressione di un tasto detto di memorizzazione (store). Una volta, quindi, che si erano registrate in memoria centrale tutte le istruzioni del bootstrap, si impostava manualmente con commutatori l'instruction register (il registro indirizzo) del programma contenente l'indirizzo della locazione di memoria dalla quale l'hardware preleva la prima istruzione del bootstrap e premendo un altro tasto, detto di start, si innesca il processo di esecuzione del bootstrap stesso consentendo il caricamento di un programma di dimensioni maggiori. Successiavamente il bootstrap veniva anche registrato e memorizzato, una volta per tutte, su un supporto qualunque (scheda, disco, nastro) in forma binaria, corrispondente alla stringa di istruzioni. Attualmente il bootstrap è inserito in una memoria ROM che all’avvio dell’elaboratore viene letto ed eseguito. Questo programma permette di caricare il S.O. nella memoria operativa. Tale processo si chiama BOOTSTRAPPING. 9 3. PROGRAMMI DI UTILITA’. Svolgono funzioni frequentemente richieste dall’utente evitandogli la seccatura di dover scrivere ogni volta un apposito programma. (Es copia di file) 4. PROGRAMMI PER LA CORREZIONE DEGLI ERRORI. Permettono la messa a punto dei programmi per la ricerca ed eliminazione degli errori in essi contenuti (debugging). 5. PROGRAMMI PER LA GESTIONE DEI DATI ED ELABORAZIONE DEI FILE. Hanno il compito di gestire le operazioni di input-output richieste dall’elaborazione dei dati. 6. PROGRAMMI DI ELABORAZIONE DEI TESTI (editing). Permettono di modificare programmi sorgente, cioè inserire, spostare, cancellare funzioni, ricercare stringhe e cosi via, mediante semplici comandi. IL SISTEMA OPERATIVO COME GESTORE DELLE RISORSE Una delle funzioni più importanti dei sistemi operativi è la gestione delle risorse dei computers. Per risorse si intende i dispositivi hardware e software che concorrono all’elaborazione delle informazioni. Le risorse principali sono 4 e sono riassunte nella tabella seguente: Risorsa Elemento hardware o software Unità di gestione Memoria Memoria centrale Gestore della memoria Unità di elaborazione CPU e canali di I/O Gestore dei processori Periferiche Memorie di massa, lettori, stampanti Gestore di I/O Informazioni Informazioni Gestore dei file Unità di elaborazione: dispositivo hardware capace di eseguire una data sequenza di istruzioni; essa può coincidere sia con la CPU sia con i canali. Processo: programma in esecuzione cioè l’insieme costituito da programmi del S.O. e del lavoro (job) dell’utente (programma e dati). Ogni job può essere suddiviso in job step cioè in passi. Monitor: La componente del S.O. che svolge azione di coordinamento delle altre componenti. 10 GESTIONE DELLE INTERRUZIONI Nei computer l'elaborazione è ottenuta mediante dispositivi collegati fra loro e controllati dall'unità centrale, progettati e realizzati per una ripartizione di mansioni specializzate e distinte. Il controllo, la sincronizzazione, la programmazione ed in generale la richiesta di una operazione di entrata/uscita e/o il completarsi di un evento sul sistema degli organi componenti gli elaboratori avviene mediante il meccanismo delle interruzioni (interrupts). Le interruzioni possono essere di diverso tipo, tante quante sono le diverse operazioni richieste e/o eventi che si completano, oppure possono raggrupparsi in un'unica classe o livello di interruzione. Ciascun tipo o livello o classe di interruzione ha una priorità relativa definita al momento della progettazione dell'hardware o modificabile a programma; tale priorità ha il significato, in caso di contemporaneità di due o più interruzioni, di assegnare il controllo al sottoprogramma di servizio di quella a priorità maggiore. Alla fine di una interruzione il controllo verrà dato all`istruzione immediatamente seguente a quella durante la cui esecuzione si era verificata l’interruzione. Per rendere l'unità centrale atta a ricevere un interrupt esistono paricolari bits detti di mascheramento la cui impostazione ad 1 o 0 consente appunto che le interruzioni restino mascherate sino alla reimpostazione in senso contrario dei bits in questione. Anche se le classi di interruzioni sono una caratteristica dell’elaboratore e quindi sono diverse a seconda dello scopo, delle dimensioni e della casa costruttrice possiamo dare una classificazione generalizzata. 1. Chiamata al supervisore. Per salvaguardare le risorse fisiche del sistema è necessario che l’elaboratore possa lavorare in almeno due modi diversi chiamati stati. Il primo è detto stato di supervisore o stato privilegiato (supervisor state): è caratterizzato dal fatto che sono lecite tutte le istruzioni previste dall’hardware e qualunque tipo di operazione. E' durante questo stato, ad esempio, che si possono effettuare alcune operazioni di entrata/uscita o che si può accedere a qualunque parte della memoria centrale. Nell'altro stato detto stato di esecuzione o stato dell'utente o stato di programma (problem state) sono possibili solo quelle operazioni che non possono danneggiare altri programmi presenti in memoria o creare conflitti di uso di certi dispositivi da parte di più programmi contemporaneamente. 2. Interruzioni del programma. Appartengono a questa classe quelle interruzioni provocate dalla esecuzione di normali istruzioni sotto condizioni di illegittimità, come: tentativo di accedere a parti di memoria non accessibili all’utente; tentativo di scrivere in una zona di memoria nella quale l'utente può solo leggere informazioni; 11 esecuzione non corretta di operazioni aritmetiche o di istruzioni di macchina non riconosciute dagli organi di decodifica; 3. Interruzioni di entrata/uscita. A questa classe appartengono quelle interruzioni che segnalano il completarsi dell'evento di lettura o scrittura da parte di una unità periferica; 4. Interruzioni esterne. Fanno parte di questa classe alcune interruzioni provenienti da apparecchiature particolari oltre che dalle normali unità di entrata/uscita come le interruzioni dalla tastiera di comando (console) dell'operatore e l'interruzione di un orologio hardware dell'unità centrale; 5. Interruzioni per malfunzionamento dell'elaboratore. Le interruzioni di questo tipo consentono che l'utente sia avvertito in caso di cattivo funzionamento di alcune parti dell'elaboratore così che si possa dare completa affidabilità ai risultati nei casi normali di non avvenuta interruzione. In sintesi le interruzioni segnalano l'inizio o il completarsi di un evento e per effetto di esse l'elaborazione in corso viene sospesa mentre tutto il sistema operativo viene progettato in modo che: a. da quel momento il controllo passi a sottoprogrammi di servizio dell'interruzione; b. sia memorizzato, in qualche parte, l'indirizzo fisico della locazione di memoria successiva a quella che conteneva l'istruzione durante l'esecuzione della quale è avvenuta la interruzione; c. prelevi la configurazione di bits messa a disposizione dall'hardware, dall'analisi della quale si risale a quale dispositivo ha causato l'interruzione e sotto quale condizione si è verificato l'evento. SPOOL AUTOMATICO La parola spool (in inglese vuol dire avvolgere una bobina), cioè Simultaneus Peripheral Operation On Line, sta a significare lo sfruttamento simultaneo delle unità periferiche da parte di più unità di lavoro o programmi contemporaneamente in memoria centrale. Lo spool automatico consiste nel trasferire, attraverso opportuni programmi di controllo del sistema, i dati di ingresso di ciascuna unità lavorativa in aree di supporto ad accesso diretto, dalle quali in realtà e ad insaputa dell'utente vengono prelevate le informazioni in entrata durante la fase di esecuzione del lavoro.La stessa cosa in senso contrario avviene per le operazioni di uscita per le quali a cura del sistema vengono create delle aree su un supporto ad accesso diretto in cui vengono memorizzate in sequenza di esecuzione le informazioni in uscita. 12 Solo alla fine della esecuzione dell'unità di lavoro, il sistema in modo indipendente e con un suo programma di controllo che concorre con gli altri all'uso delle risorse provvederà al trasferimento veloce dei dati sul supporto. Pertanto, in un sistema di multiprogrammazione, tutti i dati in entrata e in uscita sono raggruppati in insiemi di dati (file) su memorie ad accesso diretto; questi insiemi sono gestiti da appositi sottoprogrammi di spool di entrata, che svolgono tale compito in modo autonomo in sovrapposizione all'elaborazione dei programmi presenti in memoria centrale e competendo con essi per l'assegnazione delle risorse dell'elaboratore. ESEMPIO DI RAPPORTO FRA COMPONENTI Il monitor contiene dei componenti che potrebbero essere cancellati dalla M.O. Es. Command.Com che viene rimesso sul HD quando non viene utilizzato DEL SISTEMA OPERATIVO Memoria operativa MONITOR DISPATCHER GESTORE DELLE INTERRUZIONI DRIVER LIBRERIE 13 MEMORY MANAGER SCHEMA DI INTERAZIONE DELLE COMPONENTI DEL S.O. CON L’HARDWARE UNITA’ CENTRALE CPU TUTTI I PROGRAMMI IN ESECUZIONE RESIEDONONO NELLA M.O. MEMORY MANAGER MEMORIA OPERATIVA NUCLEO DEL SISTEMA OPERATIVO (parte residente) DRIVERS PERIFERICHE IL NUCLEO DEL S.O. ED IL MEMORY MANAGER SONO RESIDENTI NELLA M.O. DEL COMPUTER PER TUTTO IL TEMPO DI FUNZIONAMENTO DEL COMPUTER I DRIVER DELLE PERIFERICHE RISIEDONO NELLA M.O. SOLTANTO PER IL TEMPO NECESSARIO PER LO SCAMBIO DEI DATI FRA L’UNITA’ CENTRALE E LA PERIFERICA AL NUCLEO APPARTIENE IL MONITOR, IL DISPACTER (SCHEDULER) E L’INTERRUP HANDELER Nota Bibliografica. Fondamentale riferimento per la stesura di questo testo è stato: BALOSSINO Nello, Informatica. Dall’informatica di base alla grafica computerizzata. Torino, S. Lattes & C. Editori. 14