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