Gerarchia nei sistemi informatici

Materie:Appunti
Categoria:Informatica

Voto:

2 (2)
Download:75
Data:23.02.2001
Numero di pagine:9
Formato di file:.txt (File di testo)
Download   Anteprima
gerarchia-sistemi-informatici_1.zip (Dimensione: 5.5 Kb)
trucheck.it_gerarchia-nei-sistemi-informatici.txt     13.84 Kb
readme.txt     59 Bytes


Testo

GERARCHIA NEI SISTEMI DI ELABORAZIONE
I sistemi di elaborazione sono molto complessi, poichй in essi interagiscono un gran numero di elementi e c'и per di piщ interazione fra parti fisiche (hardware) e parti concettuali (software).
L'hardware и costituito dalla CPU ( circuiti elettronici combinatori e sequenziali ), dalla Memoria
nei suoi vari livelli, da una grande varietа di Unitа di input /output e relative interfacce : in esso viene fisicamente eseguito il lavoro di elaborazione e per esso " il modo di ragionare" и quello dei vari circuiti componenti ( dati binari in forma elettrica o magnetica, segnali binari di abilitazione, tempi di risposta, temporizzazione discreta delle operazioni fornita dal' orologio di clock ecc.) .
Per parlare del software con correttezza и necessario premettere che gli attuali calcolatori fanno riferimento al modello di architettura di Von Neumann che non и l'unica possibile ma и cosм semplice e potente da mantenerla tuttora in uso , con miglioramenti e potenziamenti rispetto al progetto originario che и del 1946.
Il software, che ha il compito di rendere accessibile e utilizzabile l'hardware in forma "piщ umana",
и strutturato a livelli:
- il piщ vicino all'hardware costituisce per cosм dire l'architettura della macchina e la rappresenta
dal punto di vista software.
L'interfaccia dell'architettura con l'esterno и il linguaggio macchina, numerico binario, realizzato
in forma cablata (calcolatori RISC) o microprogrammata (firmware) all'interno della CPU
( calcolatori CISC).

LM и costituito da un set di istruzioni che permettono di impartire al calcolatore comandi
effettivamente eseguibili dall'hardware: un programma in LM и una lista di istruzioni che , se
corrette e messe correttamente in sequenza, consentono di risolvere un problema.

Durante l'esecuzione di un programma in LM ( detto eseguibile ) , dalla CU ( Control Unit) vengono
generati all'interno della CPU e verso l'esterno tutti i segnali che comandano e abilitano i vari
circuiti ( ALU, registri, memoria RAM ecc.) in modo che l'automa-calcolatore passando da uno stato all'altro ( quanto и contenuto nei registri di CPU e nell'area dati in memoria RAM ) risolva il
problema di cui il programma и la traccia di soluzione che gli и comprensibile.
- a un livello piщ alto si situano i linguaggi di traduzione ad alto livello che si rivolgono ai programmatori
- al di sopra i pacchetti applicativi specifici che sono realizzati per gli utenti comuni.
- per consentire un uso agevole del calcolatore a utenti generici, ad un livello intermedio и inserito il S.O. (Sistema Operativo).
Il S.O. и intermedio fra l'architettura e gli alti livelli menzionati e offre servizi essenziali
come l'interfacciamento con le periferiche esterne, la gestione della memoria secondaria ,
la gestione dei processi (che sono i programmi in esecuzione) , la gestione dei dati per la loro memorizzazione permanente in files ( file system ) e servizi accessori come interfacce grafiche , editor , programmi per collegamenti remoti ecc.
Gli utenti possono fare uso del S.O. a vari livelli secondo la loro competenza.
Il software di S.O. viene scritto in linguaggi di vario livello e se occorre riferirsi all'architettura
specifica si possono scrivere frammenti in assembler che vengono inclusi e tradotti
separatamente in LM.
ARCHITETTURA VON NEUMANN
Secondo questa architettura un calcolatore и costituito da una memoria ( a vari livelli di accessibilitа
e velocitа) e da un processore ( CPU ).
Nella memoria sono contenuti ( insieme ma ad indirizzi ovviamente separati) dati e programmi.
Il processore deve estrarre le istruzioni del programma dalla memoria, interpretarle ed eseguirle
una dopo l'altra sino alla soluzione del problema. ( in questo modo il programma " prende vita"
e diventa un processo di soluzione).
I dati vengono trasformati via via dallo stato iniziale allo stato finale che и rappresentato dai risultati. In memoria deve essere riservato spazio per i dati di ingresso e per quelli di uscita.
I dati in uscita possono eventualmente essere sovrascritti nel corso della loro generazione ai dati in ingresso ( cancellandoli) , sotto la personale responsabilitа di chi ha scritto il programma.
N.B. La lettura di un dato non lo cambia, mentre la scrittura и distruttiva.
Si presume che la memoria di programma sia utilizzata in sola lettura ( in linea di principio
puт anche non essere cosм ).
Le istruzioni fanno parte di un set che puт essere costituito da poche istruzioni ( qualche decina)
o tante istruzioni (piщ di 200) appartenenti ad alcune categorie fondamentali (per ognuna и definito il codice operativo e il formato):
- di trasferimento per lo spostamento di dati fra registri, fra registri e memoria ecc.
- aritmetico-logiche per effettuare operazioni aritmetiche e logiche, confrontare dati
verificare la veritа di enunciati
- salti per interrompere la sequenza delle operazioni ( scegliere fra due alternative, ripetere piщ
volte istruzioni nei cicli in base a condizioni definite)
- I/O e istruzioni di servizio
- eventualmente istruzioni per il trattamento di strutture dati complesse
Il meccanismo di funzionamento del processore per ogni istruzione, si articola nelle seguenti fasi
logiche:
- fetch : il processore estrae dalla memoria un'istruzione (quella il cui indirizzo и nel
contatore di programma ( PC program counter) e copia il codice operativo in un
registro interno, il registro istruzione ( IR instruction register)
- decode : individua il codice dell'istruzione
- execute :esegue l'istruzione ( cerca i dati su cui operare, esegue l'operazione, memorizza il
risultato )
- determina la prossima istruzione da eseguire .
Queste fasi sono fra loro sovrapponibili nel tempo per istruzioni successive se sono soddisfatte certe condizioni : concetto alla base delle architetture pipeline .
a) I metodi possibili per l'ultima operazione sono due: il PC viene incrementato in modo da raggiungere l'indirizzo dell'istruzione successiva per istruzioni in sequenza, (questo incremento viene anticipato sempre appena dopo il fetch)
b) il PC viene forzato ad un indirizzo contenuto all'interno dell'istruzione se si tratta di un salto
( la sequenza si interrompe e inizia a partire da quell'indirizzo) o di una chiamata di
procedura.
I salti, che possono essere non condizionati o condizionati, permettono di variare la rigida
sequenza di esecuzione in base a condizioni che si possono verificare in esecuzione ( risultato dell'ultima istruzione aritmetica o logica eseguita = 0, segno positivo o negativo di un risultato, overflow, paritа pari o dispari, carry ecc.) e si deducono da registri speciali a un bit della ALU detti flag .
Con i salti si realizzano le alternative e i cicli.
I dati su cui la CPU opera in lettura o scrittura (operandi) possono trovarsi:
- nei registri interni ( locazioni di memoria ad accesso molto.veloce)
- in memoria RAM ( lettura da memoria o scrittura in memoria)
I dati diretti in memoria o provenienti dalla memoria ( dati o istruzioni) transitano per un registro di interfaccia col BUS DATI detto Memory Data Register ( MDR )e l'indirizzo di memoria ( di dato o di programma ) che la CPU usa in un certo istante si trova in Memory Address Register (MAR) che si affaccia sul BUS ADDRESS ( bus degli indirizzi ) e lo alimenta elettricamente.
Il susseguirsi delle fasi suddette fino all'istruzione di fine-programma ( Halt ) determina l'esecuzione del programma.
Il lancio del programma и determinato dall'inserimento in PC del suo indirizzo di inizio e questa operazione viene demandata data la sus importanza al S.O.
Se in fase di lancio si sbagliasse indirizzo, il processore si sforzerebbe di interpretare come istruzioni le configurazioni di bit che trova e con probabilitа altissima si impianterebbe.
Il parallelismo del B.D. che и lo stesso dei registri di dato della CPU determina la quantitа di dati in bytes a cui il processore fa riferimento in un ciclo di memoria( durata uno o piщ cicli di clock ), il parallelismo del B.A. in bit determina il numero di indirizzi di memoria accessibili direttamente dalla CPU con istruzioni di LM ( sono 2n) ed и lo stesso dei registri indirizzo di CPU ( es. PC , MAR ).
I registri PC, IR, MDR,.MAR, non sono referenziabili dal programmatore ma sono manipolabili solo dall'architettura e si dicono " trasparenti" al programmatore , i flag sono referenziabili solo
indirettamente dal programmatore nelle istruzioni di salto condizionato .
GERARCHIA DI MEMORIA
Dati e programmi possono essere in grande quantitа . Nella loro gestione si deve tener conto di alcuni criteri generali:
- I dati di lunga durata sono al momento dell'accensione del calcolatore su disco o CD, compreso
il S.O e devono comunque essere letti . Il S.O. viene letto in RAM da un piccolo programma
cablato in una ROM ( read only memory) detto bootstrap ( и un driver di lettura da disco).
Viene letta solo la parte necessaria il resto viene letto quando se ne presenta la necessitа..
- i dati su cui si opera direttamente con l'ALU devono essere nei registri interni di CPU.
( tempo di accesso praticamente nullo). Se un dato viene utilizzato piщ volte conviene stia in un
registro interno per evitare continui accessi alla RAM ( tempi dell'ordine dei nanosecondi)
- quando un programma и in esecuzione il segmento di codice che contiene le istruzioni deve
trovarsi in RAM.
- и consigliabile che un programma si trovi se possibile in RAM perchй la gestione della memoria secondaria che и delegata al S.O. richiede tempi lunghi in confronto ai tempi di CPU
( ordine dei millisecondi)
- per incrementare le prestazioni della CPU e ridurre le attese riguardanti il tempo di accesso alla
memoria и opportuno inserire fra CPU e memoria centrale una memoria accessibile piщ velocemente
( SRAM , RAM statica ad alte prestazioni) detta cache dove vengono tenuti dati e programmi utilizzati frequentemente con il criterio della vicinanza nel tempo e nello spazio.
Si presume infatti che i dati vicini nello spazio ( istruzioni contigue e dati vicini perchй inseriti in strutture vicine) e recentemente utilizzati cioи vicini nel tempo, abbiano piщ probabilitа di altri di essere utilizzati in futuro.
- La memoria centrale puт essere realizzata in DRAM ( dinamica) o anche SRAM con
prestazioni in velocitа di accesso inferiori alla cache (e minor costo).
La DRAM deve perт essere periodicamente rinfrescata ( con letture) perchй i dati tendono a decadere essendo memorizzati in condensatori che con il tempo si scaricano.
- Lo scambio di dati fra CPU, cache e RAM и gestito dall'architettura, mentre lo scambio fra
RAM e memoria secondaria и gestito dal S.O.
LINGUAGGIO SPECIFICO:
CPU ( Central Processing Unit ) Unitа Centrale del processore
ALU (Arithmetic Logic Unit) Circuito combinatorio complesso programmabile che esegue
operazioni aritmetiche e logiche a scelta и all'interno della
CLOCK onda quadra che temporizza il lavoro del processore CPU
REGISTRO и una struttura che conserva indefinitamente dei bit ( il cui numero ne definisce il parallelismo), finchи non ci si scrive sopra.
Se и valido un segnale di abilitazione che tutti i bit ricevono ( CK ) si puт scrivere nel registro , se и valido un segnale di lettura ( OE) si puт leggere dal registro.
RISC ( Reduced Instruction Computer)
CISC ( Complex Instruction Set Computer)
LM linguaggio macchina
RAM random access memory memoria centrale, accessibile per indirizzo, con tempo di accesso
uguale per qualsiasi indirizzo .
Istruzione: comando per il calcolatore costituito da un codice operativo ( esprime cosa il
calcolatore deve fare ) ed eventualmente da operandi ( dati su cui deve operare,
referenziati solitamente attraverso l' indirizzo del "contenitore" in cui si
trovano, registro o locazione di memoria RAM )
Interpretazione : metodo di traduzione con cui un'istruzione viene letta , decodificata
( si interpreta il codice operativo) e immediatamente eseguita.. Le operazioni
dette vengono ripetute ogni volta che una specifica istruzione viene incontrata nel
programma ( piщ volte nei cicli).
Compilazione: con questo metodo di traduzione un programma scritto in un certo linguaggio
viene tradotto per intero in LM o in un altro linguaggio. Per ogni linguaggio di alto
livello sarebbe possibile la traduzione per interpretazione o per compilazione
( anche se quest'ultima и piщ usata), mentre per LM и possibile solo
l'interpretazione e l'interprete и l'hardware.
Un programma ,scritto in un qualsiasi linguaggio, deve essere tradotto per forza in Lm con il metodo della compilazione o della interpretazione ; la traduzione si esegue con un programma traduttore
( per cui i dati in ingresso sono le sequenze di caratteri che formano le istruzioni del linguaggio di partenza e i dati in uscita sono le istruzioni del linguaggio di arrivo).
Con un traduttore di tipo compilatore una istruzione del linguaggio corrisponde a piщ istruzioni macchina e il criterio di traduzione dipende del compilatore.
Il programma и piщ facile da scrivere, ma l'esecuzione puт essere piщ o meno efficiente.
Per chi vuole scrivere programmi che siano traducibili in LM uno-uno ci sono i linguaggi Assembler (specifici per ogni macchina) , di tipo compilatore ,che consentono di trascrivere in simbolico il linguaggio numerico e forniscono servizi di dichiarazione delle variabili e di specifiche per la traduzione ( pseudo-istruzioni ) .

Esempio