Vous êtes sur la page 1sur 15

4.

Concetto di algoritmo e modello penna carta (elaborazione


manuale)
Lalgoritmo
1. una sequenza di azioni elaborative (passi di elaborazione)
2. una sequenza finita di passi di elaborazione
3. deterministico (non soggetto a regole probabilistiche)
4. che risolve automaticamente un problema.
Un algoritmo opera su dati che sono espressi da simboli e sequenza di simboli.
Ogni passo dellelaborazione produce:
una trasformazione dei dati del problema
ne calcola alcuni in funzione di altri.
Un algoritmo pu essere formalizzato definendo
linsieme dei passi di elaborazione
una macchina in grado di eseguirle (esecutore)
un linguaggio per descrivere le azioni e la loro sequenza.
LESECUTORE di un algoritmo quindi lentit che deve attuare la sequenza di passi di
elaborazione.
Nel modello carta e penna lesecutore una persona che:
1. non sa assolutamente nulla di algebra
2. possiede una calcolatrice ed capace di effettuare le operazioni elementari e i
confronti logici.
3. possiede penna e carta e appositi tabulati per prendere nota di dati iniziali,
risultati intermedi e risultati finali
4. in grado di interpretare semplici istruzioni operative.
5.
La codifica delle informazioni testuali
Un testo digitale una stringa di simboli (caratteri), ad ognuno dei quali associato
un codice binario secondo un prefissato standard.
Alla fine degli anni 60, lANSI introdusse il Codice ASCII,una tabella di 27= 128
elementi comprendenti:
(0-32) - codici per il controllo visualizzabili
(33- 47) simboli di punteggiatura e speciali ($ # etc.)
(48-57) caratteri numerici
(58-64) altri simboli di punteggiatura e speciali
(65 -90) carattere alfabetici maiuscoli
(91-96) simboli di punteggiatura e speciali
(97-122) carattere alfabetici minuscoli
(122-128) altri simboli di punteggiaturae speciali
Per la codifica della tabella ASCII occorrono 7 bit.
Il codice ASCII base idoneo per la lingua inglese americana; per superare questo
limite, introducendo ad esempio lettere accentate, sono stati introdotti codici ASCII
estesi a 8 bit che comprendono altri 128 caratteri che si differenziano per le diverse
nazioni.
Con la diffusione di internet a livello mondiale, anche questi codici estesi sono risultati
inadeguati ed stato introdotto lUNICODE basato su una codifica a 16 bit che
permette la codifica di 65.000 caratteri.
Successivamente sono stati introdotti i formati UTF a 8, 16 e 32 bit che consentono di
rappresentare fino a circa 1 milione di caratteri.

I documenti digitali possono essere strutturati, oltre che in modalit sequenziale,


anche come ipertesti, collegando le sue parti tramite link.
Altro vantaggio dei testi digitali quello di inserire insieme al testo informazioni
relative alla sua formattazione.
Il linguaggio HTML diffuso per la codifica di testo finalizzato alla consultazione in
rete. Le specifiche di formato chiamate tag, sono racchiuse tra parentesi angolate.
I formati dei documenti formattati pi diffusi sono:
DOC gestito da MicroSoft Word
PDF, stata pensata per la sua riproduzione sia cartacea che elettronica.
6. Codici a lunghezza fissa e variabile. Calcolo del numero minimo di simboli
per rappresentare le informazioni
Un CODICE un sistema di simboli definito da:
Elementi atomici (i simboli)
Un alfabeto A di n elementi (cardinalit n)
Parole codice (stringhe), ossia le sequenze possibili di simboli di lunghezza (l)
Un linguaggio, ossia le regole per costruire parole codici significative.
Se m il numero di valori diversi di una informazione, la lunghezza l delle parole
codice deve essere nl m.
Se nl> m, il codice di dice sovrabbondante.
La codifica pi essere a lunghezza:
Fissa (come nel calcolatori)
Variabile (come nella scrittura)
La rappresentazioni dellinformazione allinterno dellelaboratore, si basa sullalfabeto
binario, utilizzando un alfabeto A con A(0,1) con n = 2.
I numeri vengono rappresentati tramite stringhe di bit di lunghezza l che producono 2l
parole codice diverse; viceversa,per rappresentare K informazioni diverse, occorrono
log2K bit.
7. Codifica dei numeri in binario puro
La rappresentazioni dellinformazione allinterno dellelaboratore, si basa sullalfabeto
binario, utilizzando un alfabeto A con A(0,1) con cardinalit n = 2.
I numeri vengono rappresentati tramite stringhe di bit di lunghezza l che producono 2l
parole codice diverse; viceversa, per rappresentare K informazioni diverse, occorrono
log2K bit.
15. Rappresentazione dei numeri reali (virgola fissa e mobile) e problemi di
overflow e underflow (illustrare con qualche esempio)
La rappresentazione dei numeri reali a virgola fissa, quando la posizione della virgola
(o punto) che separa la parte intera da quella frazionaria predeterminata.
La posizione della virgola, essendo prefissata, pu non essere espressa nella stringa
memorizzata nel calcolatore, mentre va ovviamente sempre esplicitata nei supporti
I/O.
Parte intera
ni bit

Parte frazionaria
nf bit

In V.F. lerrore (assoluto) di rappresentazione indipendente dallordine di grandezza


del numero => numeri pi piccoli vengono rappresentati con errori relativi maggiori.
Es: n= 5, b=10, p=5 (posizione della virgola)
Numero
Rappresentazione
Errore assoluto
Errore relativo
0.100008
10000
8 10-6
8 10-6 10-4=810-10
0.000018
00001
8 10-6
8 10-6 1 =810-6
Rispetto alla rappresentazione V.M, la V.F richiede una ALU pi semplice (pi
economica e veloce)
I linguaggi ad alto livello adoperano la rappresentazione V.F solo per dati di tipo intero.
Nella rappresentazione a virgola mobile il numero reale r rappresentato dalla coppia
(M, E) tale che
r = M bE
dove:
M (mantissa) un numero frazionario o intero
E (esponente o caratteristica) un intero
b la base di rappresentazione
lapprossimazione della rappresentazione
Se la coppia (M,E) tale che la prima cifra a sinistra della mantissa risulti diversa da 0.
esempio di formato per la codifica in binario di un numero reale in virgola mobile:
Segno mantissa

Segno esponente

Mantissa
(nM bit)

Esponente
(nE bit)

Sia la mantissa che lesponente hanno un numero finito di cifre e quindi gli intervalli
rappresentati sono sempre limitati
[min_real, max_real]
in funzione del numero di bit.
In ogni caso avremo degli errori dovuto allarrotondamento.
In generale se m il peso della cifra meno significativa lerrore massimo che si
commette :

Si definisce overflow la condizione quando il valore x da rappresentare risulta:


x< min_real o x > max_real
Si definisce underflow la condizione quando il valore x da rappresentare viene per
confuso, effetto delle approssimazioni, con lo 0.
Es:

rappresentazione per b =10,


mantissa di 5 cifre
esponente di 2 cifre
rappresentazione normalizzata

sia ha la condizione di
overflow quando x> 9.99999 1099
underflow quando x< 1.00000 10-99
16. Gli operatori booleani

Sulle stringhe di bit sono definiti gli operatori booleani che lavorano bit a bit e sono:
AND (prodotto logico): dati due bit, restituisce il valore:
1 se e solo se i bit sono posti a 1
0 in tutti gli altri casi
OR (somma logica): dati due bit, restituisceil valore:
0 se e solo se i bit erano posti a 0
1 in tutti gli altri casi
NOT (operatore di negazione): dato un bit, restituisce il valore
0 se esso posto a 1
1 se esso era posto a 0
a
0
0
1
1

b
0
1
0
1

Not a
1
1
0
0

a AND b
0
0
0
1

a OR b
0
1
1
1

23. Dati e metadati


Il dato la rappresentazione formale di fatti e concetti per consentirne il trattamento
da parte di un elaboratore.
I metadati sono dati che descrivono altri dati e ne riportano la struttura, il significato o
la descrizione.
Un metadato pu essere:
Descrittivo: con lobiettivo del recupero dati
Gestionale: per la gestione dei dati
(per la gestione dei
dati)
Secondo il web semantico, il metadato si definisce come linformazione che d
significato al dato rendendolo comprensibile da parte di una macchina
(machine
understandable).
XML: eXstensible Markup Language (linguaggio di marcatura) il linguaggio standard
per lo sviluppo del web semantico.
Per sviluppare web semantico
rende possibile strutture dati indipendenti dalla piattaforma.
30. Domanda: Modello di von Neumann a bus
Lhardware del computer costituito da tre blocchi fondamentali:
Central processing unit (CPU) che coordina lesecuzione delle operazioni fondamentali.
La memoria che contiene lalgoritmo che descrive le operazioni da seguire e i dati su
cui lalgoritmo opera.
I dispositivi di input e output, le interfacce della CPU con il mondo esterno.

La CPU costituita da tre parti fondamentali:


unit di controllo (CU),
unit logico aritmetica (ALU),
insieme di registri interni.
Lunit di controllo ha il compito di:
prelevare le istruzioni dalla memoria centrale e decodificarle (fetch)
prelevare gli operandi dalla memoria (operand assembly)
eseguire listruzione (execute).
Queste tre fasi (ciclo del processore), vengono eseguite ininterrottamente dalla CU,
dalloperazione boot (in cui viene fornito alla CU lindirizzo del registro di memoria
contenente la prima istruzione da eseguire) fino allo spegnimento del sistema.
Il prototipo di von Neumann basato su concetto di programma memorizzato: la
macchina organizza nella sua memoria i dati su cui lavorare e le istruzioni per il
funzionamento.
La CPU comunica con la memoria e i dispositivi I/O tramite bus (canali condivisi da pi
utilizzatori.
I bus si distinguono a seconda delle informazioni trasportate in:
Control bus: mediante il quale la CU indica ai dispositivi le operazione da compiere, ad
esempio leggere (Read) o scrive (Write) un dato.
Data Bus: mediante il quale i dati o istruzioni fluiscono fra memoria e CPU per azione
di Store (scrittura), Load (lettura).
Address bus: permette alla CU di comunicare un indirizzo di una locazione di memoria
per operazione di lettura e scrittura.
31. Domanda: La CPU
Vedi domanda 30.
36. La Memoria centrale architettura e parametri di valutazione
La memoria centrale costituisce uno dei blocchi fondamentali dellelaboratore nei
modelli di Von Neumann (figure).
La memoria centrale deve contiene:
Le istruzioni da eseguire (programma)
I dati su cui il programma opera
I risultati prodotti dallelaborazione
La memoria centrale si interfaccia con:
La CPU
I dispositivi di input e output
Le memorie di massa (nel modello modificato)
La memoria centrale di un elaboratore costituita da un insieme di registi di tipo
elettronico (circuiti flip flop a semiconduttori) la cui posizione indicata dallindirizzo di
memoria.
La dimensione di un registro si misura in numero di bit.
I registri con memorie di 8 bit sono detti a byte, con 16 o 32 bit (non pi utilizzati)
sono detti a voce.
Un registro di memoria viene selezionato dalla CPU per eseguire una delle seguenti
operazioni:
lettura (load): ossia il prelievo linformazione contenuta nel registro senza
distruggerla,
scrittura (store): ossia linserimento di un informazione nel registro eliminando
quella precedente.

Tali operazioni richiedono un tempo di accesso sempre superiori ai tempi necessari alle
elaborazione che avvengono nella CPU. Per compensare tale differenza, tra memoria
centrale e CPU interposta una memoria cache, che fa da buffer per il trasferimento
di informazioni tra CPU e memoria centrale.
La memoria cache realizzata a due livelli: un primo L1 interno alla PCU, un secondo
L2 esterno, con memorie di solito pi lente rispetto a quelle della L1 (4 -5 volte), ma
sempre pi veloci (20 -30 volte) della memoria centrale.
Nella memoria centrale anche previsto un buffer per lo scambio di informazioni con
le memorie di massa, in genere di natura magnetica e quindi con tempi di accesso
maggiori
La selezione dei registri della memoria centrale di tipo casuale, ossia il tempo di
accesso non dipende dalla posizione del registro.
In memoria centrale troviamo sia memorie di lettura e scrittura che di sola lettura
(ROM).
Si tratta quindi di memorie RAM (Random Access Memory); in effetti comunemente
con il termine RAM si intendono (impropriamente) solo memorie di tipo volatili, ossia
che perdono le informazioni che si perdono quando si spegne il computer.
Pi precisamente le memorie possono classificarsi secondo:
1. modalit di accesso
a. casuale (RAM)
b. sequenziale (quando il tempo di accesso dipende dalla posizione)
2. operazioni possibili
a. lettura e scrittura
b. solo lettura (ROM)
3. alterabilit
a. memorie volatili
b. memorie permanenti, necessariamente di tipo ROM (ROM, EPROM,
EEPROM)
I principali parametri di valutazione per la memoria centrale di un elaboratore sono:
Capacit: numero totale di celle della memoria (1-4 GB)
Velocit, che pu essere espressa come
o Tempo di accesso alla memoria: tempo necessario per un singolo accesso in
memoria ( dellordine dei ns = miliardesimo di sec)
o Ciclo di memoria: Numero di accessi per unit di tempo
o Velocit di trasferimento (Transfer rate): bit/secondo trasferiti
Costo per bit: (che si quantifica in /MB)
37. Domanda: Gerarchia delle memorie e loro gestione
Nel modello modificato di Von Neumann (figura) troviamo
Una memoria centrale
Una memoria di massa
La memoria centrale deve contiene:

Le istruzioni da eseguire (programma)

I dati su cui il programma opera

I risultati prodotti dallelaborazione


La memoria centrale si interfaccia con:

La CPU

I dispositivi di input e output

Le memorie di massa

La CPU esegue sulla memoria centrale operazioni di load e di store, che richiedono un
tempo di accesso superiori ai tempi necessari alle elaborazione che avvengono nella
CPU. Per compensare tale differenza, tra memoria centrale e CPU interposta una
memoria cache, che fa da buffer per il trasferimento di informazioni tra CPU e
memoria centrale.
La memoria cache realizzata a due livelli: un primo L1 interno alla PCU, un secondo
L2 esterno, con memorie di solito pi lente rispetto a quelle della L1 (4 -5 volte), ma
sempre pi veloci (20 -30 volte) della memoria centrale.
La memoria di massa una memoria ausiliarie caratterizzata da unelevata capacit.
Essa non comunica direttamente con la CPU, ma le informazioni devono prima
transitare nella memoria centrale.
Per quanto riguarda le tecnologia di realizzazione:
la memoria centrale di tipo elettronico (circuiti flip flop a semiconduttori)
le memorie di massa sono di tipo magnetico o ottico) con tempi di accesso maggiori.
Per compensare tale differenza nei tempi di accesso, lo scambio di informazioni fra
memoria centrale e memoria di massa avviene tramite un apposito buffer.
Si stabilisce quindi tra le memorie una gerarchia con:
tempi di accesso crescenti, capacit di accesso, costo decescente, a partire dalla CPU

38. Domanda Le memorie RAM e ROM


Si tratta quindi di memorie RAM (); in effetti comunemente con il termine RAM si
intendono (impropriamente) solo memorie di tipo volatili, ossia che perdono le
informazioni che si perdono quando si spegne il computer.
Pi precisamente le memorie di un elaboratore possono classificarsi secondo:
1.
le modalit di accesso:
a.
casuale, quando il tempo di accesso dipende dalla posizione (RAM
=Random Access Memory)
b.
sequenziale, quando il tempo di accesso non dipende dalla posizione
2.
le operazioni possibili:
a.
lettura e scrittura
b.
solo lettura (ROM= Read Only Memory)
3.
alterabilit (a seconda cio se conservano o non le informazioni allo
spegnimento del sistema):
a.
memorie volatili
b.
memorie permanenti, necessariamente di tipo ROM
40. Domanda: Clock
Le operazioni che svolgono i componenti del modello di Von Neumann (figura)
vengono sincronizzate tramite un orologio interno (clock).
Il clock produce un segnale periodico costituito da unonda quadra di periodo fisso, la
cui frequenza fornisce la cadenza temporale per lesecuzione delle operazione
elementari.
La velocit di elaborazione della CPU (numero di operazioni elementari al secondo)
sono legate alla frequenza del clock.

41. Domanda: Firmware, software e middleware

Le moderne CU sono realizzata in logica microprogrammata: ad ogni istruzione


corrisponde una sequenza di microistruzioni (conservate in una memoria interna alla
CU), che generano i segnali di attivazione dei dispositivi che attuano listruzione.
Linsieme dei microprogrammi composti da tali microistruzioni si chiama firmware.
(disegno)
Linsieme di tutti i programmi del computer si chiama software.
In particolare si parla di
software applicativo: quando si parla di programmi per la soluzione di specifici
problemi degli utenti.
software di base: quando si parla di programmi che garantiscono la gestione
delle risorse hardware (sistemi operativi e traduttori dei linguaggi di
programmazione).
Il middleware costituito da programmi che consentono ad un software applicativo di
funzionare con diversi sistemi operativi.
43. Calcolabilit e trattabilit degli algoritmi
Un algoritmo calcolabile se in grado di risolvere il problema assegnato
indipendentemente dallautoma che lo esegue.
Lalgoritmo per lelaborazione Y=f(X) pu, quando possibile, essere rappresentato da
una macchina di Turing che si arresti e trasformi un nastro t (che codifica X) in t (che
codifica Y).
dimostrato che esistono funzioni non calcolabili dalla MdT.
Secondo la tesi di Church non esiste un formalismo (ossia n una macchina reale o
teorica) che possa calcolare una funzione non calcolabile con la MdT.
Pertanto esistono problemi che per loro natura non sono risolvibili da alcuna macchina
fino ad ora costruita.
Un algoritmo quando trattabile eseguibile da un sistema informatico con limpiego di
risorse e tempi ragionevoli.
Nello studio della trattabilit di un algoritmo bisogna in effetti considerare due tipi di
complessit computazionale:
la complessit spaziale, connessa alla quantit di memoria richiesta
la complessit temporale, relativa al tempo necessario per produrre la soluzione.
Le grandi capacit di memoria disponibili nei moderni calcolatori ha ridimensionato il
problema della complessit spaziale
Per quanto riguarda la complessit temporale, essa viene espressa da una funzione di
costo f = f (n), in cui il tempo di elaborazione viene espresso in funzione della
dimensione n dei dati di input.
Le funzioni a cui si perviene sono in genere di tipo:
polinomiale f(n) = nk
esponenziale f(n) = kn
Nel primo caso il problema si ritiene trattabile, nel secondo, poich i tempi crescono
fino a diventare proibitivi, il problema viene considerato non trattabile.
47. Sequenza statica e dinamica degli algoritmi (illustrare con un esempio)
Lesecuzione di un algoritmo consiste in una successione di azioni da effettuare nel
tempo.
La descrizione di tale processo si definisce sequenza di esecuzione dinamica.

Il numero di azioni che costituisce la sequenza dinamica secondo cui si sviluppa un


algoritmo dipende dai dati da elaborare; nel caso di un processo ciclico, esse possono
anche risultare infinite e il programma in questo caso non ha terminazione.
Il programma, ossia la descrizione dellalgoritmo in un linguaggio di programmazione,
costituisce invece la sequenza statica delle istruzioni.
Ad una sequenza statica corrispondono una molteplicit di sequenze dinamiche; quella
che di volta in volta effettivamente si realizza dipende dai dati vengono elaborati.
Quando in un programma (sequenza statica) si utilizza un enunciato selettivo, si
determina una molteplicit di sequenze dinamiche a senconda dellazione elaborativa
selezionata in base ai dati inseriti.
Ad esempio nellalgoritmo della soluzione dellalgoritmo di secondo grado, in base al
segno del discriminante, si avr una differenza sequenza dinamica.

48. Il processo di traduzione dei programmi in linguaggio macchina


La conversione del testo di un programma (testo sorgente o origine) in operazioni
eseguibili dalla macchina reale pu avvenire mediante un apposito programma
traduttore, che viene chiamato:
Compilatore: il testo sorgente vieni prima convertito integralmente in linguaggio
macchina (generando un programma oggetto) che viene poi eseguito dalla
macchina reale.
Quando il linguaggio sorgente lAssembler (che un linguaggio molto prossimo al
linguaggio macchina, il traduttore detto assemblatore.
Interprete: ogni istruzione del testo sorgente viene di volta in volta interpretata
ed eseguita direttamente dalla macchina reale (non viene creato nessuno
programma in linguaggio macchina)
Il processo dalla scrittura del programma fino allesecuzione il seguente:
50. Domanda:
evoluzione

principali

caratteristiche

dei

sistemi

operativi

loro

Il sistema operativo un insieme organico di programmi che consentono di gestire


tutte le risorse hardware e software dellelaboratore.
S.O. costituisce linterfaccia tra gli utenti ed lelaboratore che quindi vista dal
programmatore e dallutilizzatore come una macchina astratta.
Un efficiente S.O. deve offrire:
un ambiente di lavoro amichevole
elevata efficienza ossia:
o rendere massimo il numero di programmi eseguiti dellunit di tempo
=> through put.
o rendere minimo il tempo che intercorre tra lintroduzione dei dati di
ingresso e la presentazione i risultati => tourn around time.
Tali caratteristiche in contrasto tra loro; pertanto stato modificato il modello
originario di Van Neumann, creando periferiche con funzionamento autonomo e in
grado di segnalare la terminazione della propria attivit dotandola di un processore
dedicato che gestisce le operazioni di ingresso e uscita.
Per consentire:

la condivisione del calcolatore da parte di pi utenti


Prevenire guasti
si introduce la condizione di Sovraccarico gestionale (overhead), concedendo tempo di
esecuzione e risorse al S.O.
Anni 40
I sistemi operativi sono inesistenti.
I programmi sono:
Scritti direttamente in linguaggio macchina
caricati in memoria e avviati delloperatore tramite schede perforate.
Il rilievo delle anomalie effettuato tramite il dump (stampa) dei registri di memoria.
La CPU rimane inattiva:
durante le operazioni di I/O
tra lesecuzione di un programma ed un altro.

Anni 50
Viene prodotto il primi S.O. IBM 701.
I tempi di inattivi della CPU vengono ridotti:
o
caricando insieme pi programmi in gruppi (batch) su supporto
magnetico.
o Gestendo tramite un opposito linguaggio JCL (Job Control Language)
Anni 60
Attraverso la multiprogrammazione si eliminano i tempi morti della CPU durante le
operazione di I/O. Ci reso possibile
dallintroduzione di processori in grado di gestire autonomamente le operazione
di I/O
dalla tecnica delle interruzioni
Anni 60 70
Il grado di multiprogrammazione viene ottimizzata mediante la tecnica dello
swapping, che estende la memoria virtuale dellutilizzatore
Anni 70
Sistemi Time sharing (sistemi multi utente): la CPU assegna in successione quanti di
tempo (time slice) ad ogni utente, consentendo a questi di accedere direttamente e
contemporaneamente ai programmi in esecuzione.
Ci determina:
un miglioramento del throughput complessivo
un peggioramento del tourn around time
Anni 80
Si sviluppano S.O.
per pc
transazionali, ossia per particolare dedicati a particolare applicazioni
Anni 90 2000
Si sviluppano S.O.

real-time che interagiscono con periferiche che richiedono minimi tempi di


risposta
SO multiprocessore: ossia in grado di gestire pi processori
SO Distribuiti: ossia in grado di distribuire pi macchine diversamente
localizzate

Anni 2000
ad oggi S.O. per dispositivi mobili (palmari, cellulari) con interfacia grafica evoluta e
risparmio energetico.
51. Domanda: il kernel
Un processo una sequenza di istruzioni da eseguire da parte della CPU.
In un sistema multriprogrammato in memoria risiedono pi processi, che risultano
quindi concorrenti, ossia si contendono le stesse risorse (CPU, memoria, input,
output).
Il sistema operativo deve pertanto risolvere problematiche quali:
Interferenza tra processi.
Competizione, che rallenta lesecuzione dei processi.
Cooperazione, tramite uno scambio messaggi tra i processi che ne consente la
sincronizzazione.
Affinch il sistema operativo possa gestire un sistema multiprogrammato, esso deve
acquisire prima dellesecuzione di ciascun processo, il descrittore del processo che
un record contenente le informazioni necessarie per definire il processo e il suo stato.
La componente del sistema operativo che gestisce i processi il kernel.
Le sue funzionalit sono:
creazione dei processi (allinterno del sistema operativo), ad esempio tramite
- le primitive di fork che generano un nuovo processo (figlio) per svolgere
determinate operazioni.
- le primitive di join che consentono al processo padre di sincronizzarsi con i
processi figli.
Sincronizzazione dei processi: consente di risolvere i problemi di cooperazione,
competizione ed interferenza.
I sistemi operativi seguono due modelli:
o a memoria comune: i diversi processi accedono a risorse comuni
(hardware e software) che si trovano in un'unica memoria condivisa.
Per la gestione di tali risorse, si ricorre ad un semaforo, ossia di
apposite procedure in grado di regolare laccesso alle risorse.
o a scambio di messaggi: ciascun processo genera primitive in grado di
realizzare un reciproco scambio di messaggi (send e receive).
Schedulind (schedulatore) dei processi: consente di scegliere quali processi
devono essere assegnati alla CPU ed ha lo scopo di ottimizzare i parametri
caratteristici di un sistema operativo (troughput, tourn around time, tempo di
attesa e tempo di risposta).
Gli algoritmi di scheduling si basano su una strategia di:
FIFO primo processo in coda il primo ad essere servito oppure, se esistono pi
code di processi, vengono serviti sulla base della priorit.
SJF (short job first): sono serviti i processi che durano di meno.
I processi possono trovarsi nello stato di
- Running: sono in esecuzione,

Ready: sono pronti per lesecuzione,


waiting: sono in attesa di qualche evento (es la fine di un operazione di I/O),
per diventare prima ready e poi running.

Lesecuzione dei processi pu essere realizzata con la tecnica:


dello time sharing (esecuzione ciclica di pi processi da parte della CPU,
assegnando a ciascuno di essi un time slice).
Real time, da applicare a sistemi che esigono tempi minimi di risposta.
Domanda: Gestore della memoria
il componente del S.O. che si occupa dellallocazione e della deallocazione dei
processi in memoria.
Nellarchitettura del S.O. il gestore della memoria occupa il livello immediatamente
superiore al kernel.
Un S.O. :
Monoprogrammato: se un solo processo viene allocato in memoria
Multiprogrammato: se pi processi vengono allocati in memoria, anche se uno
alla volta viene eseguito.
Affinch lo spazio non arrivi in saturazione, il gestore della memoria attua la tecnica
dello Swapping:
quando i processi sono nella stato di waiting si trasferiscono i processi dalla
memoria centrale a quella di massa => swap out
quando i processi sono nella stato di ready si trasferiscono i processi dalla
memoria di massa a quella centrale => swap in.
Lo scopo della swapping quello di lavorare con un numero di processi attivi maggiore
di quello consentito dalle dimensioni effettive della memoria, aumentando il grado di
multiprogrammazione.
Per gestione della memoria, i moderni S.O. adoperano la tecnica basate sulla memoria
virtuale ossia sulla condizione che il S.O contenga nella memoria centrale solo le parti
del programma in uso e che il resto sia allocata nella memoria di massa.
Tale tecniche sono
Paginazione: sia il processo (programma) che la memoria centrale sono suddivisi in
pagine di dimensione fissa:
- la memoria fisica in blocchi di frame (o pagine fisiche),
- il processo in blocchi detti pagine (o pagine logiche).
Allesecuzione del processo vengono caricate le pagine nei frame.
Se il numero di pagine logiche maggiore del numero di pagine fisiche disponibili, il
programma verr caricato in memoria parzialmente.
La gestione delle pagine compito del sistema operativo mentre, la corrispondenza
tra indirizzo logico e ad indirizzo fisico viene gestita da un dispositivo hardware MMU.
Segmentazione: sia il processo (programma) che la memoria centrale sono divisi in
porzioni (segmenti) a lunghezza variabile.
- la memoria fisica in frame (o segmenti fisici),
- il processo in segmenti (o segmenti logici).
Allesecuzione del processo vengono caricati i segmenti logici nei frame.
Se il numero di segmenti logici maggiore del numero di segmenti fisici disponibili, il
programma verr caricato in memoria parzialmente.
La gestione dei segmenti compito del sistema operativo mentre, la corrispondenza
tra indirizzo logico e ad indirizzo fisico viene gestita da un dispositivo hardware MMU.

Se durante lesecuzione di un programma viene fatto riferimento ad unistruzione non


presente fra le pagine caricate in memoria, (condizione di page fault) e il sistema
operativo produce :
larresto del sistema,
leventuale eliminazione dei una pagina residente (selezionata tramite un
algoritmo di sostituzione) per liberare lo spazio in memoria centrale,
il caricamento della pagina mancante
la ripresa del sistema
Domanda: file system
Gestisce:
la locazione dei file sulla memoria di massa
le informazioni necessarie per consentire lesecuzione delle operazioni su tali
file.
Organizza la memoria di massa in insiemi di:
file, che contengono i dati veri e propri.
directory, ciascuna costituito da un array i cui record (descrittori di file)
contengono informazioni tra le quali:
o nome simbolico del file,
o tipo del file,
o locazione
o data e ora.
Operazioni su file gestite dal file system:
a livello di directory:
o Creazione
o Cancellazione
o Visualizzazione
A livello di file:
o Apertura
o Chiusura
o Scrittura
o Lettura
o Reset

I metodi di accesso ai file sono:


o Accesso sequenziale
o Accesso diretto
o Mediante indice

Modalit di allocazione dei file sul disco sono:


o Contigua (il descrittore contiene lindirizzo del blocco iniziale e il numero dei
blocchi occupati).
o Linkata (il descrittore contiene lindirizzo del blocco iniziale e ciascun blocco
contiene il puntatore del blocchi successivo).
o Indicizzata (il descrittore contiene lindirizzo di un blocco indice che contiene
i puntatori a tutti il blocchi del file).

54. Domanda: shell


il componente che permette agli utenti di comunicare e impartire comandi al
sistema (tramite lapposito linguaggio JCL).
La shell crea un ambiente di lavoro che pu essere di tipo:

testuale: in cui il programma presenta un interfaccia a linea di comando,


grafici: graphic user interface con icone e finestre che richiede maggiori
risorse di calcolo del computer.

64. domanda: La programmazione strutturate: strutture fondamentali


Le strutture di controllo indica allesecutore lordine in cui devono essere eseguite le
istruzioni.
Si hanno tre tipi di costrutti di controllo: costrutti di
SEQUENZA
Delimitatore iniziale
istruzione A;
istruzione B;
.;
istruzione Z;
Delimitatore finale

CONDIZIONALE
If (condizione)
Then istruzione a
Else istruzione b

Case (espressione)
Valore 1: istruzione 1
Valore 2: istruzione 2
..
Valore n: istruzione n
end

While (condizione)
Do
Istruzione 1
Istruzione 2
..
istruzione m
COSTRUTTI ITERATIVI
For i: i1 to i1
Istruzione 1
Istruzione 2
.
istruzione m
end

65. domanda: La programmazione strutturate: ciclo di vita del software


Analisi dei bisogni dellutente e definizione dei requisiti del sistema;
Disegno dei sistema informativo
Programmazione (disegno e codifica dellalgoritmo)
Verifica
Uso e manutenzione
(cos come in figura pag. 114)
Sistemi informativi ed informatici
Studio di fattibilit

Raccolta ed analisi dei requisiti


Progettazione
Implementazione e test dei componenti
Integrazione, validazione e collaudo
Esercizio e manutenzione