Richiami all`architettura hardware di un sistema di elaborazione

Organizzazione di un semplice calcolatore
con architettura convenzionale
Processore
Parte Controllo
Periferiche
Parte Operativa
Disco
Tastiera
Video
Interfaccia
Interfaccia
Interfaccia
Disco
Tastiera
Video
Memoria
ALU
Principale
Registri
Bus
Software di base
Software di sistema:
 sistema operativo
 compilatori, interpreti
 programmi di utilità
Il sistema operativo:
 insieme di programmi interagenti che operano
sull’hardware per fornire agli utenti ed ai
programmi applicativi un insieme di funzionalità
ad un livello di astrazione elevato che faciliti
l’uso e la gestione delle risorse e ne regolamenti
l’impiego prevenendo i conflitti.
Compito del sistema operativo:
 presentare all’utente un sistema esteso più
semplice da usare e programmare
Evoluzione dei sistemi operativi tradizionali (
sistemi a singolo processore) e processo di
adattamento
 alle caratteristiche dell'hardware
 alle tipologie di utenza
 alle
applicazioni
richieste
ed
utilizzate
dall'utenza
Primo tentativo di relizzare un calcolatore digitale
Charles Babbage matematico inglese (1792-1871) si
cimenta nella prima vera impresa di realizzare un
autentico calcolatore digitale. Nonostante le risorse
fisiche ed economiche investite nella impresa il
tentativo abortisce in quanto la tecnologia del tempo
non è adeguata a supportare la realizzazione delle parti
meccaniche necessarie con la precisione richiesta
La prima generazione (1945-1955): valvole e
schede a spinotti
Howard Aiken e John von Neumann (Advanced Study di
Princeton) Eckert e Mauchley (Università della
Pennsylvania) ed altri negli anni 40 realizzano le prime
macchine di calcolo basate su valvole elettroniche
 Le dimensioni sono enormi e la capacità di calcolo
irrisoria
 La programmazione è realizzata in linguaggio
macchina assoluto
 Sono sconosciuti i linguaggi di programmazione ed i
sistemi operativi
 Un primo miglioramento è rappresentato dall'avvento
delle schede perforate su cui sono scritti i programmi
che passano a sostituire le schede di spinotti
La seconda generazione (1955-1965): transistor e
sistemi batch
L'introduzione dei transistor cambia negli anni 50 in
modo radicale la situazione rendendo possibile la
realizzazione dei primi calcolatori affidabili e pertanto
commercializzabili (ma a costi elevatissimi) che offrono
la ragionevole certezza all'acquirente che avrebbero
funzionato abbastanza a lungo
 Si differenziano le funzioni degli operatori del settore:
progettisti, costruttori, operatori programmatori e
personale della manutenzione
 I comandi del sistema operativo i programmi i dati di
ingresso che caratterizzano un singolo lavoro (job)
vengono raggruppati in lotti (memorizzati prima su
schede perforate, poi su nastri e successivamente su
disco) e accodati in attesa di essere eseguiti.
 Un programma di supervisione gestisce il
caricamento e l'attivazione dei programmi da eseguire
per completare il lotto, riducendo così le interazioni
con l'utente
 I linguaggi utilizzati sono principalmente il FORTRAN
e l'assembler, mentre i sistemi operativi tipici sono
FMS (fortran Monitor System) e IBSYS il sistema
operativo dell'IBM per il 7094
 Fondamentalmente in questo periodo ciascuna casa
produttrice ha due linee distinte di prodotti
incompatibili tra loro: grossi calcolatori per calcoli
numerici scientifici ed ingegneristici e calcolatori per
uso commerciale utilizzati principalmente da banche
assicurazione etc.
La terza generazione (1965-1980): circuiti integrati
e multiprogrammazione
La tecnologia dei circuiti integrati anche se a bassa
scala di integrazione porta a produrre sistemi con costi
notevolmente ridotti, prestazioni decisamente superiori,
adatti sia alle grandi elaborazioni scientifiche che a
quelle di carattere commerciale
 Sono gli anni dei sistemi IBM della famiglia 360
macchine diverse quanto a prezzo e prestazioni, ma
compatibili a livello software; pertanto, almeno nelle
intenzioni dei progettisti, i sistemi operativi (OS/360 e
successivi) ed il software in generale dovrebbe
essere utilizzabile sia sui piccoli sistemi che sulle
grosse macchine della stessa famiglia.
 Con risorse hardware più potenti si pone il problema
di ottimizzarne l'utilizzo: vengono introdotti ed
utilizzati sistemi operativi multiprogrammati: più
programmi contemporaneamente in memoria e la
risorsa CPU, mentre un job completia operazioni di
ingresso/uscita, attribuita ad un job diverso
 La richiesta della utenza di tempi di risposta più
veloci rispetto a quelli ottenibili con la gestione a lotti
porta alla tecnica del timeharing (condivisione di
tempo), variante della multiprogrammazione: ogni
utente ha a disposizione un terminale in linea
attraverso il quale usufruisce di un servizio interattivo
veloce (sistemi timesharing CTSS sviluppati da MIT e
sistema MULTICS di MIT Bell e General Electric)
 L'avvento dei minicalcolatori (dal PDP-1 fino al PDP11) e la presenza di tali macchine in ambienti
scientifici, dato il costo contenuto, porta a tentativi di
scrivere versioni ridotte del sistema operativo
MULTICS che culmineranno nel sistema operativo
Unix (marchio registrato della AT&T)
La quarta generazione (1980-1990): i personal
computer
Con lo sviluppo dei circuiti LSI (Large Scale
Integration), chip contenenti migliaia di transistor su un
centimetro quadrato di silicio, sorge l'era del
calcolatore personale. Il microprocessore rende
possibile al singolo individuo di avere il suo calcolatore
personale. Personal computer più potenti prendono il
nome di workstation
 Un PC non è molto diverso dal punto di vista
dell'architettura da un minicalcolatore della classe del
PDP-11, ma certamente vi è molta differenza dal
punto di vista dei costi.
 La presenza di strumenti di calcolo in ambienti di non
addetti ai lavori stimola l'introduzione di software
user friendly cioè rivolto ad utenti che né conoscono
nè sono motivati ad imparare alcunché di calcolatori.
 I due sistemi operativi che dominano la scena dei
calcolatori personali in questi anni sono MS-DOS
della Microsoft (per PC-IBM e su macchine che
utilizzano come processore l' Intel 8088 e successori)
e Unix (dominante su macchine non Intel e su
workstation specie quelle equipaggiate da chip RISC
ad alte prestazioni)
Requisiti di un sistema operativo:
 efficienza: utilizzo ottimale delle risorse del
sistema quali cpu
 interattività: interazione diretta con l’utente con
tempi di risposta accettabili
 sincronizzazione/cooperazione:
L'utilizzo
efficiente della risorsa CPU induce alla
decomposizione di alcuni problemi in un
insieme di attività interagenti che vanno
sincronizzate, sia nel caso di interazione
implicata da motivi di cooperazione, sia nel caso
di interazione dovuta a competizione nell'uso
risorse condivise
Architettura tradizionale di un sistema operativo
Nucleo
Gestore Memoria
Gestore periferiche
File System
Shell
Programmi di utilità
Organizzazione a strati, o a buccia di cipolla.
 Ogni strato definisce una macchina virtuale che
realizza funzionalità sempre più potenti e mette
a disposizione degli strati superiori (più esterni)
una macchina un poco più astratta e semplice
da usare
 Ogni macchina virtuale ha il compito di gestire
risorse specifiche fornendo meccanismi logici di
accesso che ne regolamentino l'uso e ne
mascherino i limiti.
 Le politiche di gestione delle risorse sono
separate dai meccanismi che garantiscono la
correttezza logica delle operazioni garantendo
così una maggiore flessibilità al processo di
ottimizzazione delle prestazioni del sistema.
Strati dai livelli più bassi ai livelli più alti della
gerarchia di livelli:
Il nucleo:
 Implementa il processo (programma in esecuzione
e dati ad esso associati) e fornisce agli strati
superiori la visione di più unità di elaborazione
virtuali legate ciascuna di esse ad un processo
attivo.
Il gestore della memoria:
 Introduce per ogni programma uno spazio virtuale
di indirizzamento prescindendo dalla effettiva zona
di memoria fisica corrispondente: protegge i dati e
le istruzioni dei programmi, maschera la
collocazione fisica dei dati, permette la parziale
sovrapposizione degli spazi di memoria associati
ai vari programmi riducendo la ridondanza delle
informazioni
Il gestore delle periferiche:
 Astrae le periferiche mascherando all’utente le
caratteristiche fisiche dei dispositivi utilizzati per
I/O consentendo quindi di ignorare sia i problemi
di indirizzamento che di sincronizzazione.
Il gestore dei file o file system:
 Organizza una particolare periferica, la memoria di
massa, in file identificati da un nome e accessibili
da comandi di alto livello rendendo trasparente sia
l’allocazione che l’accesso alla memoria stessa.
L’interprete dei comandi ed i programmi di utilità:
 Sono visibili direttamente all’utente.
 L’interprete dei comadi interpreta ed esegue i
comandi provenienti da tastiera: lettura del
programma da eseguire, allocazione della memoria
per la sua esecuzione, caricamento del programma
e dei dati, creazione ed attivazione del processo
corrispondente.
 I programmi di utilità consentono di ottimizzare e
facilitare l’uso da parte degli utenti e del gestore
del sistema.: compilatori, debugger, backup,
ottimizzatori dello spazio su disco, editor etc.
 L’avvento di dispositivi di puntamento ed
interfacce grafiche ha sostituito una sequenza di
comandi immessi da tastiera tramite un immagine:
icona, selezione esecuzione
Il supporto di rete:
 un sistema operativo in grado di supportare il
collegamento in rete di più calcolatori fornisce un
ambiente operativo in cui viene perso il concetto di
localizzazione delle risorse a vantaggio della
possibilità di condividere dati, periferiche ed unità
di calcolo
Il nucleo
Il nucleo interagisce direttamente con l'hardware
ed è responsabile
 dell'esecuzione dei programmi
 della risposta ad eventi esterni generati dai
diversi dispositivi periferici
La principale astrazione realizzata dal nucleo:
il processo
Processo: un programma in esecuzione insieme ai
propri dati ed a tutte le informazioni necessarie
per la sua esecuzione (contenuti dei registri, file
aperti etc).
Il processo è una entità dinamica
 Nel caso di una sola cpu di momento in
momento un solo processo è in esecuzione ed il
nucleo simula il parallelismo tra i processi.
 Ogni volta che un processo non è in grado di
evolvere (per esempio è in attesa che si
completi una operazione di I/O ) si sospende in
attesa di un evento e ridiventa pronto quando si
verifica l’evento atteso.
 Dalla creazione alla sua terminazione il
processo transita attraverso un insieme di stati
descritti dal grafo delle transizioni di stato
L'entità processo è fondamentale
 nei sistemi operativi multiprogrammati: più
programmi di utente risiedono in memoria in
aggiunta al sistema operativo ( a differenza dei
sistemi
uniprogrammati).
L'obiettivo
ottimizzazione
dell'utilizzo
della
cpu
è
conseguito con la sospensione del processo in
esecuzione quando non è in grado si evolvere
(ad es. perché in attesa del completamento di
una operazione di I/O) e con la schedulazione
per l'esecuzione di un altro processo pronto.
 nei sistemi a partizione di tempo (unix, windows
95 98 Nt), affermatisi con l'avvento di sistemi di
elaborazioni in cui l'interazione con l'utente è
realizzata tramite terminale. L' obiettivo di
garantire a ciascun utente connesso tramite
terminale tempi di risposta ragionevoli (sistemi
operativi multiutente) è conseguito impedendo
che la cpu sia monopolizzata dall'esecuzione di
solo programma. Il tempo viene, pertanto,
suddiviso in unità di tempo elementare (quanti),
ed a ciascun processo è consentito utilizzare la
cpu al più per un quanto di tempo, allo scadere
del quale la risorsa gli viene sottratta per essere
attribuita ad un altro processo pronto. Una
politica in genere di tipo round robin consentirà
di riprendere l'esecuzione del processo solo
dopo che tutti i processi pronti abbiano avuto a
loro volta l'attribuzione della risorsa cpu
Diagramma delle transizioni di stato di un
processo (un sottoinsieme):
Selez.proc.pronto
Pronto
in esecuzione
Termine quanto
Complet. I/O
Richiesta I/O
attesa
Di momento in momento un solo processo è in
esecuzione ed il resto dei processi non terminati
appartiene ad uno dei tre insiemi:
 insieme dei processi pronti costituito da tutti i
processi che sono in condizione di continuare
l'esecuzione ma aspettano per l'attribuzione
della CPU
 insieme dei processi in attesa di un evento
esterno costituito da tutti i processi che non
sono in condizione di proseguire l'esecuzione in
quanto in attesa che venga completata una
operazione di I/O
La gestione della memoria centrale
 Con l'aumentare della sofisticazione del sistema
operativo (multiprogrammazione o multiutenza)
cresce il numero di processi che dovrebbero
contemporaneamente risiedere in memoria
principale e di conseguenza cresce la memoria
richiesta.
 Per motivi di costo la memoria di cui si può
disporre è comunque limitata e va amministrata
tra quella occupata dal sistema operativo e
quella residua da destinare alla esecuzione dei
programmi.
Il gestore della memoria implementa uno spazio di
indirizzamento virtuale di dimensioni maggiori
della memoria fisica e realizza una serie di
meccanismi di protezione che tutelano lo spazio
di lavoro attribuito per l'esecuzione di ciascun
programma ossia la memoria attribuita a ciascun
processo.
L'incompatibilità tra dimensione fisica della
memoria e spazio complessivo richiesto dai
programmi da eseguire e dai loro dati è risolta dal
gestore della memoria tramite un insieme di
tecniche tra cui
1. La rilocazione: diventa possibile il caricamento
di un programma a partire da un indirizzo
qualunque della memoria ed anche modificare la
memoria attribuita ad un programma durante
l'esecuzione del programma stesso in modo
completamente trasparente
2. swapping, paginazione e memoria virtuale:
consentono di ridurre le richieste di spazio
tenendo in memoria soltanto una porzione dei
programmi e dei dati
3. segmentazione: consente la condivisione da
parte di alcuni processi dell'area di memoria
utilizzata per codice
Rilocazione del codice
 Rilocazione statica: all'atto del caricamento in
memoria tutti i riferimenti ad indirizzi di memoria
generati in fase di traduzione del programma nel
linguaggio
macchina
nell'ipotesi
che
il
programma sia caricato in memoria a partire
all'indirizzo zero vengono aggiustati sulla base
dell'indirizzo di impianto del programma
(indirizzo di memoria a partire dal quale il
programma sarà effettivamente caricato in
memoria)
 Rilocazione dinamica: introduzione di un
ulteriore registro (registro base) che contiene di
momento in momento l'indirizzo di impianto del
programma in esecuzione. Prima di realizzare un
qualunque accesso alla memoria occorre
valutare l'indirizzo fisico corrispondente che si
ottiene sommando il contenuto del registro base
all'indirizzo logico (quello specificato dal
programma nelle ipotesi di indirizzo di impianto
zero)
Swapping, paginazione e memoria virtuale.
 Swapping: consente di soddisfare richieste di
memoria che complessivamente eccedono la
memoria fisica disponibile. Consiste nel
trasferire il contenuto di una area di memoria
necessaria per l'esecuzione di un programma su
memoria di massa liberando così la memoria
attribuita al processo (il processo è scaricato su
memoria di massa). La scelta di quale processo
scaricare dipende da politiche che non sono
parte integrante del gestore della memoria, ma
che in genere concentrano prioritariamente la
scelta tra i processi in attesa. Il diagramma di
transizione degli stati conseguentemente viene
modificato in quanto esso prevede gli ulteriori
stati attesa su disco e pronto su disco e le
relative transizioni
 Paginazione:
consiste
nel
dividere
un
programma in sezioni di dimensione fissa ed
uguali tra loro (pagine logiche) ed organizzando
di conseguenza anche la memoria in pagine
della stessa dimensione delle pagine logiche
(pagine fisiche). Si possono così eseguire
programmi di dimensioni maggiori, si ottimizza
ulteriormente l'uso della memoria e si possono
eseguire programmi con richieste di memoria
eccedenti la memoria fisica disponibile
(memoria virtuale).
Segmentazione
La struttura di un programma non è più
monolitica, bensì si individuano tre segmenti: dati,
codice e pila
Diventa possibile consentire a più processi di
condividere la stessa area codice (essa è
immutabile) e pertanto più esecuzioni dello stesso
programma in contemporanea non richiedono
duplicazione di codice (programmi rientranti)
Principali sistemi operativi per personal computer
Microsoft MS-DOS: il sistema operativo per PC
IBM e compatibili più usato finchè non è stato
quasi totalmente rimpiazzato dalle varie versioni
di Windows
 Interfaccia sintetica: schermo nero, il prompt in
un angolo (C:\>indica attesa di comandi)
 L’interazione è tramite digitazione da tastiera del
comando, rispettando una sintassi precisa e
richiedendo l’esecuzione del comando tramite il
tasto invio
 Limiti del Dos
 Richiede una conoscenza dei comandi
disponibili e della sintassi
 È un sistema operativo a 16 bit (usa 16 bit
per la rappresentazione dei dati) pertanto ha
prestazioni limitate
 È nato come sistema monoutente in grado di
eseguire una sola applicazione alla volta
MS-Windows: è una interfaccia grafica utente
(GUI) che offre un involucro grafico al Dos
 I comandi vengono sostituiti da icone (immagini
che simboleggiano la funzione) e possono
essere mandati in esecuzione tramite mouse o
da tastiera
 Amplia le funzioni del Dos tramite una serie di
programmi applicativi
Win 95 , 98 2000: è un sistema operativo a 32 bit
(quando esegue applicazioni di MS-DOS lavora a
16 bit)
 L’interfaccia grafica si richiama a quella di
Windows e ne introduce alcune migliorie
 E’ un sistema multitasking (più programmi in
esecuzione contemporaneamente)
 Sono presenti alcune caratteristiche tipiche
degli ambienti Unix
 Possibile eseguire programmi in background
 Consente il collegamento a macchine connesse
in rete con la nostra.
Windows NT: Sistema operativo per workstation
(stazioni di lavoro con elevate capacità grafiche
ed elevata potenza)
 Incorpora tutte le funzioni di Win95 ed aggiunge
la possibilità della multiutenza
 Usato prevalentemente per computer che
operano come server rendendo disponibili file,
stampanti, altri dispositivi ad utenti di una rete
di computer.
Macintosh (ad es. System 8): per macchine Apple
Macintosh e PowerPC (contrapposte ai PC IBM e
compatibili) che utilizzano processori con
caratteristiche diverse dagli Intel (Motorola)
 Sistema operativo in concorrenza con il Dos con
interfaccia grafica che ha anticipato di una
decina di anni quella di Win95
 Per primo introduce l’uso del mouse
 Facile da usare
 L’ incompatibilità con il Dos ne ha impedito una
più ampia diffusione
UNIX: nasce dalle esigenze di governare grandi
elaboratori
in
multiutenza
multitasking
e
connessione remota. Sviluppato dai laboratori
Bell dell AT&T e dalla Berkeley University (inizio
anni 70) è stato modificato dai costruttori di
computer che hanno dato origine a varie versioni
di Unix
LINUX (Unix per PC): sistema operativo completo
gratuito gestisce:
 multiutenza
 esecuzione in background
 accesso a computer remoti
 sistema di interfaccia a finestre
 etc.