INFORMATICA - I SISTEMI OPERATIVI: RICERCHE COMPLEMENTARI

LA GESTIONE DELLE INTERRUZIONI

Le istruzioni dei programmi vengono eseguite in sequenza, una dopo l'altra; si possono però verificare, casualmente rispetto all'elaborazione, cioè in modo asincrono, delle situazioni che richiedono interventi particolari da parte del sistema operativo. Queste situazioni vengono riconosciute e gestite con un meccanismo chiamato "gestione delle interruzioni" (o degli "interrupt").
Le interruzioni possono derivare da eventi che dipendono dall'elaborazione in corso (interrupt interni), oppure da eventi che si verificano all'esterno del programma, per effetto di operazioni compiute sulle periferiche (interrupt esterni).
Quando la CPU riceve un segnale di interruzione blocca il programma in corso di esecuzione, salvando in un'area apposita tutte le informazioni necessarie perchè questo possa essere ripreso successivamente (per esempio il registro di stato che contiene le informazioni sullo stato del programma e il program counter che contiene l'indirizzo dell'istruzione da cui riprendere l'esecuzione).
Si passa poi ad eseguire una routine del sistema operativo che gestisce l'evento asincrono che si è verificato.
Dopo aver terminato la gestione dell'interruzione il programma interrotto può riprendere l'esecuzione.
Dato che gli eventi gestiti tramite le interruzioni sono asincroni, cioè si verificano in modo non prevedibile, può accadere che, mentre si sta gestendo un'interruzione, possa venirne segnalata un'altra, dello stesso tipo o differente (problema degli interrupt multipli).
Ai vari tipi di interrupt viene associato un valore che rappresenta il livello di priorità, cioè l'importanza del tipo di interruzione rispetto agli altri.
Se si verifica un'interruzione a priorità più alta mentre il sistema ne sta già gestendo una, la routine che si sta eseguendo viene sospesa e si passa a gestire la nuova interruzione, per riprendere la prima soltanto più tardi.
Se invece si verifica un'interruzione a priorità più bassa, si continua a gestire quella precedente, prendendo in considerazione la nuova soltanto dopo aver terminato la prima.

TIPI DI INTERRUZIONI

I principali tipi di interruzione che si possono verificare sono:
- interruzione di tipo supervisor call o chiamata al supervisore (interrupt interno): si verifica quando un programma applicativo richiede l'intervento del sistema operativo per eseguire una certa operazione (per esempio la gestione di tutte le operazioni di input/output; quando il programma applicativo ne deve eseguire una, richiede l'intervento del sistema operativo con un'interruzione di chiamata al supervisore).
- interruzione di tipo program (interrupt interno): viene segnalata quando si verifica un errore durante l'esecuzione del programma.
- interruzione di tipo I/O per operazioni di input/output (interrupt esterno): si verifica quando viene completata una operazione di input/output che era stata richiesta.
- interruzione di tipo machine check o di malfunzionamento hardware (interrupt esterno): si verifica quando viene rilevato qualche errato funzionamento dell'hardware del computer.
- interruzione di tipo external o da dispositivi esterni (interrupt esterno): si verifica quando arrivano dei segnali da dispositivi esterni (per esempio, quando vengono premuti i pulsanti della stampante per accenderla o per sospendere una stampa).

[Figura: Schema della gestione delle interruzioni: quando la CPU riceve un segnale di interruzione blocca il programma in corso di esecuzione, salvando in un'apposita area tutte le informazioni necessarie perché esso possa essere ripreso successivamente].
Schema della gestione delle interruzioni

ELABORAZIONE IN TEMPO REALE

Una elaborazione si dice in tempo reale quando i risultati vengono prodotti dal programma molto velocemente.
Non si può esprimere in modo preciso la velocità che deve avere un programma per essere considerato in tempo reale; infatti la velocità di risposta necessaria dipende dal tipo di elaborazione richiesta. Per esempio, un programma per la prenotazione di biglietti aerei o ferroviari può essere considerato in tempo reale se l'operazione di prenotazione richiede tempi dell'ordine di un minuto.
Ma un programma usato per controllare l'andamento di un processo industriale o di un volo spaziale dovrà avere tempi di risposta di frazioni di secondi.
Le elaborazioni in tempo reale di solito vengono eseguite su sistemi dedicati, cioè sistemi utilizzati proprio soltanto per questo tipo di elaborazione.

GLI OVERLAY

La gestione degli overlay è un metodo che permette di eseguire un programma più grande della memoria disponibile. Semplice, utilizzato anche su personal computer, dal punto di vista del sistema richiede soltanto una tecnica di swapping per il trasferimento degli overlay dalla memoria secondaria alla principale e viceversa. Un overlay è una parte del programma che non deve necessariamente essere sempre presente in memoria; il programma viene diviso in moduli che costituiscono il programma principale e gli overlay, organizzati in modo gerarchico; il programma principale rappresenta la radice dell'albero degli overlay e deve sempre essere presente in memoria centrale; gli overlay si possono alternare in una stessa area di memoria; in questo modo il programma richiede molto meno spazio per l'esecuzione. La suddivisione del programma in overlay deve essere predisposta dal programmatore con opportune istruzioni offerte dal linguaggio di programmazione.

PROGRAMMI A CODICE RIENTRANTE

Nei sistemi time-sharing più utenti possono richiedere di utilizzare lo stesso programma; per non averne in memoria più copie si può costruire il programma in modo opportuno perchè possa essere trattato dal sistema operativo come rientrante.
Un programma a codice rientrante è quello che mantiene in memoria una sola copia delle istruzioni, condivisa dai diversi utenti mentre, per ognuno di essi, viene preparata un'area dati privata.

I SISTEMI DI PROTEZIONE

Il sistema operativo può offrire un vero e proprio sistema di protezione.
Se quest'ultimo è presente è possibile associare a ogni risorsa una lista di accesso in cui viene specificato quali operazioni può compiere ciascun programma sulla risorsa stessa. In particolare viene spesso realizzato un sistema di protezione di questo tipo per proteggere i file. Un sistema di protezione può offrire la possibilità di definire delle parole d'ordine per eseguire determinate operazioni o di associare a ciascun utente un codice di accesso che gli permette solo di accedere a determinate risorse o di effettuare certe operazioni.
Possono anche essere gestiti degli appositi "profili" in cui ad ogni codice di accesso viene associato un menu obbligatorio che consente di scegliere solo tra opzioni prefissate e non di richiedere l'esecuzione di un qualsiasi programma o comando.
Può inoltre essere prevista la registrazione in un file delle operazioni eseguite da ogni utente, degli accessi effettuati, dei tentativi di violazione, in modo da poter effettuare controlli, identificando la sequenza di operazioni compiute da ogni utente.

L'EVOLUZIONE DEI SISTEMI OPERATIVI

Alla fine degli anni '40 mandare in esecuzione un programma significava inserirlo nel computer tramite un nastro perforato, aspettando i risultati sulla stampante o ancora su un nastro perforato, mentre il programmatore controllava l'esecuzione premendo dei tasti sulla consolle del sistema; i programmi potevano essere realizzati soltanto in linguaggio macchina (quello che utilizza le cifre del sistema di numerazione binario); l'attività di programmazione risultava dunque difficilissima e riservata a pochi specialisti.
All'inizio degli anni '50 vennero sviluppati i primi programmi di utilità (assemblatori, linker, loader) e i primi driver delle periferiche che permettevano al programmatore di non preoccuparsi dei dettagli di funzionamento delle stesse, come invece doveva fare in precedenza.
La creazione di un programma veniva eseguita per passi (la compilazione, il linkaggio, ecc.) ognuno dei quali richiedeva che fosse montato un nastro con il programma di utilità necessario; il computer poteva essere utilizzato da un solo programmatore per volta e molto tempo veniva sprecato soltanto per cambiare i vari nastri.
Un'innovazione fondamentale fu la realizzazione dei sistemi batch; anche se i programmi venivano ancora eseguiti soltanto uno alla volta, si erano ridotti i tempi necessari per la richiesta di esecuzione poichè il sistema operativo poteva raccoglire più lavori presentati su schede o nastri perforati o magnetici, che richiedevano l'uso dei vari programmi di utilità mediante istruzioni di un linguaggio di controllo.
Il sistema operativo aveva quindi il compito di eseguire un programma dopo l'altro: caricarlo in memoria, eseguirlo, provvedere all'output, ecc.
Il passo successivo fu la realizzazione dei sistemi operativi in multiprogrammazione che permettevano di assegnare la CPU ad altri lavori quando un programma si interrompeva (per esempio per la richiesta di un'operazione di input/output).
I sistemi in multiprogrammazione utilizzavano ancora metodologie batch.
La possibilità di lavorare in modo interattivo si ebbe soltanto con l'introduzione dei sistemi time-sharing (in cui gli utenti lavorano collegandosi tramite terminale e la CPU viene assegnata ad ognuno di loro per un certo intervallo di tempo).
Verso la metà degli anni '60 erano presenti sistemi batch in multiprogrammazione o sistemi interattivi in time-sharing.
Nel 1964 la IBM propose un sistema operativo che permetteva elaborazioni di tipo diverso sulla stessa macchina; era un sistema general purpose, cioè utilizzabile per usi molto diversi; anche i sistemi operativi attuali continuano a seguire questa filosofia.
Chiudi

Outlet Offerte Sconti Promozioni Risparmiare sugli Acquisti di prodotti e Servizi in Internet

Gigacenter Store-Vente privee-Show room prive-La ruota della fortuna-Outlet Pi Style-Offerte Outlet Store-Sconti Outlet Offerte-Spartoo Shoes-Private Outlet-Saldi Privati-Sold Outlet-Offerte del GiornoBuoni sconto-Saldi Sconti-Offerte Viaggio-Acquisti + Guadagni

 

eXTReMe Tracker

Shiny Stat

free counters