che cos’è un processo? per processo si intende un'istanza di un programma in esecuzione in...

22
I PROCESSI

Upload: francesco-venturini

Post on 02-May-2015

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Che cos’è un processo?  Per processo si intende un'istanza di un programma in esecuzione in modo sequenziale. Cioè un'attività controllata da un programma

I PROCESSI

Page 2: Che cos’è un processo?  Per processo si intende un'istanza di un programma in esecuzione in modo sequenziale. Cioè un'attività controllata da un programma

Che cos’è un processo? Per processo si intende un'istanza di

un programma in esecuzione in modo sequenziale. Cioè un'attività controllata da un programma che si svolge su un processore in genere sotto la gestione o supervisione del rispettivo sistema operativo.

Page 3: Che cos’è un processo?  Per processo si intende un'istanza di un programma in esecuzione in modo sequenziale. Cioè un'attività controllata da un programma

Cooperazione e competizione tra processi.

Due o più processi possono interagire fra loro

secondo due modalità: cooperazione e

competizione due processi cooperano se sono logicamente

connessi e ciascuno ha bisogno dell’altro per operare

due processi competono se potrebbero evolvere indipendentemente, ma entrano in conflitto sulla ripartizione di risorse

Page 4: Che cos’è un processo?  Per processo si intende un'istanza di un programma in esecuzione in modo sequenziale. Cioè un'attività controllata da un programma

Stati di un processoGli stati in cui un processo si può trovare sono:

Nuovo : stato transitorio durante il quale il processo viene caricato in memoria e il SO inizializza i dati che lo rappresentano;

esecuzione : il processo ha il controllo di un processore; pronto : il processo è pronto ad essere eseguito, ed è in

attesa che lo scheduler lo metta in esecuzione; In attesa: il processo ha eseguito una 

chiamata di sistema ed è fermo in attesa del risultato; Terminazione: stato transitorio relativo alla fase di

terminazione e deallocazione del processo dalla memoria;

Page 5: Che cos’è un processo?  Per processo si intende un'istanza di un programma in esecuzione in modo sequenziale. Cioè un'attività controllata da un programma

Grafico:

Page 6: Che cos’è un processo?  Per processo si intende un'istanza di un programma in esecuzione in modo sequenziale. Cioè un'attività controllata da un programma

Proprietà dei processiEsistono due aspetti differenti di un processo: Il processo è un’unità di allocazione di risorse:

-memoria per l’immagine del processo

-controllo su altre risorse esterne (dispositivi I/O, file, …) Il processo è un’unità di esecuzione:

-identifica un flusso di esecuzione attraverso uno o più programmi

- l’esecuzione può essere intervallata / sincronizzata con quella di altri processi

-un processo ha uno stato di esecuzione e alcuni attributi che ne determinano le modalità di esecuzione (es. priorità)

Page 7: Che cos’è un processo?  Per processo si intende un'istanza di un programma in esecuzione in modo sequenziale. Cioè un'attività controllata da un programma

Proprietà dei processi

Per “alleggerire” la gestione dei processi separiamo questi due aspetti di un processo:

L’unità di esecuzione è identificata dal concetto di

Thread. L’unità di allocazione delle risorse è identificata dal

concetto di processo. Con i thread si introduce una struttura di

esecuzione più articolata, basata su:

- condivisione di risorse;

- differenziazione del flusso di esecuzione all’interno di un unico processo;

Page 8: Che cos’è un processo?  Per processo si intende un'istanza di un programma in esecuzione in modo sequenziale. Cioè un'attività controllata da un programma

LE RISORSE

Abbiamo detto che i processi sono programmi in evoluzione e per poter evolvere hanno bisogno delle risorse del sistema di elaborazione.•Un RISORSA è tutto ciò che serve per l’avanzamento di un processo. Essa può essere sia hardware che software (ad esempio un file, una cartella, la stampante).

Le risorse possono essere suddivise in classi e le risorse che fanno parte della stessa classe vengono chiamate ISTANZA DI UNA CLASSE mentre il numero di risorse che contiene quella classe viene detto MOLTEPLICITÀ DELLA RISORSA.

Page 9: Che cos’è un processo?  Per processo si intende un'istanza di un programma in esecuzione in modo sequenziale. Cioè un'attività controllata da un programma

Thread

Un thread  è una suddivisione di un processo in due o più filoni o sottoprocessi, che vengono eseguiti concorrentemente da un sistema di elaborazione monoprocessore o multiprocessore . Un thread è una unità di impiego di CPU all’interno di un processo.

Un processo può contenere più thread, ciascuno dei quali evolve in modo logicamente separato dagli altri thread.

Page 10: Che cos’è un processo?  Per processo si intende un'istanza di un programma in esecuzione in modo sequenziale. Cioè un'attività controllata da un programma

SINGLE TREADING VS MULTITHREADING

In base alla capacità di un sistema di gestire a livello KERNEL i thread, distinguiamo quattro possibili scenari:I. Singolo processo e thread singolo ( Es. MS-DOS un solo processo

utente e un unico thread);II. Singolo processo e thread multiplo per processo( Es. UNIX più processi

utente ciascuno con un unico thread);III. Processo multiplo e thread singolo per processo( Es. Java un solo

processo, più thread);IV. Processo multiplo e thread multiplo per processo(Es. Linux, Windows,

Solaris più processi utente ciascuno con più thread);

Page 11: Che cos’è un processo?  Per processo si intende un'istanza di un programma in esecuzione in modo sequenziale. Cioè un'attività controllata da un programma

SINGLE TREADING VS MULTITHREADING

Page 12: Che cos’è un processo?  Per processo si intende un'istanza di un programma in esecuzione in modo sequenziale. Cioè un'attività controllata da un programma

PROGRAMMA SEQUENZIALE: specifica l'esecuzione sequenziale di una lista di istruzioni. La sua esecuzione e' un processo.

PROGRAMMA CONCORRENTE: specifica due o più programmi sequenziali che possono essere eseguiti concorrentemente come processi paralleli.

Programma sequenziale e concorrente

Page 13: Che cos’è un processo?  Per processo si intende un'istanza di un programma in esecuzione in modo sequenziale. Cioè un'attività controllata da un programma

Cos’è il fork?

Un fork , indica lo sviluppo di un nuovo progetto software che parte dal codice sorgente di un altro già esistente.

Il fork() consente a un processo di generare un processo figlio:

- Padre e figlio condividono lo stesso codice;

- Il figlio eredita una copia dei dati (di utente e di kernel) del padre;

Page 14: Che cos’è un processo?  Per processo si intende un'istanza di un programma in esecuzione in modo sequenziale. Cioè un'attività controllata da un programma

Che cos’è il processo padre? Un processo padre è un processo che ha

creato uno o più processi figli. Nei sistemi operativi ogni processo è

creato quando un altro processo esegue la chiamata di sistema fork().

Il processo che invoca fork() è detto processo padre, mentre il nuovo processo è detto processo figlio. Ciascun processo ha un processo padre, e può avere zero o più processi figli.

Page 15: Che cos’è un processo?  Per processo si intende un'istanza di un programma in esecuzione in modo sequenziale. Cioè un'attività controllata da un programma

Che cos’è il processo figlio? Un processo figlio è un processo che è

stato creato da un altro processo, detto processo padre.

Nei sistemi operativi un processo figlio è creato (usando la chiamata di sistema fork) come un duplicato del processo padre, da cui eredita una copia di molti degli attributi.

Ciò permette di organizzare i processi del sistema in una gerarchia, in cui ogni processo ha un processo padre o più processi figli.

Page 16: Che cos’è un processo?  Per processo si intende un'istanza di un programma in esecuzione in modo sequenziale. Cioè un'attività controllata da un programma

Modello a memoria comuneIl sistema è visto come un insieme: Processi Oggetti(risorse)

O1 , O4 risorse

private

O2 , O3 risorse

comuni

Page 17: Che cos’è un processo?  Per processo si intende un'istanza di un programma in esecuzione in modo sequenziale. Cioè un'attività controllata da un programma

Il modello a memoria comune rappresenta la naturale astrazione del funzionamento di un sistema in multiprogrammazione costituito da uno o più processori che hanno accesso ad una memoria comune

Ad ogni processore può essere associata una memoria privata, ma ogni interazione avviene tramite oggetti contenuti nella memoria comune.

Page 18: Che cos’è un processo?  Per processo si intende un'istanza di un programma in esecuzione in modo sequenziale. Cioè un'attività controllata da un programma

Il modello a scambio di messaggio

Ciascun processo evolve in un proprio ambiente che non può essere modificato direttamente da altri processi. Quindi non esiste memoria condivisa e le risorse sono tutte private. Pertanto:

non esiste la competizione per l’uso delle risorse non esistendo risorse comuni

la cooperazione si realizza mediante lo scambio diretto di messaggi per mezzo di primitive che il S.O. deve rendere disponibili. Il naturale supporto fisico al modello sono i sistemi di elaborazione con architettura distribuita

Page 19: Che cos’è un processo?  Per processo si intende un'istanza di un programma in esecuzione in modo sequenziale. Cioè un'attività controllata da un programma

Mutua esclusione Il problema della mutua esclusione nasce

quando più di un processo alla volta può aver accesso a variabili comuni.

La regola di mutua esclusione impone che le operazioni con le quali i processi accedono alle variabili comuni non si sovrappongano nel tempo.

Nessun vincolo è imposto sull’ordine con il quale le operazioni sulle variabili vengono eseguite.

Page 20: Che cos’è un processo?  Per processo si intende un'istanza di un programma in esecuzione in modo sequenziale. Cioè un'attività controllata da un programma

Affinché sia possibile la mutua esclusione occorrono sei condizioni:

un solo processo o thread accede alla regione critica;

nessun processo può bloccarsi in sezione critica;

evitare deadlock e starvation; nessuna assunzione sulla velocità dei processi; nessun processo fuori dalla sezione critica può

impedire ad un altro di entrare; accesso alla sezione critica consentito in un

tempo definito.

Page 21: Che cos’è un processo?  Per processo si intende un'istanza di un programma in esecuzione in modo sequenziale. Cioè un'attività controllata da un programma

Startvation e Deadlock

Startvation e Deadlock:

Se si scrive un programma in cui diversi thread concorrenti sono in competizione per le risorse, è necessario prendere le dovute precauzioni per garantire l'equità.  Un sistema è giusto quando ogni thread diventa abbastanza l'accesso alle risorse limitate a fare progressi ragionevoli. Un sistema equo impedisce lo startvation e deadlock.

 Lo startvation si verifica quando uno o più thread nel programma sono bloccati di avere accesso ad una risorsa e, di conseguenza, non può fare progressi.

Il Deadlock  , si verifica quando due o più thread sono in attesa di una condizione che non può essere soddisfatta. Il Deadlock spesso si verifica quando due o più thread sono in attesa di fare qualcosa.

Page 22: Che cos’è un processo?  Per processo si intende un'istanza di un programma in esecuzione in modo sequenziale. Cioè un'attività controllata da un programma

Fine