cerca
Sistemi Perativi: Appunti del 26 febbraio 2008
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Uni.Piuri26Febbraio2008 History

Hide minor edits - Show changes to output

Deleted lines 126-127:
----
[[!UniCrema]]
Changed lines 95-97 from:
'''Continua...'''
to:
!!!Minicomputer
È una versione per piccoli gruppi dei mainframe
. Non è ancora un sistema monoutente, perché non c'è ancora convenienza, ma siamo su quella strada. Da qui in poi si assume che tutti i sistemi siano chi più chi meno multiprogrammati, multiprocessing e time sharing.

!!!Workstation
Anni 80: soddisfa le esigenze avanzate di un singolo utente. Eg una workstation grafica dedicata al CAD, o alla grafica 3D.

!!!Personal Computer
Il terminale del mainframe acquisisce vita autonoma e capacità di calcolo in proprio. Non esagerate, ma abbastanza per i bisogni del singolo utente.

!!!Palmare
bla bla bla

!!!Sistemi di elaborazione in tempo reale
Apparecchi industriali, divisibili a loro volta in
'''hard real time''' e '''soft real time''', sul cui significato si indagherà più in là.

!!!Sistema dedicato
Fa 1 e 1 sola cosa. Eg il software di John Waine: o cammina o mastica la gomma.

!!!Sistemi multimediali
Hanno cose avanzate per il multimedia bla bla blabaorum.

!!!Sistemi multiprocessore
Invece di fare un processure suppauppa, ne prendo un po' e li faccio lavorare insieme. Il sistema è '''simmetrico''' se tutti i processori sono equivalenti a livello di capacità, ovvero possono fare tutti lo stesso tipo di lavoro (eg avere 2 o 4 processori pentium sulla scheda madre). Se invece ho processori dedicati ad uno scopo particolare, allora il sistema è asimmetrico (eg ho un processore generico e uno dedicato al download di porno da internet).

!!!Cluster
Un altra versione del sistema multiprocessore, in cui però non ho più processori sulla stessa scheda, ma più processori in macchine diverse, connesse tramite hardware performante.

!!!Sistema distribuito
Ulteriore generalizzazione del multiprocessore. Si tratta di un cluster in cui l'hardware di interconnessione è quello standard di rete. In questo modo, prendo letteralmente macchine normali e le faccio lavorare insieme quando serve.
Changed lines 35-36 from:
La protezione nelle memorie di massa è realizzata dal file system.
to:
La protezione nelle memorie di massa è realizzata dal file system. È il file system a decidere se qualcuno sta scrivendo su di un file dove non dovrebbe, o sta accedendo a zone del disco fisso che gli sono vietate.

%center%%sottotitolo%'''Lezione 4'''

%center%%sottotitolo%'''Connessione delle periferiche'''

Le periferiche non sono connesse direttamente alla CPU, ma tra questa e le periferiche ci sono degli opportuni gestori. Il vantaggio di avere i gestori è che posso modificare le periferiche, aggiornare gli standard per comunicarci etc. ma lasciare uguale l'interfaccia del gestore che la CPU vede.

L'interfaccia è composta da 2 parti:
# gestore che comunica direttamente con il processore. Riceve comandi ed invia dati
# parte elettronica che comunica con la periferica, generando segnali elettrici etc.

Anche presso la periferica ci sono 2 parti:
# parte che comunica con la periferica stessa, eg il chip che in un disco fisso alza e abbassa il braccio etc.
# parte che comunica con il gestore del sistema

Tra periferica e gestore di periferica ci può essere una connessione USB, seriale, parallela, PS2, PCI etc.

!!!Interfaccia nell'unità centrale
Tra CPU e interfaccia c'è un bus. L'interfaccia presenta tree registri: un '''registro di stato''', un '''registro comandi''' ed un '''registro dati'''.

Il registro di stato viene letto dalla CPU. In questo modo la CPU sa se la periferica è occupata, rotta, connessa e così via.
Il registro comandi viene scritto dalla CPU, e contiene i comandi che la CPU invia all'''interfaccia''.
Il registro dati viene scritto dalla CPU e contiene i comandi che la CPU invia alla ''periferica''.

Quindi, è l'interfaccia che pensa a inviare ciò che legge nel registro dati alla periferica, e a restituire ciò che la periferica risponde al registro di stato, così che la CPU possa leggerlo. NON succede che la CPU scrive i ''dati'' che vuole mandare alla periferica nel registro dati, generalmente, bensì colà vi scrive i comandi.

È la periferica poi ad eseguire i comandi e a rispondere all'interfaccia.

La CPU deve trovare il momento in cui la periferica sia disponibile. Può farlo in 2 modi:
# attesa passiva: la CPU si mette in attesa che lo stato della periferica sia disponibile
# interruzione: la CPU dà l'ordine, e quando la periferica esegue risponde con un'interruzione, così che la CPU possa rendersi conto di ciò che è successo.

Lo svantaggio dell'attesa passiva è che mentre la CPU attende, non può fare altro, e si perde tempo.

Il trasferimento dei dati tra CPU e periferica può ''anche'' avvenire con il registro dati, ma è limitato e poco efficiente. Per questo si è inventato il '''DMA''', ovvero '''Direct Memory Access''', cioè un affare che gestisce in modo autonomo il trasferimento di blocchi di dati dalla memoria centrale alla periferica, senza scomodare nessun altro.

Un altro modo per ottenere questa comunicazione è mappare la periferica in una zona dello spazio di indirizzamento. In pratica, organizzo il mio sistema in modo tale che alcuni indirizzi di memoria non portino alla memoria centrale, ma siano "deviati" verso una certa periferica. In questo modo alla CPU sembrerà di scrivere in memoria, ma in realtà sta scrivendo in periferica.

%center%%sottotitolo%'''Lezione 5'''

Va beh qui si parla di reti ma non si dice molto di interessante, quindi non scrivo niente.

%center%%sottotitolo%'''Lezione 6'''

%center%%sottotitolo%'''Classificazione dei sistemi di elaborazione'''

Questa lezione è una specie di excursus storico - funzionale sui tipi di sistema di elaborazione. Niente di fondamentale.

!!!Mainframe
Un computerone grande e grosso e costoso, tipico degli anni 60, che esegue un lavoro, detto '''job''', alla volta. Eseguire un job alla volta vuol dire lavorare a '''batch''', cioè a lotti: eseguo il mio lotto, poi faccio il successivo.
Si tratta quindi di un sistema monoprogrammato, in cui la macchina esegue un programma, e quando questo finisce se ne esegue un altro..

Siccome così si sprecavano tempo e risorse, si è inventata la '''multiprogrammazione''': la macchina tiene in memoria contemporaneamente più programmi, e quindi non c'è la perdita di tempo di mandare l'omino a caricarne uno nuovo ogni volta con le schede perforate che si usavano a Bedrock (''"Wilma, dammi la schedaaaaa!!!"'').

Nemmeno questa soluzione è sufficiente per ottimizzare le spese, quindi si passa alla '''condivisione CPU''', in cui la CPU esegue contemporaneamente più programmi. Un altro modo per chiamare ciò è '''multiprocessing'''. La cosa balorda del multiprocessing è che si passa da un processo all'altro quando il primo è in un tempo morto, eg aspettando dell'input da parte di Fred Flinstone. Se un processo fa qualcosa di oneroso, gli altri si attaccano ed aspettano.
Quando si sono inventati i sistemi multiutente, con i terminali in giro per l'edificio, capitava che il programma in esecuzione su di un terminale bloccasse gli altri, utilizzando questa tecnica di multitasking.

Ecco quindi che si passa al '''time sharing''', ovvero si stabilisce che un processo, qualsiasi cosa faccia, usi la CPU per un certo periodo di tempo e poi passi il testimone al processo dopo. Così, tutti gli utenti hanno l'impressione che la macchina sia dedicata a loro. Quando, come e perché cambiare processo attivo è una specie di magia nera, cmq, ma vedremo più in là.
Changed lines 31-32 from:
Se il mio calcolatore ha un solo programma in memoria, questo è padrone di tutte le risorse del computer. Ma se ne ho due, nessuno dei due è più il Signore dei Byte. Ogni programma deve girare nella sua brava porzione di memoria e non scomodare quelle altrui, se no immaginate quanti casini. Quindi, c'è un'unità chiamata '''MMU''', ovvero '''Mia Moglie Uccude''', oppure '''Memory Management Unit''', che contiene l'indirizzo iniziale e quello finale dell'area di memoria che un certo programma può usare o no. Se la CPU sconfina, ovvero chiede un'indirizzo di memoria fuori da quest'area, viene notificato un errore. È il sistema operativo che informa la MMU dei limiti della memoria, visto che il processore non sa niente di programmi ma si limita ad eseguire le sue fasi in sequenza.
to:
Se il mio calcolatore ha un solo programma in memoria, questo è padrone di tutte le risorse del computer. Ma se ne ho due, nessuno dei due è più il Signore dei Byte. Ogni programma deve girare nella sua brava porzione di memoria e non scomodare quelle altrui, se no immaginate quanti casini. Quindi, c'è un'unità chiamata '''MMU''', ovvero '''Mia Moglie Uccide''', oppure '''Memory Management Unit''', che contiene l'indirizzo iniziale e quello finale dell'area di memoria che un certo programma può usare o no. Se la CPU sconfina, ovvero chiede un'indirizzo di memoria fuori da quest'area, viene notificato un errore. È il sistema operativo che informa la MMU dei limiti della memoria, visto che il processore non sa niente di programmi ma si limita ad eseguire le sue fasi in sequenza.
Changed lines 10-38 from:
to:
La memoria la si può vedere organizzata gerarchicamente. Partiamo dall'alto e scendiamo verso il basso.

!!!Registri
Sono realizzati all'interno della CPU. Hanno dimensioni ridotte, in genere pari alla lunghezza della word del processore (eg, un processore a 32 bit ha tipicamente registri di 32 bit, uno a 16 bit ne avrà a 16 bit, la macchina MixAL ovviamente fa casino).

Non sono molti, da una manciata ad un max di un centinaio. Ma sono veramente veloci.

!!!Cache
La '''cache di primo livello''' è costruita all'interno del processore. Quella di '''secondo livello''' appena fuori. Sono più lente dei registri, ma anche più capienti.

Servono per copiarci la zona di memoria centrale su cui il processore sta lavorando attualmente. In questo modo può leggere e scrivere in modo molto veloce senza passare per i BUS etc. etc. Occorre stare attenti alla coerenza della memoria: se scrivo in cache e non nella porzione di memoria centrale corrispondente, allora quando svuoto la cache devo aggiornare anche la memoria centrale, se no si creano discrepanze e tutto va a ramengo. Tutto ciò viene fatto dall'hardware.

!!!Memoria centrale
Secondo Fonnoiman, vi metto dati e programmi. Più ampia, molto più ampia della cache, è anche più lenta di un ordine di grandezza.

Occorre precisare che il processore è in grado solo di leggere roba dalla memoria centrale. L'esistenza della cache è un trucco tecnologico, al processore sembrerà comunque di leggere dalla memoria centrale, non ha nozione dell'esistenza della cache. Semplicemente, se un certi chippettino si accorge che l'indirizzo di memoria voluto dal processore è in cache, evita di scomodare i bus e glielo fornisce seduta stante. Ma il processore di ciò non sa nulla.

!!!Memoria di massa
La memoria centrale è ampia ma mai abbastanza. Quindi ci sono diverse tipologie di memoria di massa che, pur essendo molto più lente, hanno molto spazio a basso costo. Dischi magnetici, ottici, nastri, memorie flash e così via sono tipi di memoria di massa.

!!!Protezione della memoria
Se il mio calcolatore ha un solo programma in memoria, questo è padrone di tutte le risorse del computer. Ma se ne ho due, nessuno dei due è più il Signore dei Byte. Ogni programma deve girare nella sua brava porzione di memoria e non scomodare quelle altrui, se no immaginate quanti casini. Quindi, c'è un'unità chiamata '''MMU''', ovvero '''Mia Moglie Uccude''', oppure '''Memory Management Unit''', che contiene l'indirizzo iniziale e quello finale dell'area di memoria che un certo programma può usare o no. Se la CPU sconfina, ovvero chiede un'indirizzo di memoria fuori da quest'area, viene notificato un errore. È il sistema operativo che informa la MMU dei limiti della memoria, visto che il processore non sa niente di programmi ma si limita ad eseguire le sue fasi in sequenza.

La protezione dei registri e della cache è implicita nel cambio di contesto: tutto viene salvato nello stack e lo si ripiglia dopo, e la cache si riempie a seconda di ciò che il processore vuole.

La protezione nelle memorie di massa è realizzata dal file system.

'''Continua...'''
Added lines 1-14:
(:title Sistemi Perativi: Appunti del 26 febbraio 2008:)
%titolo%''':: Sistemi Perativi: Appunti del 26 febbraio 2008 ::'''

[[Torna alla pagina di Sistemi Perativi -> SistemiOperativi]]

%center%%sottotitolo%'''Lezione 3'''

%center%%sottotitolo%'''La Memoria'''


[[Torna alla pagina di Sistemi Perativi -> SistemiOperativi]]

----
[[!UniCrema]]