prima di iniziare… durata attività: due lezioni frontali + una lezione laboratorio + compiti per...

Post on 02-May-2015

217 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

EsempioCodifica in linguaggio di programmazione dell’algoritmo che calcola l'area di un triangolo dati base ed altezza.

Programa CalcoloAreaVARb, h, area: real; /* base, altezza, area */ BEGINwriteln(“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!)

Programa CalcoloAreaVARb, h, area: real; /* base, altezza, area */ BEGINwriteln(“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

I programmi vanno quindi scritti rispettando le regole (sintassi e semantica) del particolare linguaggio di programmazione scelto!

Errore!

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

Calcolatore

Sistema operativo

Processo

o Ogni processo è identificato da un PID (Process Identifier)

o Entità dinamica (vedi program counter) che per eseguire il proprio compito necessita di alcune risorse (tempo cpu, memoria, file, dispositivo di I/O)

o Un processo include:• 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

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

new terminated

ready running

waiting

ammessouscita

dispatch

interrupt

completamento I/Oo verificarsi di un evento

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:

informazioni periferiche in uso, file aperti, …

program counterstato del processoPID

registri di CPU

informazioni sulla priorità del processo

informazioni sulla memoria del processo

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 discoL'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

P6

P1

P2 P3

P5

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

Suggerimento: comandi ps e top con relative opzioni

E se siamo su …?

top related