Prima di iniziare…
•
•
Durata attività: due lezioni frontali + una lezione
laboratorio + compiti per casa
Prerequisiti:
•
elementi base architettura dei calcolatori
•
concetto di algoritmo, struttura dati coda
•
conoscenza base linguaggio di programmazione
•
cosa è un sistema operativo
•
shell comandi linux
Test preliminari
1.
In architettura degli elaboratori con PC si indica:
a)
personal computer
b)
program counter
c)
power controller
2. I diagrammi di flusso servono per:
a)
descrivere algoritmi
b)
scrivere programmi
c)
per entrambe le precedenti
Test preliminari
3. Cosa è un sistema operativo:
a)
parte dell’hardware del computer
b)
insieme di componenti software
c)
il desktop che appare all’accensione del pc
Task manager
Programma
Insieme di istruzioni che eseguite su un
computer/calcolatore produce soluzioni
per una data classe/insieme di problemi
Programma
Esempio
Codifica in linguaggio di programmazione dell’algoritmo
che calcola l'area di un triangolo dati base ed altezza.
Programa CalcoloArea
VAR
b, h, area: real; /* base, altezza, area */
BEGIN
writeln(“Inserisci la misura base in cm”);
readln(b);
writeln(“Inserisci la misura altezza in cm”);
readln(h);
area = (b * h) / 2;
writeln(area);
END.
Programma
Programma quindi…
tecnicamente è la codifica di un algoritmo in un
certo linguaggio di programmazione realizzata da
un programmatore (quindi da voi!)
Programma
I programmi vanno quindi scritti rispettando le
regole (sintassi e semantica) del particolare
linguaggio di programmazione scelto!
Programa CalcoloArea
VAR
b, h, area: real; /* base, altezza, area */
BEGIN
writeln(“Inserisci la misura base in cm”);
readln(b);
writeln(“Inserisci la misura altezza in cm”);
readln(h);
Errore!
area = (b * h) / 2;
writeln(area);
END.
Programma
Compilazione
areaTriangolo.pas
eseguibile
Processo
Un processo (o job o task) è un'istanza di un
programma in esecuzione in modo sequenziale (una
istruzione per volta!):
rappresenta per il sistema una specifica esecuzione di
un programma
Sistema operativo
Calcolatore
Processo
o
Ogni processo è identificato da un PID (Process Identifier)
o
Un processo include:
•
•
•
•
•
o
sezione codice/testo
program counter (indirizzo prossima istruzione da eseguire)
registri del processore
stack con dati temporanei (parametri di funzioni, variabili
temporanee, …)
sezione dati con variabili globali
Entità dinamica (vedi program counter) che per eseguire il
proprio compito necessita di alcune risorse (tempo cpu,
memoria, file, dispositivo di I/O)
Stato processo
Durante l’esecuzione un processo subisce dei
cambiamenti di stato che può essere:
new/nuovo: il processo viene creato
•
running/esecuzione: il processore sta eseguendo le
istruzioni del processo (ricorda: su ciascun processore può
essere running/esecuzione solo un processo per volta)
•
•
•
•
waiting/bloccato: il processo è in attesa di qualche evento
(come il completamento di un I/O)
ready/pronto: il processo è pronto per essere eseguito
terminated/terminato: il processo ha terminato l'esecuzione
Diagramma stati processo
terminated
new
ammesso
uscita
interrupt
ready
completamento I/O
o verificarsi di un
evento
running
dispatch
waiting
attesa I/O o
di un evento
Process Control Block (PCB)
Ogni processo è rappresentato nel sistema da una
struttura, unica per ogni processo, detto PCB:
PID stato del processo
program counter
registri di CPU
informazioni sulla priorità del processo
informazioni sulla memoria del processo
informazioni periferiche in uso, file aperti, …
…
Tipi di processi
I processi possono essere classificati come:


processi I/O bound – basso uso della CPU e elevato
uso dell’I/O (es. text editor)
processi CPU bound – elevato uso della CPU e
basso uso dell’I/O (es. programmi di calcolo
matematico, compilatore)
Scheduling processi
Multiprogrammazione: esecuzione contemporanea di
più processi per massimizzare l'utilizzo della CPU
Timesharing: commutare la CPU tra i processi così
frequentemente che gli utenti possano interagire con
ogni programma mentre è in esecuzione
Context switch/commutazione
•
•
Context switch: operazione di passaggio della CPU
da un processo all’altro (salvataggio stato processo
vecchio e caricamento stato processo nuovo)
Il tempo di context switch è un costo: il sistema non
effettua lavoro utile per nessun processo utente
Code di scheduling
Problema:
Sistema con singolo processore →
in esecuzione un processo per volta →
i processi pronti per l'esecuzione
devono aspettare che la CPU sia libera
Code di scheduling
Il sistema tiene traccia dei vari processi usando delle
code di processi
Ready queue: processi pronti per l'esecuzione (manca solo la CPU)
Coda dispositivo: un processo in esecuzione vi rimane per un dato tempo
e prima o poi esce, viene interrotto, o si mette in attesa di un particolare evento
(completamento di I/O, ...).
Una richiesta di I/O può essere diretta ad un dispositivo condiviso (es. disco).
Molti processi in esecuzione -> il disco può essere occupato con la richiesta di I/O
di un altro processo -> il processo deve attendere il disco
L'elenco dei processi in attesa di un particolare dispositivo di I/O è chiamato
coda del dispositivo. Ogni dispositivo ha la propria coda.
Operazione sui processi
•
I processi vengono eseguiti concorrentemente (si
contendono le risorse) e devono essere creati ed
eliminati dinamicamente:
il sistema offre un meccanismo per creare ed eliminare
un processo
Operazione sui processi
•
I processi vengono eseguiti concorrentemente (si
contendono le risorse) e devono essere creati ed
eliminati dinamicamente:
il sistema offre un meccanismo per creare ed eliminare
un processo
Operazione sui processi:
creazione
•
Un processo (padre) può creare altri processi (figli)
che possono crearne altri e così via:
albero dei processi
P1
P2
P3
P5
P6
Operazione sui processi:
terminazione
•
•
Un processo termina eseguendo l’ultima istruzione
e chiede al sistema operativo di essere cancellato
Il padre di un processo ne chiede la terminazione
(compito assegnatogli non più richiesto, ha usato
risorse in eccesso, …)
In entrambi i casi le risorse del processo sono
deallocate dal sistema operativo
Task manager
Un po’ di pratica…
1.
Avviate il browser che usate per navigare su Internet
2. Accedete al task manager
Task manager
Provate a rispondere alle seguenti domande:
1.
Qual è il pid assegnato al processo?
2. Quant’è il tempo di cpu utilizzato dal processo?
3. Che priorità ha il processo?
4. Qual è il percorso/path del programma a cui è associato?
5. Quanta memoria sta usando il processo?
6. Come posso terminare il processo?
Task manager
E se siamo su …?
Suggerimento: comandi ps e top con relative opzioni