sistemi operativi

annuncio pubblicitario
Le 4 aree dell’O.S. (operative system)
Command processor
Traduce i messaggi dell’utente (apparteneneti ad un set finito di
comandi) in azioni da eseguire
I/O control
Semplifica la gestione dell’I/O per i programmi che ne
richiedono l’utilizzo
File manager
E’ il gestore dei file. Organizza le informazioni su disco, si
occupa di ricercare lo spazio libero necessario per la
registrazione di un nuovo file, di recuperare un file già presente
per la lettura, …
Per far ciò utilizza un file speciale detto directory che contiene
un elenco dei file e della loro posizione sul disco
Utility program
Insieme di programmi che eseguono compiti aggiuntivi. Per es.:
modificare l’ora dell’orologio di sistema, cancellare o copiare
file, …
Linguaggi di programmazione e applicativi
Command
processor
I/O control
File manager
Sistema operativo
Firmware contenuto nella ROM
Utility
programs
SISTEMI OPERATIVI
Si tratta dei componenti più importanti dopo l’hardware poiché permettono agli operatori di
interagire con la macchina. Il sistema operativo crea un macchina virtuale che fa in modo che
l’utente possa ignorare cosa ci sia all’interno del computer ma gli richiede la conoscenza dei propri
comandi. I sistemi oprativi si sono evoluti in maniera amichevole verso l’utente con interfacce
grafiche di facile utilizzo. I sistemi oprativi permettono di gestire i file, di gestire più utenti
contemporaneamente (nelle reti), di gestire operazioni sicure, di interconnettersi su altri elaboratori .
Compito fondamentale è legato alla interfaccia utente basata su di un paradigma grafico, laddove è
possibile, scegliendo i comandi tramite menù di accedere ai comandi dei sistemi operativi. Il
secondo aspetto di un sistema operativo è quello di organizzare le memorie di massa in modo
logico. La CPU non si preoccupa di questo, l’organizzazione dei dischi è gestita dal sistema
operativo. Il sistema si preoccupa anche dell’assegnazione dei nomi, delle estensioni (che
permettono di associare i file ad un programma particolare – i file .doc sono generalmente associati
al programma Word di Microsoft nel caso di Windows), della gerarchia dei file e del loro
raggruppamento.
Un altra caratteristica è quella della multiutenza: il sistema operativo permette a più utenti di
condividere sia i dischi di un elaboratore, sia la CPU, sia qualunque altra periferica.
Un grande problema è quello della sicurezza informatica. Il sistema operativo deve rendere corretto
e sicuro l’uso di un computer (immagine 16). Il sistema operativo deve controllare che chi esegue
operazioni su file o sia autorizzato. E’ necessaria cioè una politica di gestione delle risorse
assegnando ad ogni utente delle opportune autorizzazioni. Uno dei modi è l’assegnazione di una
password. Diversi livelli di password permettono di accedere a diversi livelli di informazioni. Il
sistema operativo realizza ed implementa i sistemi di sicurezza.
I più conosciuti sistemi operativi sono Windows 95/98 (per i singoli elaboratori), Windows NT per
la multiutenza, Unix per le reti, VM un sistema operativo per grandi elaboratori (mainframe).
Gli attuali Sistemi Operativi (SO) impiegati possono essere visti come una collezione di programmi
interagenti che operano sull’hardware per fornire agli utenti un insieme di funzioni ad un elevato
livello di astrazione.
I vantaggi sono:

definire modalità di interfaccia standardizzate verso il calcolatore;

sviluppare i programmi in maniera più semplice, modulare e indipendente dallo specifico
calcolatore;

permettere l’aggiornamento del software di base in maniera trasparente.
I sistemi operativi sono tra i programmi più complessi e difficili da realizzare, pertanto sono
realizzati a livelli, dove ogni livello usa le funzionalità del livello precedente e fornisce funzionalità
a quello successivo (struttura a cipolla).
I livelli usuali di un sistema operativo sono:

hardware

Nucleo (gestore dei processi)

Gestore della memoria

Gestore delle periferiche

Gestore dei file (file system)

Interprete dei comandi (shell)

Applicazioni
Nucleo
Questo strato colloquia direttamente con l’hardware. Esegue i programmi e risponde agli
eventi esterni generati dalle unità periferiche.
Maschera ad un utente la presenza di altri e gestisce i processi contemporaneamente attivi.
Gestore della memoria
Esso ha il compito di gestire la memoria in modo trasparente ed efficiente.
Consente ad ogni programma di lavorare in un proprio spazio di indirizzamento virtuale.
Deve proteggere i dati e le istruzioni dei programmi e mascherare la collocazione fisica.
Inoltre deve permettere la sovrapposizione degli spazi di memoria associati ai vari
programmi.
Gestore delle periferiche
Permette all’utente di operare mediante periferiche astratte.
Maschera le caratteristiche fisiche e le operazioni di I/O all’utente, e infine risolve i conflitti
tra i vari utenti.
Gestore del file system
Si occupa di organizzare le informazioni, che vengono strutturate in contenitori logici ( file )
identificati mediante un nome logico (filename).
Solitamente il nome del file è composto da due parti: nome ed estensione
Il file system offre le procedure ad alto livello per operare sui file presenti sulle memorie
stabili. Esso permette di:

recuperare le informazioni precedentemente memorizzate;

eliminare le informazioni obsolete;

modificare i dati preesistenti;

gestire il backup;
Il file system su un disco è organizzato ad albero, in cui ogni nodo è detto directory, ed ogni file è
univocamente individuato dal cammino (path) che parte dalla radice e lo raggiunge.
Ogni sistema operativo offre dei comandi per operare sul file system, i più comuni sono quelli per:

creare e distruggere file e directory

fare copie di file e directory

muovere file e directory attraverso l'albero

scegliere la directory corrente (cioè la posizione nell'albero in cui si sta operando
correntemente)

visualizzare una directory

visualizzare il contenuto di un file
Interprete dei comandi
L’interprete dei comandi e i programmi di utilità sono moduli direttamente visibili
all’utente. L’interprete dei comandi ha inoltre la funzione di interpretare i comandi che
arrivano dalle periferiche.
Le operazioni svolte sono:

lettura della memoria di massa del programma da eseguire;

allocazione della memoria centrale;

caricamento nella memoria del programma e dei relativi dati iniziali;

creazione ed attivazione del processo.
Gestione dei processi
Un sistema operativo per poter gestire contemporaneamente più programmi, ognuno dei quali può
essere eseguito, bloccato e ripreso al punto in cui era stato sospeso precedentemente, deve disporre
di una struttura che possegga istante per istante lo stato di ogni programma in esecuzione. Tale
struttura astratta è il processo.
Processo e programma

Un processo è una porzione di programma in esecuzione sul calcolatore.
o
Un programma è un oggetto statico (una sequenza di istruzioni).
o
Un processo invece è dinamico, cioè è dotato di uno stato interno che cambia nel
tempo.
o
Lo stesso programma può essere associato a più processi distinti.
Stati del processo

Executing o Running (in esecuzione):
il processore è a disposizione per l’esecuzione del processo.
In un calcolatore mono-processore ad ogni istante un solo processo può trovarsi in questo
stato.

Ready (pronto):
in grado di essere eseguito ed in attesa del processore dopo il suo rilascio da parte di altri
processi.

Waiting (in attesa):
non in grado di essere eseguito perché in attesa di un evento esterno.
La multiprogrammazione
I sistemi operativi che permettono di eseguire contemporaneamente più programmi sono detti
multitasking.
In sistemi con un solo processore l'esecuzione contemporanea dei processi è virtuale, in quanto la
CPU esegue un'istruzione per volta.
Con il termine multiprogrammazione si intende che più programmi possono risiedere
contemporaneamente in memoria centrale.
Il multitasking è nato per poter rendere minimo il tempo di inattività della CPU durante
operazioni in cui non viene utilizzata.
La politica che si utilizza per poter tenere più programmi in esecuzione senza sprecare tempo di
CPU e penalizzare i processi in coda (facendoli attendere troppo a lungo) è la ripartizione del
tempo, ovvero il time sharing.
In tal modo viene fatta un'equa ripartizione del tempo di CPU fra tutti i processi attivi, ognuno
dei quali crede di operare sul calcolatore come se fosse a lui dedicato.
Tutto ciò è organizzato dal sistema operativo attraverso la gestione di una coda di processi; ognuno
di questi ha un quanto di tempo a propria disposizione.
Lo scheduler
Lo scheduler è quella parte del sistema operativo che si occupa di gestire i processi. Esso deve:

essere efficiente;

minimizzare il tempo di risposta;

minimizzare il tempo d’attesa dei processi batch;

massimizzare il throughput (numero di processi per ora);

garantire che ogni processo abbia la sua giusta parte di tempo di CPU.
I principali algoritmi di scheduling sono:
1. First Come First Served
2. Algoritmo Round Robin
3. Priorità
4. Code multiple
5. Il più breve prima (shortest job first)
Problemi legati alla concorrenza:
Starvation: avviene quando più processi richiedono una risorsa ma solo alcuni riescono ad
ottenerla. Gli altri aspetteranno indefinitamente che li venga allocata quella risorsa prima di
continuare ad essere eseguiti.
Deadlock: avviene quando un processo rimane permanentemente bloccato in attesa di una risorsa,
la quale, a sua volta, aspetta il termine di quel processo precedente per essere resa disponibile.
E’ da tenere presente infatti che ad ogni processo è assegnata una priorità, in base a vari parametri o
allo stato in cui il processo di trova, o in base alle scelte d priorità effettuate dall’utente. Questo
meccanismo fa in modo che processi ad alta priorità precedono sempre quelli a bassa priorità.
Gestione della memoria
Gli aspetti fondamentali da considerare nella gestione della memoria sono:

Swapping

Paginazione

Memoria virtuale

Segmentazione
Riguardo le strategie di gestione è necessario:

consentire il caricamento del programma a partire da un qualunque indirizzo di memoria;

tenere in memoria solo una porzione dei dati e dei programmi;

condividere insiemi di istruzioni da parte di processi facenti parte di uno stesso programma.
Il gestore della memoria garantisce ai processi uno spazio di indirizzamento virtuale che può essere
superiore alle dimensioni della memoria fisica.
Swapping
Nei sistemi multiprogrammati di uso comune la memoria non è sufficiente a caricare tutti i
programmi. Per tale motivo si utilizza lo swapping:

il sistema operativo è abilitato a trasferire il contenuto di un’area di memoria centrale in
memoria di massa (area di swap).

Generalmente vengono trasferiti i processi in stato di wait.

Il sistema mette in stato di run solo i processi presenti in memoria.
Paginazione
La memoria centrale viene divisa in sezioni di dimensione fissa dette pagine logiche.
Questa tecnica ha i seguenti vantaggi:

alloca la memoria ad un processo utilizzando zone di memoria non contigue, per cui non è
più necessario trovare in memoria intere zone vuote contigue per accogliere i dati che si
stanno elaborando (potrebbero essere di difficile reperimento); tali dati saranno comunque
legati tra loro logicamente, anche se non fisicamente;

permette di estendere la memoria allocata ad ogni processo.
La segmentazione
Quando i programmi condividono elementi, come nel caso di processi che sono istanze dello stesso
programma, o di una stessa parte di programma, è vantaggioso non creare copie dello stesso codice.
Allora il programma viene diviso in segmenti:

codice: contiene solo le istruzioni;

dati: contiene la parte allocata sia staticamente che dinamicamente;
Se una porzione di programma deve essere ripetuta più volte, non sarà quindi più necessario
ricaricarla più volte in memoria, ma si troverà già lì, e cambieranno solo i valori dei dati che tale
parte di programma sta elaborando.
Memoria virtuale
Questa tecnica è implementata mediante la segmentazione e la paginazione (possono essere anche
abbinate).
In pratica vengono caricate in memoria principale solo delle porzioni limitate, ovvero il
segmento di programma che deve essere eseguito attualmente. Queste porzioni richiedono meno
spazio di quanto occorra ad un intero programma; in tal modo è possibile caricare nella stessa
quantità di memoria un maggior numero di programmi.
Quando viene indirizzata una pagina che non è in memoria (paging fault) il sistema operativo si
occupa di reperirla in memoria di massa, dove l’intero programma risiede, e renderla disponibile.
Con la memoria virtuale è necessario comunque risolvere alcuni problemi connessi con la scelta
delle pagine da scaricare (esistono appositi algoritmi che si occupano di queste scelte).
GESTIONE DELLA MEMORIA DI MASSA
Esistono tre metodi per allocare i file ne dispositivi di memoria di massa, o hard disk.
ALLOCAZIONE CONTIGUA
Ogni file occupa un insieme di indirizzi contigui definendo nel disco un ordine lineare.
VANTAGGI:

Riduzione del movimento delle testine quando si deve leggere un file;

L’indirizzamento è semplice, basta conoscere l’indirizzo del blocco di inizio e la lunghezza,
in blocchi, del file. Tali informazioni sono riportate in un’apposita tabella visibile alla
directory che contiene il file.
SVANTAGGI:

La lunghezza in blocchi del file deve essere conosciuta a priori;

E’ difficile reperire nel disco l’insieme di blocchi contigui liberi di dimensioni sufficienti ad
accogliere l’intero file. Per ovviare a tale problema è pertanto necessario effettuare
periodicamente un ricompattamento dei dati.
ALLOCAZIONE CONCATENATA
Ogni file occupa un insieme di indirizzi che possono essere non contigui, ma comunque
logicamente concatenati tramite dei puntatori: ogni blocco contiene, oltre al dato da memorizzare,
anche un puntatore all’indirizzo del blocco successivo in cui il seguito del file è memorizzato, per ui
all’utente il file appare logicamente consequenziale. Tali puntatori non sono visibili all’utente. In
questo tipo di allocazione è necessaria la presenza di una File Allocation Table (FAT), cioè una
mappa del disco, suddivisa in blocchi: ogni blocco contiene l’indirizzo del blocco successivo che
contiene la porzione di file successiva, oppure 0 se il blocco è vuoto (caso dei S.O. Microsoft).
VANTAGGI

Non è necessario reperire nel disco i blocchi contigui liberi necessari ad allocare l’intero
file.

Non è necessario conoscere a priori la lunghezza in blocchi del file.

Non è indispensabile la ricompattazione periodica del disco (anche se è sempre opportuna)

Il file può essere ampliato a piacimento fino a quando c’è nel disco qualche blocco libero.
SVANTAGGI

Nel disco và allocato spazio anche per i puntatori;

l’indirizzamento è semplice, in quanto basta conoscere l’indirizzo del primo blocco:
saranno i puntatori che condurranno sequenzialmente al resto del file. Per questo stesso
motivo, però, la sequenza degli indirizzi potrebbe risultare di difficile ricostruzione.
ALLOCAZIONE INDICIZZATA
E’ una variante dell’allocazione concatenata con la differenza che non esiste la FAT, ma ogni file
contiene, come informazione aggiuntiva, un indice di tutti i blocchi del disco in cui in file è
allocato. Le directory, per riferirsi ai file in esse contenuti, devono conoscere quindi soltanto un
puntatore al blocco indice di ciascuno di essi (è uno schema che ricorda la paginazione della
memoria).
Scarica