Anteprima
Vedrai una selezione di 1 pagina su 4
Sistemi operativi - i principi di un sistema operativo Pag. 1
1 su 4
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Caratteristiche principali del sistema batch

Le caratteristiche principali del sistema batch erano 3:

  1. Positiva: si ebbe l'incremento dell'efficienza d'uso delle risorse di macchina grazie solo alla limitazione dell'intervento manuale dell'utente.
  2. Negativa: il pieno controllo dell'operatore sulla macchina implicò l'allontanamento dell'utente dalla macchina e i risultati dei programmi che egli portava all'operatore venivano poi ricevuti dopo ore o giorni.
  3. Negativa: la macchina eseguiva i programmi sequenzialmente. Per questo se un utente portava un programma molto semplice dopo tanti altri utenti con programmi meno semplici, doveva comunque aspettare l'esecuzione di tutti i programmi portati prima di lui. Il sistema non poteva intervenire quindi sull'ordine d'esecuzione dei programmi.

Sistemi batch multiprogrammati: nei sistemi batch tradizionali vennero introdotti dispositivi fisici come DMA per ridurre i tempi per le operazioni di I/O e per migliorare l'uso.

della CPU. Un primo miglioramento si ebbe con l'introduzione della tecnica dello Spooling. In questo modo i job di un batch venivano caricati prima su disco in modo tale che durante la loro esecuzione la CPU operasse solo con il disco. Mentre la CPU eseguiva i programmi di un batch, venivano contemporaneamente caricati su disco i job del batch successivo e, parallelamente venivano stampati i risultati del batch precedente prelevandoli ancora da disco. I vantaggi che si ottennero furono 2: 1- la CPU operava direttamente solo con le periferiche veloci (cioè i dischi) e si ridusse il suo tempo di attesa aumentando l'efficienza di uso. 2- sul disco erano presenti contemporaneamente più job, e perciò si potevano implementare strategie per decidere quale job eseguire per primo (politiche di scheduling). Un ulteriore miglioramento si ebbe con l'introduzione della tecnica della multiprogrammazione (multitasking). Invece di caricare in memoria fisica solo un programma ed eseguirlo fino al termine, si caricavano in memoria più programmi contemporaneamente e la CPU passava da uno all'altro in modo rapido, dando l'illusione che i programmi fossero eseguiti in parallelo. Questo permetteva di sfruttare meglio le risorse della CPU e ridurre i tempi di attesa.

Eseguirlo fino alla fine, si caricano in memoria più programmi. In questo modo, se il programma in esecuzione deve effettuare un'operazione di I/O si può porre in attesa in modo tale da poter assegnare la CPU al processo successivo evitando che questa resti inattiva. La sensazione che si ha è che i programmi vengono eseguiti "contemporaneamente" anche se in realtà solo un programma in un certo istante è in reale esecuzione in CPU. Con la multiprogrammazione si è ridotto di molto il tempo d'attesa della CPU.

Volendo, il numero di programmi eseguiti contemporaneamente può essere elevato ma bisogna sempre tenere conto del tempo per il cambio di contesto. Se è troppo alto si ha un aumento dell'overhead (sovraccaricamento) del sistema e aumentare il numero di programmi in esecuzione non risulta più efficiente.

Cambio di contesto: passaggio dell'esecuzione da un programma all'altro durante il quale il S.O. salva lo stato

La CPU è responsabile dell'esecuzione dei programmi, mentre il sistema operativo si occupa della gestione delle risorse e della prevenzione di conflitti tra i vari programmi. Con il multitasking, il sistema operativo deve gestire contemporaneamente programmi con diverse caratteristiche, ad esempio alcuni che eseguono calcoli intensivi e poche operazioni di input/output (cpu bound) e altri che fanno il viceversa (i/o bound).

Un sistema operativo interattivo consente all'utente di interagire con il sistema. Questo non era possibile nei sistemi batch, dove l'utente non aveva alcuna interazione con il sistema. Di conseguenza, i sistemi batch persero importanza e lasciarono spazio ad altri tipi di sistemi operativi. In un sistema interattivo, più utenti possono essere collegati allo stesso sistema, quindi la multiprogrammazione è ancora una volta importante. In questo modo, ogni utente ha la sensazione di avere a disposizione l'intero calcolatore. La vera condivisione delle risorse può essere evidente solo quando il sistema è carico e richiede l'utilizzo efficiente delle risorse.

Molti utenti sono collegati ad esso. Nei sistemi interattivi l'obiettivo principale diventa quello di minimizzare i tempi di risposta del sistema e rendere questo tempo proporzionale alla complessità del programma in esecuzione.

Sistemi time-sharing: s.o. multiprogrammato ed interattivo. Il criterio adottato in questo tipo di s.o. fu la divisione del tempo di CPU (time slice). Durante questo intervallo il programma poteva essere eseguito, essere bloccato o poteva terminare. Se allo scadere del tempo il programma non era ancora terminato, allora veniva terminato tramite un'interruzione lanciata dal timer (e messo nella coda dei programmi ancora da eseguire) e la CPU veniva commutata lo stesso ad un altro programma tramite cambio di contesto. Il vantaggio principale era che nessun programma poteva detenere la CPU per un tempo superiore al time slice; in questo modo non si ritardava l'esecuzione dei programmi ancora in coda.

In questo tipo di s.o. viene utilizzata memoria virtuale.

che consente di far girare programmi anche se non sono interamente caricati in memoria. Sistemi in tempo reale: con questo tipo di s.o. è possibile controllare e gestire un sistema fisico (centrale elettrica, robot, etc..) attraverso un calcolatore. In questo sistema sono fondamentali la multiprogrammazione ed il multitasking, perché in genere i task che il sistema deve svolgere sono molti. La caratteristica di questo s.o. è che ogni task deve essere eseguito e deve aver completato le proprie operazioni entro un certo intervallo di tempo imposto dall'applicazione e detto deadline del task. Ogni ritardo potrebbe causare danni irreparabili. L'obiettivo fondamentale di questi s.o. non è quello di minimizzare i tempi di risposta come nei sistemi time sharing, ma è quello di garantire che tutti i task del sistema completino le loro esecuzioni entro le rispettive deadline. In un s.o. in tempo reale ogni task ha il proprio livello di criticità;quando la CPU è da assegnare ad un programma, è ovvio che viene assegnata al programma con priorità maggiore. Priorità statica: assegnata a tutti i processi prima che il sistema inizi la sua esecuzione. Priorità dinamica: calcolata dinamicamente in base alle caratteristiche dei singoli task. Esistono diversi tipi di s.o. in tempo reale: - hard realtime: dove le deadline devono essere rispettate senza eccezioni; - soft realtime: dove la violazione di una sola deadline non compromette il funzionamento dell'intero sistema, ma ne riduce le prestazioni e quindi la qualità del servizio. Rientrano nella categoria di s.o. realtime anche i sistemi immersi, dove tutto il software è contemporaneamente software di sistema e software applicativo. I s.o. in tempo reale non ammettono l'uso di memoria virtuale in quanto potrebbe causare malfunzionamenti e rallentamenti non accettabili. S.o. per personal computer: l'uso del PC è riservato ad

Una sola persona alla volta e quindi non presenta i problemi legati allamultiutenza. Per questo i primi s.o. realizzati per pc sono stati molto semplici e senza la tecnica della multiprogrammazione. Poi, con l'aumento delle prestazioni dei microprocessori e delle dimensioni della memoria principale, la multiprogrammazione si è rivelata utile anche nei s.o. per pc. Per questo ora è possibile eseguire piu operazioni contemporaneamente e gestite interamentedal s.o. e tramite interfaccia grafica che ci permette di vedere tutti i programmi attivi.

S.o. per sistemi paralleli e distribuiti: in sistemi con una sola CPU la concorrenza tra programmi non era reale in quanto seppure sembrava che fossero eseguiti contemporaneamente, in realtà non era così perché di volta in volta la CPU era assegnata ad un solo programma.

Con l'introduzione dei sistemi multielaboratore (piu di una CPU) la concorrenza tra programmi è diventata reale, e piu

I programmi possono essere eseguiti parallelamente. Gli sviluppatori di s.o. di questo tipo devono tener conto che si potrebbe verificare inconsistenza dei dati se più programmi accedono alla stessa area di memoria e devono quindi evitare che ciò accada.

Con l'introduzione delle reti di calcolatori, è stato necessario lo sviluppo di nuovi moduli del s.o., ovvero di quelli necessari per gestire le interfacce di rete.

I s.o. concepiti per funzionare su computer collegati in rete possono essere classificati in 2 categorie:

  1. s.o. di rete: dove ogni nodo della rete dispone di un proprio s.o. (non necessariamente uguale). I sistemi cooperano tra loro per consentire il trasferimento di file tra computer connessi alla rete.
  2. s.o. distribuiti: dove ogni nodo della rete abbia lo stesso s.o. e funzioni in modo tale che ogni utente della rete veda un sistema unico nascondendo il fatto che in realtà il sistema è distribuito. Il sistema offre quindi all'utente
l'astrazione di condividere un unico spazio di memoria centrale.

3 - STRUTTURA DEI SISTEMI OPERATIVI

Tutti i s.o. presentano diversità ma anche caratteristiche comuni. Prima fra tutte la tecnica della multiprogrammazione.

Il principale compito di un s.o. multiprogrammato è quello di coordinare l'evoluzione di più programmi applicativi contemporaneamente.

Componenti principali di un s.o.

I componenti principali di ogni s.o. sono 6:

  1. gestione dei processi (scheduler): con il termine processo si intende l'attività svolta dal processore durante l'esecuzione di un singolo programma. Questo componente ripartisce l'uso del processore fra i vari programmi caricati in memoria in modo tale che lo stesso sviluppi un insieme di processi contemporaneamente, dando la sensazione che ogni processo sia sviluppato da un diverso processore "virtuale". Per svolgere questo compito, il s.o. deve mantenere aggiornato lo stato di avanzamento di ciascun

processo (sapere se è bloccato o in esecuzione, etc..). I vari processi sviluppati dal sistema spesso devono interagire tra loro per andare avanti; raramente sono indipendenti: l'avanzamento di un processo può a volte influenzare l'avanzamento di un altro. Questo accade perché i processi condividono lo stesso insieme di risorse, e se una certa risorsa è utilizzata da un processo1, allora un altro processo2 deve attendere che il processo1 finisca di utilizzare quella risorsa.

- gestione della memoria principale (RAM): per consentire l'evoluzione concorrente dei processi, essi devono essere prima allocati in RAM affinché possano essere eseguiti. Una parte della memoria è riservata al s.o. Ma siccome il s.o. ne richiederebbe molta, allora solo una parte della memoria principale è destinata ad esso. Questa parte è suddivisa in altre 2 parti: la 1° è quella che contiene tutte le funzioni del sistema necessarie

all'avvio e al caricamento (parte residente), la 2° è utilizzata per caricare dalla memoria di massa le funzioni del s.o. quando sono richieste. Il resto della memoria è invece utilizzata per caricare ed allocare i programmi da eseguire in multiprogrammazione. Il grado
Dettagli
Publisher
A.A. 2008-2009
4 pagine
1 download
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher flaviael di informazioni apprese con la frequenza delle lezioni di Sistemi operativi e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Bologna o del prof Salomoni Paola.