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.
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
Stati di un processo
Gli 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;
Grafico:
Proprietà dei processi
Esistono 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à)
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;
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.
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.
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);
SINGLE TREADING VS MULTITHREADING
Programma sequenziale e
concorrente
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.

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;

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.

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.

Modello a memoria comune
Il sistema è visto come un insieme:
 Processi
 Oggetti(risorse)
O1 , O4 risorse
private
O2 , O3 risorse
comuni

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.
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
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.

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.
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.

Fine
Scarica

processo figlio - Il forum di totto