Che materia stai cercando?

Anteprima

ESTRATTO DOCUMENTO

Autori: Messina Francesco, Lento Maria Rita.

Dunque D (rappresenta la dimensione della memoria) = 65536 locazioni indirizzabili di-

rettamente. Indirizzi (0,65535).

ALCUNE DEFINIZIONI:

PERIFERICHE: dispositivi che servono per l'entrata o l'uscita dei dati. Scambiano dei se-

gnali con l'unita' di controllo.

INTERRUPT: segnale che un dispositivo di I/O invia alla CPU per indicarle che deve

compiere una data azione.

AZIONE: esecuzione di una serie di istruzioni che costituiscono la routine di servizio

dell’interrupt. La periferica invia l'interrupt che è ricevuto dalla CPU, la quale, una volta fi-

nita l'esecuzione dell'operazione in corso esegue l'interrupt richiesto dalla periferica, che

rappresenta un sottoprogramma.

PROBLEMA: come fa la CPU a riprendere l'esecuzione del programma nel punto in cui si

era interrotta? L'indirizzo di ritorno del programma è conservato in una particolare loca-

zione di memoria, detta STACK.

STACK: locazione di memoria facente parte di un gruppo di celle gestite a PILA (accesso

sequenziale, tecnica LIFO, last in first out).

STACK POINTER: registro della CPU che contiene l'indirizzo dello STACK;

- gestire una struttura LIFO indica che Il primo elemento di cui si puo' usufruire e' quello

inserito per ultimo.

3.3 TEMPI DELLA CPU

La CPU deve:

generare i segnali di controllo nei tempi appropriati. A tal fine dispone di un segnale, il

CLOCK, che scandisce il susseguirsi delle varie attivita' all'interno della CPU.

Il segnale di CLOCK puo' essere compiuto da un generatore esterno o da uno interno al

microprocessore.

Ciascuna delle operazioni di prelievo dalla memoria, decodifica ed istruzione richiede un

ciclo-macchina (alcuni periodi del segnale di CLOCK).

L'esecuzione completa di un'istruzione richiede un ciclo di istruzione. Un ciclo di istruzio-

ne e' uguale a piu' cicli-macchina.

Un clock piu' veloce permette di eseguire le istruzioni in minor tempo, la velocita' del

clock si esprime in MHz ed e' limitata superiormente dalle caratteristiche della CU e delle

altre unita' del calcolatore. 13

Appunti di conoscenze informatiche di base.

3.4 IL MICROPROCESSORE

Grado di parallelismo di un microprocessore: numero di bit elaborati contemporaneamen-

te in un’operazione elementare. Corrisponde alla dimensione in bit delle celle di memo-

ria.

Viene definita parola il contenuto di una cella.

Capitolo 7: CLASSIFICAZIONE DEGLI ELABORATORI ELETTRONICI

Parametri di classificazione:

? Velocita' di processamento;

? Velocita' delle operazioni I/O;

? Dimensioni della memoria;

? Dimensioni fisiche? (non sono piu' un parametro valido);

? Costo.

In passato:

? Mainframe: elevata potenza di calcolo

? Minicomputer e microcomputer.

Attualmente ha senso distinguere tra:

? SERVER;

? WORKSTATION;

? PC.

6.1 Il server ha una gran quantità di memoria ed elevatissima ve locita' di calcolo. E' de-

dicato a gestire ed ad immagazzinare grandi quantita' di dati.

Bassa interazione con l'utente (interattivita').

Costi elevati (40-50 milioni).

6.2 la workstation ha un'elevata velocita' di calcolo. Utilizzato in particolare per eseguire

programmi che richiedono una gestione efficiente della grafica.

Costi medio-alti (20-30 milioni).

Elevata interattivita'.

Inoltre e' dotata di una RAM simile a quella dei server con una memoria di massa pero'

ridotta di 1/10.

14

Autori: Messina Francesco, Lento Maria Rita.

6.3 Il personal computer ha una velocita' di calcolo ed una capacita' di memoria inferio-

ri.

Elevata interattivita'.

Costi bassi (2-3 milioni).

Capitolo 8: LA MEMORIA DI MASSA

In base alla modalita' d’accesso ai dati le memorie di massa si distinguono in:

? Memoria ad accesso diretto;

? Memoria ad accesso sequenziale.

DISCHI MAGNETICI

Caratteristiche:

? Accesso diretto;

? Grande capacita' di memorizzazione;

? Memorizzazione stabile.

Rispetto alla RAM:

? Tempi d’accesso elevati;

? Costi inferiori.

Sono tecnologicamente costituiti da un supporto rivestito da materiale magnetico.

Floppy disk, supporto flessibile;

Hard disk, supporto rigido.

Elementi di un disco magnetico:

? Uno o piu' dischi coassiali rivestiti di materiale magnetizzabile, che ruotano ad alta ve-

locita' intorno all'asse centrale;

? Una serie di testine di lettura-scrittura.

7.2 DISCHI MAGNETICI

7.2.1 Disco fisso

Nel blocco testina una variazione di corrente viene trasformata in una variazione del

campo magnetico. 15

Appunti di conoscenze informatiche di base.

Non deve esserci alcun contatto tra il blocco testina e il disco magnetico altrimenti que-

st'ultimo verrebbe danneggiato. Sulla superficie del disco vengono impresse delle tracce

concentriche di registrazione. Ogni traccia viene suddivisa in settori di modo che si puo'

accedere piu' velocemente alle informazioni registrate. L'operazione di divisione delle

tracce in settori viene detta "formattazione", eseguita solo in fase d’inizializzazione. I set-

tori contengono blocchi di dati. Un blocco di dati puo' anche occupare piu' settori. Ogni

settore e' direttamente indirizzabile.

La capacita' di registrazione dipende da:

1) densita' di registrazione:

-densita' radiale: tracce/pollice;

- densita' lineare: bit/pollice per ogni traccia;

2) dimensioni del supporto.

Il tempo d’accesso dipende da:

- tempo seek: tempo necessario per realizzare il movimento radiale delle testine per po-

sizionarsi sulla traccia voluta. (30-100 millesimi di secondo);

- tempo di latenza: tempo necessario alla testina per il posizionamento sul settore, legato

alla velocita' di rotazione del disco. (25-200 m/s);

- velocita' di trasferimento (transfer rate): dalle centinaia di kb/secondo, fino ad alcuni

Mb/s.

7.3 DISCHI OTTICI

Disco di metallo ricoperto di materiale sensibile al raggio laser. l'informazione binaria vie-

ne codificata e trasferita sul supporto come una sequenza di punti che possono o non

possono riflettere la luce. La registrazione avviene su una traccia continua che si svilup-

pa a spirale. Le caratteristiche salienti sono:

- grande capacita' di memorizzazione;

- Tempi d’accesso elevati.

Si distinguono fra i dischi ottici:

7.3.2 CD-ROM (compact disk - read only memory) sola lettura.

7.3.3 WORM (write once read many) si puo' registrare, ma una sola volta.

7.3.4 ERASABLE puo' essere registrato piu' volte cancellando pero' il contenuto prece-

dente in maniera integrale.

16

Autori: Messina Francesco, Lento Maria Rita.

Capitolo 8: unità i/o

8.1 UNITA' D’INGRESSO

Costituiscono l'unita' d'ingresso tutti i dispositivi che:

- consentono l'immissione di dati e programmi all'interno del calcolatore;

- consentono la comunicazione con dispositivi esterni normalmente non compatibili col

calcolatore (funzione d’interfaccia).

L'unita' d'ingresso si compone di due parti:

- elementi meccanici o elettromeccanici trasduttori che convertono una condizione ester-

na o un movimento in un segnale elettrico digitale;

- circuiti elettronici che memorizzano temporaneamente i dati in arrivo o lo stato del di-

spositivo esterno e pilotano il dispositivo stesso.

8.2 UNITA' D’USCITA

Costituiscono l'unita' d’uscita tutti i dispositivi che:

- rendono disponibile all'esterno del calcolatore i dati elaborati;

- fanno da interfaccia tra il calcolatore ed i dispositivi esterni normalmente non compatibili

con esso.

L'unita d’uscita si compone di due parti, vi sono circuiti elettronici che memorizzano tem-

poraneamente i dati in uscita o lo stato del dispositivo esterno e pilotano il dispositivo

stesso, ed elementi meccanici o elettromeccanici attuatori, che trasformano un segnale

elettrico digitale in una condizione esterna o un movimento.

INTERFACCIA è un circuito che permette di collegare le periferiche al calcolatore. Il col-

legamento avviene tramite un registro d’interfaccia, un circuito d’interfaccia, un'unita' di

controllo locale.

L’ UNITA' DI CONTROLLO LOCALE governa il collegamento.

I circuiti d'interfaccia possono essere seriali o paralleli.

Interfaccia seriale: su un'unica linea (filo) viaggia un BIT alla volta. (usata per collegare

MOUSE E MODEM).

Interfaccia parallela: su piu' linee parallele sono trasmessi tutti i BIT dei dati. Piu' veloce.

(es. stampante) 17

Appunti di conoscenze informatiche di base.

8.3 INTERFACCIAMENTO DI PERIFERICHE

Parametro caratteristico:

velocita' di trasmissione (BIT RATE): numero di BIT trasmessi nell'unita' di tempo. Valori

tipici (110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, BIT/S).

Interfacce seriali standard: RS232, RS432.

Interfacce parallele standard: una delle marche piu' conosciute e' quella della

Centronics.

Il vantaggio piu' apprezzabile della standardizzazione e' l'universalita' tramite la quale

non occorre un'interfaccia specifica per ogni PC.

8.4 PERIFERICHE

Tastiera: serie d’interruttori (101 tasti). Un circuito controlla periodicamente gli interruttori

per vedere se qualcuno e' chiuso. Dalla posizione del tasto chiuso si risale (per mezzo

della tabella ASCII) al codice ASCII del simbolo associato a quel tasto che viene passato

ai circuiti d’interfaccia.

MONITOR (terminale video): tubo a raggi catodici dotato di circuiti di memoria e di go-

verno. La dimensione si ottiene dalla misura della diagonale (espressa in pollici: un

inch=2.54 cm).

I monitors sul mercato sono di diverso tipo, variabili sia per i colori di cui dispongono che

per le mansioni cui sono preposti:

Bianco-nero, toni di grigio o a colori (es. RED GREEN BLUE).

Alfanumerico o grafico. Gli alfanumerici sono in grado di visualizzare solamente lettere,

numeri e segni d’interpunzione. Quelli grafici sono in grado di visualizzare anche disegni

ed immagini.

Inoltre, parametri caratteristici di un monitor grafico sono:

- RISOLUZIONE: il numero di pixel (punti) in cui e' suddiviso lo schermo (riga per colo n-

na).

VGA (640*480) ;

RISOLUZIONE MINIMA POSSIBILE

SVGA (800*600);

ALTISSIMA RISOLUZIONE (1024*768), (1024*1024)...

- QUANTITA' DI MEMORIA interna alla scheda grafica: determina il numero di colori che

si possono visualizzare. 256,16000.....

18

Autori: Messina Francesco, Lento Maria Rita.

STAMPANTI. Si distinguono secondo la:

- tecnica usata per la stampa; (ad impatto, getto d’inchiostro, termiche, laser);

- qualita' di stampa. Si esprime in dots per inch, dpi, corrispondente al numero di punti

che la stampante e' in grado di riprodurre in un pollice lineare

- velocita' di stampa (si esprime diversamente secondo la tecnica utilizzata);

- costo.

STAMPANTI A MATRICE DI PUNTI (ad aghi).

Tecnica : impatto. Genera i caratteri colpendo con piccoli aghi un nastro inchiostrato. Il

carattere e' fo rmato da un insieme di punti.

Velocita': si misura in caratteri/s.

Qualita' di stampa: mediocre.

STAMPANTI A CARATTERE INTERO

Tecnica : impatto. Diverse modalita':

stampanti a margherita (1 carattere alla volta). La velocita' di questo modello si e-

- sprime in caratteri/s;

stampanti a linea (una riga alla volta). La velocita' si misura in righe/m;

- qualità di stampa: mediocre.

-

STAMPANTI A GETTO D'INCHIOSTRO

Tecnica: spruzzano inchiostro da sottili forellini per formare le lettere ed i grafici sulla car-

ta. Qualita' di stampa: buona.

- Costo: medio.

-

STAMPANTI LASER

Tecnica: operano come le fotocopiatrici, stampanti di pagina.

- Qualita' di stampa: alta.

- Velocita': pagine/m. Varia da un modello ad un altro.

- Costo: alto.

- 19

Appunti di conoscenze informatiche di base.

Capitolo 9: IL LINGUAGGIO MACCHINA

Il linguaggio base del calcolatore e' il linguaggio macchina, un insieme di istruzioni e-

spresse nel formato Numerico binario di un particolare calcolatore. Il linguaggio macchi-

na consente di specificare in un programma solo le operazioni che l'elaboratore e' in gra-

do di interpretare ed eseguire direttamente.

Ogni processore ha il suo linguaggio macchina. Ciò' comporta la non portabilita' dei pro-

grammi, quindi il linguaggio non può funzionare su un'altra macchina avente processore

differente.

Ogni istruzione in linguaggio macchina svolge un’operazione elementare ed e' espressa

in una forma vicina alla macchina e lontana dal linguaggio naturale tipico del ragiona-

mento umano.

LINGUAGGI DI PROGRAMMAZIONE

Le difficoltà' di programmazione in linguaggio macchina:

- complessità' di scrittura;

- facilita' di errori;

- non portabilita'.

Queste considerazioni hanno portato a concepire linguaggi simbolici.

Capitolo 10: I LINGUAGGI SIMBOLICI

I LINGUAGGI SIMBOLICI utilizzano al posto dei numeri, delle espressioni simboliche per

esprimere le istruzioni, i dati e gli indirizzi di memoria.

I numeri binari corrispondenti ai codici operativi delle istruzioni, ai dati ed agli indirizzi di

memoria dei dati sono sostituiti da nomi simbolici. Es. linguaggio ASSEMBLER.

In un programma ASSEMBLER:

- definizione dei dati

DATO_1 = CODICE BINARIO 2 DATO_1 operando

DATO_2= CODICE BINARIO 4 DATO_2 operando

- definizione degli indirizzi

RESULT = CODICE BINARIO 7

- programma in linguaggio assembler

MOV AX, DATO_1 CHE SIGNIFICA: muovi nell'accumulatore il valore DATO_1

MOV BX, DATO_2: muovi nel registro b il valore DATO_2

20

Autori: Messina Francesco, Lento Maria Rita.

ADD AX, BX: somma al contenuto dell'accumulatore il contenuto del registro b.

COME MEMORIZZARE IL RISULTATO IN RESULT

STOS RESULT: memorizza il contenuto dell'accumulatore nella cella il cui indirizzo ha il

valore simbolico RESULT. 1

HLT (ALT): termina l'esecuzione.

10.2 LINGUAGGIO ASSEMBLER

Un programma scritto in linguaggio assembler, come in qualunque altro linguaggio, deve

essere tradotto in linguaggio macchina per essere eseguito.

IL particolare programma che traduce i codici simbolici (codici mnemonici) dei dati e delle

istruzioni di un programma assembler si chiama ASSEMBLATORE

Con PROGRAMMA SORGENTE O CODICE SORGENTE s’intende un programma scrit-

to in linguaggio assembler.

Il programma ASSEMBLATORE trasforma il programma sorgente in programma oggetto.

SVILUPPO ED ESECUZIONE DI UN PROGRAMMA ASSEMBLER:

? creazione del programma in linguaggio assembler (es. digitando sulla tastiera con

l'ausilio di un EDITOR DI TESTO). Si da quindi origine al PROGRAMMA SORGENTE

? un programma assemblatore traduce in numeri i codici simbolici del programma sor-

gente. Viene creato il PROGRAMMA OGGETTO.

? un programma detto LINKER, compie delle operazioni che trasformano il programma

oggetto in un formato che lo rende pronto per essere caricato in memoria.

? Il LOADER carica in memoria il programma prodotto dal LINKER. Si ottiene il

PROGRAMMA ESEGUIBILE.

1 La ALU invia sempre il risultato dell'operazione che ha svolto all accumulatore. Se il ri-

sultato occorre per fare qualcos'altro deve essere memorizzato in una qualunque cella di

memoria. 21

Appunti di conoscenze informatiche di base.

PROGRAMMA SORGENTE CPU PROGRAMMA OGGETTO

PROGRAMMA OGGETTO LINKER

PROGRAMMA CORRELATO

LOADER

PROGRAMMA ESEGUIBILE P.E

DATI DI INGRESSO .

DATI DI USCITA

Vantaggi e svantaggi del linguaggio assembler

VANTAGGI:

? maggiore semplicita' rispetto al linguaggio macchina;

? potenza. Consente la completa utilizzazione delle risorse della macchina, essendo la

sua struttura aderente ad essa.

SVANTAGGI:

? non portabilita' dei programmi;

? richiede la conoscenza dei dettagli dell' HARDWARE.

DIFFICOLTA' DI PROGRAMMAZIONE

l'ASSEMBLER e' un linguaggio orientato alla macchina e non al problema da risolvere

per questo è detto di basso livello. La soluzione di un problema (algoritmo) deve essere

scomposta in azioni elementari, perche' il calcolatore puo' eseguire solo operazioni ele-

mentari.

Gli inconvenienti dell'ASSEMBLER hanno portato allo sviluppo di linguaggi di program-

mazione piu' vicini al linguaggio naturale (umano). Questi linguaggi sono detti AD ALTO

LIVELLO.

22

Autori: Messina Francesco, Lento Maria Rita.

10.3 LINGUAGGI AD ALTO LIVELLO

? consentono di scrivere i programmi in una forma molto piu' vicina al modo di ragiona-

re dell'uomo;

? sono orientati al problema da trattare;

? evitano al programmatore di doversi occupare dei dettagli dell'HARDWARE.

Es. PASCAL, FORTRAN, C, BASIC, ETC...

Le istruzioni specificano operazioni piu' complesse rispetto a quelle elementari che il cal-

colatore puo' eseguire correttamente.

Le istruzioni dei linguaggi ad alto livello non possono essere direttamente interpretate

dall'elaboratore.

E' necessario tradurre i programmi scritti nei linguaggi ad alto livello (programmi sorgenti)

in linguaggio macchina, tramite dei PROGRAMMI TRADUTTORI qua li sono i compilatori

e gli interpreti. Per ogni linguaggio esistono i corrispondenti traduttori.

? COMPILATORE: compie la traduzione dell'intero programma in linguaggio macchina

tutto in una volta. Il compilatore produce un PROGRAMMA OGGETTO (codice og-

getto) che subira' altre elaborazioni prima di essere eseguito.

? INTERPRETI: traducono il programma istruzione per istruzione. La traduzione d’ogni

istruzione e' eseguita dall'immediata esecuzione.

ESEMPIO DI PROGRAMMA IN LINGUAGGIO PASCAL

Il programma sottostante si pone l'obiettivo di sommare due numeri. Si compone di due

parti, una dichiarativa, l'altra che riguarda le istruzioni.

La parte dichiarativa ha inizio con la dichiarazione del nome del programma, attraverso

una parola chiave, PROGRAM, seguito da "somma" e terminante con il "punto e virgola".

Si passa poi alla dichiarazione delle variabili utilizzate e del loro tipo. Digitando VAR (che

serve a definire le variabili) seguito da "a, b, result: INTEGER". Eseguite queste opera-

zioni, ha fine la parte dichiarativa e comincia quella inerente le ISTRUZIONI.

Il blocco istruzioni ha inizio dando come comando BEGIN. Volendo poi leggere un valore

da tastiera e assegnarlo alla variabile "a", il comando pertinente e' READLN (a); dove

23

Appunti di conoscenze informatiche di base.

con LN si intende leggi e poi vai a capo nella lettura. Allo stesso modo per leggere un va-

lore da tastiera ed assegnarlo alla variabile "b" si scrive READLN (b);. Per poi compiere

l'operazione di somma tra b ed a ed assegnare il risultato alla variabile RESULT, si digita

il comando RESULT: = ab;. Il punto e virgola rappresenta l'OPERATORE

D’ASSEGNAMENTO. A questo punto si puo' visualizzare il valore di RESULT sullo

schermo scrivendo WRITE (result); e l'esecuzione del programma ha termine con END.

OPERAZIONI EFFETTUATE DAL COMPILATORE SUL PROGRAMMA SORGENTE

? analisi lessicale: volta a comprendere le parole chiave del programma ed alla ricerca

di eventuali errori grammaticali;

? analisi sintattica: individua errori nell'impostazione sintattica dei comandi (per es. di-

menticanza del “punto e virgola” o delle parentesi);

? analisi semantica: analisi legata al SIGNIFICATO del programma;

? ottimizzazione (opzionale): un compilatore puo' cercare di fare delle operazioni che

consentano di migliorare il suo rendimento e la sua efficienza nel corso

dell’elaborazione del programma oggetto.

Gli errori rilevati dal compilatore (compiletime errors), sono di tipo STATICO (lessicali,

sintattici, semantici).

LESSICALI: ad esempio parola chiave errata;

SINTATTICI: le parole chiave sono esatte ma l'istruzione non rispetta le regole sintattiche

del programma;

SEMANTICI: l'uso di una variabile che non sia stata definita in precedenza. Sono quindi

compresi anche gli errori nell'algoritmo e non solo nel programma.

Se l'elaboratore non rileva errori, genera il codice oggetto, altrimenti segnala che si e'

compiuto un:

? FATAL ERROR: errore grave che non consente di proseguire la compilazione del

programma sorgente. Non viene quindi generato il codice oggetto.

? WARNINGS: segnale d’avvertimento che rileva errori lievi che non compromettono la

traduzione. Viene quindi generato il codice oggetto.

BUGGERS: seguono l'esecuzione del programma punto per punto e consentono di rile-

vare i risultati parziali della programmazione.

24

Autori: Messina Francesco, Lento Maria Rita.

Gli INTERPRETI individuano gli stessi errori dei compilatori, (lessicali, sintattici, semantici

definiti di tipo statico) ed in piu' gli errori semantici di tipo dinamico chiamati RUNTIME

ERRORS. Sono quegli errori che possono essere individuati solo in fase d’esecuzione

(RUN) del programma. (Es.: divisione per zero se decrementandosi b nel corso dell'ese-

cuzione del programma divenendo zero, sara' impossibile compiere l'operazione a/b, op-

pure OVERFLOW cioe' superamento della massima quantita' di rappresentazione.

CONFRONTO TRA COMPILATORI ED INTERPRETI

INGRESSO:

? COMPILATORI: il programma sorgente;

? INTERPRETI: il programma sorgente piu' i dati da utilizzare nell'esecuzione.

ERRORI RILEVATI:

? COMPILATORI: segnalazione di errori statici;

? INTERPRETI: segnalazione di errori statici e dinamici (a run time).

IN CASO DI MODIFICA DEL SORGENTE, O DI FATAL ERROR

? COMPILATORI: il programma sorgente deve essere ricompilato per intero per essere

eseguito (e corretto se c'è un errore);

? INTERPRETI: l'esecuzione puo' riprendere subito dopo la modifica senza bisogno di

ricompilare prima l'intero programma, un eventuale errore puo' essere corretto non

appena scoperto.

Inoltre la velocita' di esecuzione di un programma compilato e' generalmente maggiore

rispetto a quella di un programma interpretato.

COMPILATORI O INTERPRETI:

Per i vari linguaggi ad alto livello, generalmente sono disponibili sia i compilatori sia gli in-

terpreti. 25

Appunti di conoscenze informatiche di base.

Il tipo d’applicazione determina la scelta, infatti, fra i vari programmi in tal senso possia-

mo dividere l'analisi in due sottogruppi:

- APPLIC AZIONI I/O BOUND: in questi tipi d’applicazione molto e' il compito svolto

dalle periferiche rispetto a quello che svolge la CPU;

- APPLICAZIONI CPU BOUND: il lavoro maggiore viene svolto dalla CPU mentre un ruo-

lo di minore importanza viene giocato dalle periferiche, tutto cio' comporta per questi pro-

cessi velocita' differenti, maggiori per l'I/O BOUND minori per i CPU BOUND.

E' quindi consigliabile l'uso del compilatore se si parla d’applicazioni CPU bound, mentre

sono piu' congeniali dei programmi interpreti per le applicazioni d’IMPUT- OUTPUT.

Quando il compilatore genera il programma oggetto, non assegna a dati ed istruzioni de-

gli indirizzi assoluti (es. cella di memoria n°6), ma indirizzi relativi (definiti a meno di una

posizione costante non specificata. Gli indirizzi sono quindi riferiti ad una posizione co-

stante senza che pero' si sappia qual e' la "posizione di partenza".

Es. quinta cella dopo la posizione START, senza che sia stata specificata la posizione di

START in memoria. La posizione di START verra' definita solo quando il programma ver-

ra' caricato in memoria centrale. Solo allora il programma sara' eseguibile. Otteniamo co-

si' che per conoscere l'indirizzo definitivo di un' istruzione nella propria cella di memoria

dobbiamo sommare l'indirizzo relativo all'indirizzo di START

Es. START = 13, indirizzo istruzione x = 5: indirizzo assoluto di x = 18.

Spesso puo' accadere di dover usare funzioni logiche, matematiche o simili all'interno di

un programma e, piuttosto che costruire la struttura di queste funzioni, puo' essere piu' u-

tile richiedere l'utilizzo di apposite librerie dalle quali richiamare le funzioni interessanti.

Così facendo si snellisce la programmazione e non si sopporta l’onere della programma-

zione anche delle funzioni desiderate. Es. seno, coseno tangente etc.

Questi sottoprogrammi all'interno delle librerie una volta richiamati devono essere colle-

gati al resto del programma tramite un programma "COLLEGATORE". Se non si desse il

riferimento del programma presente in libreria, l'esecuzione del nuovo programma non

potrebbe avere luogo.

Vi sono altri motivi per cui il codice oggetto non e' ancora eseguibile:

- il P.O. puo' contenere dei riferimenti a funzioni (blocchi di codici) definite esternamente

al programma, che compiono particolari operazioni per suo conto oltre a quelle su ac-

cennate, vi possono essere ad es. gestioni di periferiche oppure variabili esterne condivi-

se.

26

Autori: Messina Francesco, Lento Maria Rita.

-Tali riferimenti sono lasciati irrisolti, cioe' ad essi non corrisponde ancora un indirizzo.

Perche' il P.O. diventi eseguibile, e' necessario collegare queste funzioni (o variabili) al

programma. UTILITA' DEI SOTTOPROGRAMMI.

Per risolvere un problema complesso, e' conveniente scomporlo in sottoproblemi piu'

semplici.

Ogni sottoproblema puo' essere risolto da un sottoprogramma (modulo), che puo' essere

compilato a se stante, indipendente dagli altri moduli.

Compilandoli ognuno per conto proprio, ci si rende conto se il modulo contiene errori,

quindi rivisto ed eventualmente corretto, successivamente si pensa a collegarli insieme.

COLLEGAMENTO ED ESECUZIONE DEI PROGRAMMI

Una volta scritti e compilati i moduli relativi ai sottoproblemi, occorre collegarli per costi-

tuire un unico programma soluzione del problema principale.

Il programma che si occupa di ricucire i diversi moduli in un programma unico e' il LIN-

KER.

CICLO DI SVILUPPO D’UN PROGRAMMA

PROBLEMA al problema segue l'ALGORITMO espressione del metodo per la risolu-

zione del problema al quale segue il PROGRAMMA che e' la codifica dell'algoritmo

in linguaggio Per poter dare attuazione pratica al programma ancora su carta si ri-

corre ad un EDITOR DI TESTO viene cosi' ottenuto il PROGRAMMA SORGENTE.

Ponendo che il programma che desideriamo ottenere sia CPU-BOUND, utilizziamo il

COMPILATORE cosi' facendo viene ottenuto il PROGRAMMA OGGETTO che con-

tiene gli indirizzi relativi ed i riferimenti esterni irrisolti segue il LINKER, sara' suo il

compito di collegare questi riferimenti al programma cio' porta al PROGRAMMA

COLLEGATO, restano inevasi solo gli indirizzi relativi che vengono trasformati in assoluti

tramite il caricamento in memoria centrale del programma collegato, questo compito

spetta al LINKER. A questo punto se sussistono errori lessicali e semantici sono stati

27

Appunti di conoscenze informatiche di base.

corretti. se sussistono ancora errori potrebbe trattarsi di errori a run-time. Sara' compito

del DEBUGGER individuarli e una volta corretti, otteniamo cosi' il PROGRAMMA ESE-

GUIBILE.

SOFTWARE DI BASE

Sistema di elaborazione: struttura gerarchica composta da elementi hardware e software:

vengono visti come tre insiemi uno interno all'altro nell'ordine di hardware che occupa la

posizione piu' interna, software di base, senza il quale il computer e' un "inutile ammasso

di ferraglia", e software applicativo.

SW di base: e' rappresentato da quell'insieme di programmi che servono ad attivare

l'hardware ed e' fondamentale per utilizzare il computer.

SW applicativo: usa il calcolatore per raggiungere un determinato tipo di risultato. Se

l'HW non e' opportunamente pilotato dal SW di base non e' in grado di operare.

SW di base

insieme di programmi che:

? permettono le comunicazioni tra le varie componenti dell'hardware;

? gestiscono le risorse HW in modo ottimale per servire le richieste dell'utente o di piu'

tenti. Utente che non necessariamente deve essere un essere umano, ma si po-

trebbe trattare di un programma applicativo.

? consentono al calcolatore di eseguire programmi scelti in linguaggi ad alto livello, tra-

ducendo tali programmi in linguaggio di programmazione. Fanno parte, ad esempio,

del SW di base, il programma assemblatore, il compilatore, l'interprete, il linker, il lo-

ader, ..., nonche' il sistema operativo. .

N.b. da questo punto in poi ci si distacca dal De Michelis

Capitolo 11: SISTEMA OPERATIVO

E’ definito come l'insieme di programmi che gestiscono le risorse di un calcolatore in mo-

do da consentire agli utenti un uso agevole ed efficiente del calcolatore stesso.

Il sistema operativo e' definito anche come uno strato software che nasconde all'utente la

complessita' dell'hardware.

28

Autori: Messina Francesco, Lento Maria Rita.

Grazie al sistema operativo l'utente non "vede" la macchina reale e non deve neanche

preoccuparsi dei problemi di gestione dei dispositivi hardware.

L'utente interagisce con la macchina virtuale che è indubbiamente più' facile da gestire.

Questo comporta il notevole vantaggio di non doversi occupare neanche dei dispositivi

imput-output di collegamento esterno com’es. stampanti, che sono passibili di mutamen-

to senza che ne risenta la struttura del calcolatore. Detto in altri termini, il S.O.

consente di utilizzare qualunque collegamento esterno senza ingenerare blocchi o re-

strizioni nello utilizzo del calcolatore.

La macchina virtuale e' più' facile da programmare: i programmi utente utilizzano risorse

virtuali e non devono occuparsi della gestione delle risorse reali (gestite dal S.O.). La

macchina virtuale e' l'immagine della macchina reale che il S.O. offre all'utente. Essa e':

- più' estesa, cioè' ha più' risorse;

- più' facile da usare della macchina reale.

Il S.O. disciplina la gestione degli accessi, quindi nel caso in cui vi sono più' utenti che in-

tendono stampare qualcosa, ognuno otterrà cio' che aveva scritto perche' il S.O. ha stabi-

lito dei ”turni"

La macchina virtuale e' in grado di offrire all'utente dei servizi dietro invio di apposite RI-

CHIESTE (funzione di interfaccia verso l'utente).

Le richieste possono essere formulate in due modi:

- direttamente dall'utente (modalita' interattiva), tramite comandi di sistema. (Es. copia,

stampa, ..... ).

- indirettamente dai programmi utente, tramite istruzioni particolari (chiamate di sistema),

che vengono tradotte in chiamate ai programmi del S.O. (es. WRITE del programma PA-

SCAL si traduce in una chiamata a quella parte del S.O. che permette la gestione delle

periferiche).

Funzione di interfaccia utente del sistema operativo: fornisce all'utente un dato insieme di

servizi richiamabili mediante comandi o chiamate di sistema .

Se la richiesta dell'utente e' inviata tramite comandi (detta modalita' interattiva) occorre

un interprete di comandi (SHELL), programma che riceve i comandi direttamente impartiti

dall'utente, li interpreta e li traduce in chiamate programmi di sistema opportuno.

Ogni sistema operativo ha la sua shell ed eventualmente anche piu' di una. 29

Appunti di conoscenze informatiche di base.

Una parte del S.O. e' sempre residente in memoria, pronta ad esaudire le richieste dell'u-

tente o dei programmi dell'utente.

Figura 1. gerarchia interna al S.O.

l'interprete dei comandi non puo' mancare, ma non fa parte integrante del sistema opera-

tivo perche' ciascun utente puo' decidere di riscrivere lo shell. (Sostituendo ad es. dir op-

pure diskcopy con altre parole).

Il nucleo è il software che gestisce l'unita' centrale (CPU), un es. di servizio offerto dal

S.O. e' la esecuzione di un programma memorizzato sul suo disco rigido.

COSA NON SI VEDE !!

Il S.O. si occupa di :

- leggere il programma dal disco e caricarlo in memoria centrale, cioe' fa in modo che il

loader si occupi del caricamento del programma in memoria;

- comandare l'esecuzione del programa;

- riprendere il controlo del sistema di elaborazione ed esecuzione.

Altri esempi: stampa di un documento da un dispositivo periferico all'altro.

Le tre macchine virtuali sono tra loro integranti in quanto quella piu' esterna usa la fun-

zionalita' della precedente.

Nucleo: (KERNEL) insieme di programmi che colloquiano direttamente con l'H.W. e si

occupano dell'esecuzione dei programmi utente e di sistema.

30

Autori: Messina Francesco, Lento Maria Rita.

In ogni calcolatore c'e' una ROM contenente un programma che si occupa del carica-

mento del sistema operativo in memoria centrale (BIOS). Per questo motivo appena ac-

ceso il computer lo si ritrova sulla RAM ed e' in condizione di operare nel giro di pochi

secondi (BOOT).

Il nucleo gestisce processi ed eventi esterni generati dalle periferiche,chiamati "INTER-

RUZIONI". Il processo e' un programma in esecuzione. Include:

- il programma eseguibile;

- i dati;

- altre informazioni sul processo,necessarie alla sua esecuzione,dette contesto.

Un programma si trasforma in processo quando viene mandato in esecuzione. I processi

possono essere associati ad un programma di sistema operativo o ad un programma u-

tente.

11.2 DIFFERENZA NELLA MODALITA' DI FUNZIONAMENTO

I Programmi di sistema eseguono in modo supervisore le modalita' privilegiate senza al-

cuna restrizione sulle operazioni consentite.

I Programmi utente eseguono in modo utente, con diverse restrizioni sulle operazioni

permesse.

11.3 S. O. DIFFERENZA TRA SISTEMI OPERATIVI UNIPROGRAMMATI E MULTIPRO-

GRAMMATI

Nel sistema operativo uniprogrammato oltre al S.O. in memoria centrale vi e' un unico

ramma applicato. 31

Appunti di conoscenze informatiche di base.

Nel sistema multiprogrammato in memoria centrale, oltre al S.O. stanno piu' programmi

applicati-

vi.

I tempi di I/O sono "morti" per la CPU, quindi vengono sprecati. Per Questo motivo si so-

no creati i sistemi MULTIPROGRAMMATI che in ogni istante in memoria centrale, oltre al

sistema operativo permettono di risiedere a piu' programmi utente (Windows 95, UNIXS,

ETC..).

Se un sistema e' dotato di una sola CPU, allora un solo programma puo' trovarsi in ese-

cuzione in un solo istante, per questo motivo si ha un utilizzo limitato del sistema. Qual e'

allora il vantaggio dei multiprogrammati ? Se sono presenti piu' programmi i esecuzione,

questi utilizzano i tempi morti della CPU in un processo per sfruttare il suo operato nell'

altro.

Il nucleo quindi simula l'esecuzione parallela di piu' processi stabilendo dei turni di utilizzo

della CPU secondo opportune politiche di assegnazione.Bisogna ricordare che il paralle-

lismo ottenuto tra i processi e' virtuale, visto che in realta' non sono paralleli. Si ha un pa-

rallelismo effettivo invece nei sistemi multiprocessore, che dispongono di piu' CPU.

11.4 VANTAGGI E SVANTAGGI DEL PARALLELISMO VIRTUALE

Il vantaggio del parallelismo virtuale comporta uno spreco inferiore nel tempo di CPU poiché i pro-

cessi eseguono le operazioni di CPU parallelamente. Si tratta in ogni modo di un parallelismo vir-

tuale visto che, in un qualunque istante sarà solo un processo ad occupare la CPU.

32

Autori: Messina Francesco, Lento Maria Rita.

Tuttavia il grado di parallelismo virtuale è limitato dalla quantità di tempo I/O dei processi in ese-

cuzione come ad esempio problemi con processi CPU bound, Oltre tutto un eventuale processo P3

deve aspettare che vadano in esecuzione P1 e P2, anche se dura un solo secondo. Per evitare il pro-

blema bisogna aumentare il GRADO DI PARALLELISMO VIRTUALE. Vale a dire che occorre

evitare che un processo monopolizzi la CPU o che la impegni per troppo tempo.

Nei sistemi a partizione di tempo, detti anche TIME SHARING, AD OGNI PROCESSO è assegna-

to un QUANTO di tempo, ossia un intervallo massimo d’utilizzo della CPU. Il nucleo del sistema

operativo, anche detto Kernel, toglie la CPU al processo che ha esaurito il suo quanto o che deve fa-

re un’operazione di I/O.

11.4 Vantaggi del time sharing

I sistemi a partizione di tempo tendono ad uno sfruttamento continuo della CPU. Con tendere si

vuole sottolineare che lo sfruttamento può non avvenire se le fasi di I/O non coincidono.

Se dovesse essere inserito un altro processo P4 verrebbe inserito con un quanto pari a quello degli

altri. Gli utenti che hanno lanciato i processi P1, P2, P3, hanno tutti la sensazione che i loro pro-

grammi siano in esecuzione. Così facendo no n si ha un processo che monopolizza la CPU, cons e-

guenza diretta ne è che P1, P2, P3, evolvono come se avessero tre CPU separate.

Quanto deve essere lungo un quanto?

La durata del quanto è critica per l’efficienza del sistema poiché un quanto breve si ha una scarsa

efficienza in quanto il sistema operativo deve gestire molte volte il passaggio dei contesti, questo ne

provoca il sovraccarico con relativa perdita di velocità anche l’opposto provoca un problema analo-

go, se un quanto fosse eccessivamente lungo si perderebbe il parallelismo con la consecutiva mono-

polizzazione della CPU per il primo processo rispetto agli altri. Si avrebbe in ogni caso una cond i-

zione di sequenzialità nei programmi e non un parallelismo.

Abbiamo parlato di programmi e di processi cerchiamo di vedere la differenza che ne intercorre.

Sono definiti processi delle entità dinamiche che evolvono attraversando stadi. Gli stadi attraversati

sono:

? In esecuzione, RUNNING, la CPU è a disposizione per l’esecuzione;

? Pronto per l’esecuzione, READY TO RUN, nell’attesa che la CPU possa eseguirla, se vi sono

un insieme di processi pronti questo fenomeno va sotto il nome di ready queue;

? In attesa, waiting, non ancora pronto per l’esecuzione, nell’attesa di un evento esterno. 33

Appunti di conoscenze informatiche di base.

Una volta pronto il processo passa in esecuzione e abbandonerà questo stadio per due possibili mo-

tivi, o perché il processo ha avuto termine, oppure perché è terminato il quanto di tempo a sua di-

sposizione.

Gli accodamenti dei processi verranno gestiti in modo FIFO (first in first out).

Il nucleo maschera al processo la privazione ed il riassegnamento del processore tramite salvataggio

e ripristino del contesto.

IL GESTORE DELL’ UNITA’ CENTRALE è una parte del nucleo che si occupa di assegnare la

CPU ai processi pronti al fine di permettere loro di progredire nell’elaborazione e di terminarla. In

ogni istante un solo processo ha la CPU, trattandosi di sistemi monoprocessore, la gestione della

CPU consiste nell’assegnare il tempo di CPU ai vari processi.

Gli obiettivi del gestore della CPU sono:

? Massimizzare il tasso di servizi, detto troughput, ossia il numero medio di processi eseguiti

nell’unità di tempo;

? Massimizzare il grado d’utilizzo della CPU, ossia il rapporto tra:

INTERVALLI DI TEMPO IN CUI LA CPU E’ ATTIVA

TEMPO TOTALE DI CPU TRASCORSO

? Minimizzare il tempo di risposta che consiste nella differenza di tempo tra il lancio di un pro-

cesso ed il suo termine o tra l’invio di un comando e l’arrivo della risposta;

? Minimizzare il sovraccarico di schedulazione, ossia il tempo speso dall’unità centrale per ese-

guire i programmi di gestione della CPU.

11.5 INTERRUZIONI

Gli eventi generati dalle periferiche sono detti interruzioni. Possono essere:

? Interne, dove il segnale parte da un processo come ad esempio la richiesta di I/O;

? Esterne,dove il segnale è generato dalla periferica. Ad es. quando la stampante richiede altra

carta per finire l’operazione, oppure perché è stata già conclusa.

? Per errore.

Al verificarsi di un’interruzione il nucleo del sistema operativo:

? Interrompe il processo P in esecuzione;

? Ne salva il contesto in una determinata zona di memoria;

34

Autori: Messina Francesco, Lento Maria Rita.

? Esegue il programma di gestione dell’interruzione, che si troverà in un punto determinato della

memoria centrale;

? Stabilisce qual è il processo da mandare in esecuzione e ne ripristina il contesto.

Ripristinare il contesto significa copiare nei registri della CPU il contenuto dell’area di memoria

nella qual è registrata la descrizione del contesto del processo al momento della sua sospensione.

La macchina virtuale simulata dal nuc leo, differisce dalla macchina base perché:

? Possiede tante unità centrali quanti sono i processi da eseguire;

? Non possiede meccanismi d’interruzione.

Il nucleo fornisce agli strati superiori la visione di un insieme di CPU virtuali ciascuna dedicata ad

un processo attivo.

La gestione della memoria e quella delle periferiche non sono in una scala gerarchizzata. Entrambe

vedono, infatti, la macchina virtuale offerta dal nucleo e si trovano sullo stesso piano quindi anche

se svolgono funzioni diverse.

Il gestore della memoria (G.D.M.) è il modulo di sistema operativo che si occupa di assegnare la

memoria ai processi al fine di permettere loro di essere eseguiti.

La memoria centrale è una risorsa condivisa tra più processi ed il gestore della memoria si occupa

di come suddividere la memoria in parti e come assegnare tali parti ai vari processi.

Gli obiettivi del gestore della memoria, sono:

? massimizzare il numero di processi caricati in memoria;

? massimizzare il grado d’occupazione della memoria, ossia il rapporto fra:

NUMERO CELLE OCCUPATE

NUMERO TOTALE CELLE DISPONIBILI

? minimizzare il sovraccarico di gestione, ossia il tempo speso dall’unità centrale per eseguire i

programmi di gestione e della memoria.

11.6 Rilocazione

Attraverso la rilocazione si stabilisce una corrispondenza tra indirizzi relativi o logici e indirizzi fi-

sici. È questa un’operazione della quale non si occupa il sistema operativo, ma i compilatori, il lin-

ker ed il loader, che non ne fanno parte. 35

Appunti di conoscenze informatiche di base.

TECNICHE DI GESTIONE DELLA MEMORIA

Rilocazione assoluta: viene fatta o in fase di compilazione o subito dopo la compilazione, quindi

senza tenere conto dell’effettiva disponibilità di memoria nel momento in cui il programma sarà e-

seguito. Ad esempio, parliamo di rilocazione assoluta se chiediamo chi il programma eseguibile do-

vrà essere caricato nella porzione di memoria che va dalla cella 1000 alla cella 1267.

SVANTAGGI:

? il programma dovrà essere caricato sempre e solo in quella posizione, anche se eseguito più vo l-

te;

? la dimensione del programma è limitata, in quanto esso deve poter essere contenuto per intero

nella memoria centrale;

? può funzionare solo nei sistemi monoprogrammati.

Rilocazione statica: la trasformazione degli indirizzi logici in indirizzi fisici è effettuata solo nel

momento in cui si richiede l’esecuzione del programma. Se ne occupa il loader. La porzione di me-

moria assegnata al programma è costituita da celle contigue.

DIFFERENZE CON LA RILOCAZIONE ASSOLUTA

Il legame tra indirizzi logici ed indirizzi fisici vale solo per una data esecuzione del programma; in

esecuzioni diverse, un programma può occupare aree di memoria diverse, secondo la disponibilità

corrente.

PRIMA DOPO

Blocco occupato P3

Blocco occupato P6

Blocco occupato P1 Blocco libero

Blocco occupato P2 Blocco occupato P2

Blocco occupato P3 Blocco libero

Blocco occupato P4 Blocco libero

Blocco occupato P5 Blocco occupato P4

Blocco libero Blocco libero

Blocco libero

Blocco occupato P5

36

Autori: Messina Francesco, Lento Maria Rita.

I blocchi liberi sono troppo piccoli per essere allocati ad un processo, ma la somma delle loro di-

mensioni non è trascurabile. Nasce il problema della frammentazione che può essere risolto con va-

rie politiche. 37


PAGINE

56

PESO

135.00 KB

AUTORE

Moses

PUBBLICATO

+1 anno fa


DETTAGLI
Esame: Informatica
Corso di laurea: Corso di laurea in informatica
SSD:
A.A.: 2012-2013

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Moses di informazioni apprese con la frequenza delle lezioni di Informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università La Sapienza - Uniroma1 o del prof Scienze matematiche Prof.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Informatica

Fondamenti di informatica 1 - Esercizi
Esercitazione
Informatica di base - nozioni generali
Appunto
Informatica - Appunti
Appunto
Informatica - struttura degli elaboratori - Appunti
Appunto