Il 0% ha trovato utile questo documento (0 voti)
14 visualizzazioni6 pagine

1-Processi Concorrenti

Caricato da

mattia.cinti07
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
14 visualizzazioni6 pagine

1-Processi Concorrenti

Caricato da

mattia.cinti07
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 6

Processi sequenziali e paralleli

LEZIONE 1

I PROCESSI

B
IN QUESTA LEZIONE IMPAREREMO...
i modelli di elaborazione dei processi
Il ciclo di vita dei processi

• Il modello a processi
N o n o s t a n t e l ' e v o l u z i o n e t e c n o l o g i c a a b b i a i n c r e m e n t a t o le c a p a c i t à c o m p u t a z i o n a l i grazie a l l ' a u -
m e n t o d e l l a v e l o c i t à delle GPU, l a gestione d e l p r o c e s s o r e a n c o r a oggi deve essere o t t i m i z z a t a per-
c h é spesso p r e s e n t a s i t u a z i o n i d i c r i t i c i t à : t u t t i i m o d e r n i SO c e r c a n o d i s f r u t t a r e a l m a s s i m o le
potenzialità d i parallelismo fisico dell'hardware per m i n i m i z z a r e i t e m p i d i risposta e aumentare i l
t h r o u g h p u t d e l sistema, ossia i l numero di programmi eseguiti per unità di tempo.

I l p r o g r a m m a , c o m p o s t o da u n i n s i e m e d i b y t e c o n t e n e n t e le i s t r u z i o n i c h e d o v r a n n o essere ese-
guite, è u n ' e n t i t à p a s s i v a finché n o n viene caricato i n m e m o r i a e m a n d a t o i n esecuzione: diviene
u n processo c h e evolve m a n m a n o c h e le i s t r u z i o n i v e n g o n o eseguite d a l l a GPU, c i o è si t r a s f o r m a
in un'entità attiva,

Possiamo d a r e c o m e d e f i n i z i o n e s i n t e t i c a d i processo q u e l l a r i p o r t a t a d i seguito.

PROCESSO
U n p r o c e s s o è un'entità l o g i c a in e v o l u z i o n e .

N e l m o d e l l o a p r o c e s s i t u t t o i l s o f t w a r e c h e p u ò essere eseguito su d i u n c a l c o l a t o r e , c o m p r e s o i l Si-


s t e m a O p e r a t i v o stesso, è o r g a n i z z a t o i n u n c e r t o n u m e r o d i p r o c e s s i s e q u e n z i a l i ( s u c c e s s i v a m e n t e
c h i a m a t i s e m p l i c e m e n t e p r o c e s s i ) : u n u n i c o p r o c e s s o r e p u ò essere c o n d i v i s o t r a p a r e c c h i p r o c e s s i ,
utilizzando u n algoritmo d i schedulazione ( d i scheduling) per determinare quando i n t e r r o m p e r e
l ' e v o l u z i o n e d i u n processo e s e r v i r n e u n a l t r o .

Q u e s t a t e c n i c a d i gestione d e l l a C P U si c h i a m a m u l t i p r o g r a m m a z i o n e , c h e r i c h i e d e l a c o n t e m -
p o r a n e a p r e s e n z a d i più p r o g r a m m i i n m e m o r i a : d a t o c h e l ' e s e c u z i o n e d i u n p r o g r a m m a , q u i n d i

2
I processi Lezione 1

u n processo, è c o s t i t u i t a da u n a successione d i f a s i d i e l a b o r a z i o n e d e l l a G P U e fasi d i attesa p e r


l'esecuzione d i o p e r a z i o n i su a l t r e risorse d e l s i s t e m a ( o p e r a z i o n i d i I/O, d i c a r i c a m e n t o d a t i , d i c o l -
l o q u i o c o n p e r i f e r i c h e ecc.) c h e d i f a t t o lasciano i n a t t i v a l a GPU, l a m u l t i p r o g r a m m a z i o n e p e r m e t t e
l ' e v o l u z i o n e c o n t e m p o r a n e a d i più processi l i m i t a n d o a l m i n i m o i t e m p i m o r t i e s f r u t t a n d o a p p i e n o
le p o t e n z i a l i t à d i c a l c o l o d e l processore.

I
È a n c h e p o s s i b i l e a v e r e in e s e c u z i o n e c o n t e m p o r a n e a m e n t e più i s t a n z e d i u n p r o g r a m m a ,
q u i n d i p i ù p r o c e s s i o r i g i n a t i d a l l o s t e s s o c o d i c e : p e r e s e m p i o si p o s s o n o a v e r e a p e r t e d u e
f i n e s t r e c o n l o s t e s s o p r o g r a m m a in e s e c u z i o n e .

I n o l t r e i processi possono essere i n d i p e n d e n t i o p p u r e c o o p e r a r e p e r raggiungere u n m e d e s i m o


obiettivo:
I n e l p r i m o caso, c i o è d i processi i n d i p e n d e n t i , u n processo evolve i n m o d o a u t o n o m o senza b i s o -
g n o d i c o m u n i c a r e c o n g l i a l t r i processi p e r s c a m b i a r e d a t i ;
> n e l secondo caso, due (o più) processi h a n n o la n e c e s s i t à d i cooperare i n q u a n t o , p e r p o t e r evolve-
re, necessitano d i s c a m b i a r s i i n f o r m a z i o n i . Si p e n s i p e r esempio a u n semplice videogame c o n due
g i o c a t o r i dove ogni giocatore è u n processo: i n questo caso nasce la n e c e s s i t à per i due processi d i
c o o r d i n a r s i p e r p o t e r c o m u n i c a r e e s c a m b i a r s i le i n f o r m a z i o n i ( i processi si d e v o n o s i n c r o n i z z a r e ) .

O l t r e alla c o o p e r a z i o n e e s i s t e u n ' a l t r a f o r m a d i i n t e r a z i o n e t r a p r o c e s s i : d u e (o più) p r o c e s s i


p o s s o n o o s t a c o l a r s i a v i c e n d a c o m p r o m e t t e n d o il b u o n f i n e d e l l e l o r o e l a b o r a z i o n i .
E il c a s o i n c u i e n t r a m b i i p r o c e s s i c o m p e t e p e r u t i l i z z a r e la m e d e s i m a r i s o r s a , c h e m a g a r i
è in quantità limitata n e l s i s t e m a : q u e s t o t i p o d i i n t e r a z i o n e p u ò p o r t a r e a situazioni i n d e s i d e -
r a t e p e r u n o o p e r e n t r a m b i i p r o c e s s i ( b l o c c o i n d i v i d u a l e o criti^ ).

R i a s s u m e n d o , a b b i a m o q u i n d i t r e m o d e l l i d i c o m p u t a z i o n e p e r i processi:
• modello di computazione indipendente;
I modello d i computazione con cooperazione;
• modello di computazione con competizione.

D i a m o u n a d e f i n i z i o n e p e r le d u e u l t i m e s i t u a z i o n i :

PROCESSI COOPERANTI
Un p r o c e s s o è c o o p e r a n t e se influenza o p u ò essere i n f l u e n z a t o d a altri p r o c e s s i in e s e -
c u z i o n e n e l s i s t e m a (un p r o c e s s o c h e c o n d i v i d e d a t i c o n altri processi).

La possibilità d i avere processi che c o o p e r a n o , i n s i n t e s i , è u t i l e p e r o t t e n e r e :


• p a r a l l e l i z z a z i o n e dell'esecuzione ( p e r e s e m p i o m a c c h i n e c o n m u l t i - c p u ) ;
• replicazione d i u n servizio ( p e r e s e m p i o c o n n e s s i o n i d i r e t e ) ;
• m o d u l a r i t à ( d i v e r s i processi p e r f u n z i o n i diverse d i u n a stessa a p p l i c a z i o n e , c o m e p e r e s e m p i o i l
c o r r e t t o r e o r t o g r a f i c o d i W o r d (posso c o n t i n u a r e a s c r i v e r e m e n t r e corregge, c i o è posso c o m p i e r e
più a z i o n i c o n t e m p o r a n e a m e n t e ) .
• condivisione delle i n f o r m a z i o n i .

PROCESSI IN COMPETIZIONE
D u e p r o c e s s i s o n o in c o m p e t i z i o n e se p o s s o n o e v o l v e r e i n d i p e n d e n t e m e n t e m a e n t r a -
n o in c o n f l i t t o sulla r i p a r t i z i o n e d e l l e r i s o r s e .

3
UdA 1 Processi sequenziali e paralleli

L'esempio più s e m p l i c e d i c o m p e t i z i o n e n e l l a m u l t i p r o g r a m m a z i o n e è d a t o d a l l o s c h e d u l i n g d e i
processi, dove t u t t i competono per la CPU; u n ' a l t r a risorsa che è s e m p r e condivisa è la s t a m p a n t e ,
e p e r a c c e d e r v i i processi d e v o n o a t t e n d e r e i n c o d a (competono per la risorsa stampante).

In q u e s t o v o l u m e a n a l i z z e r e m o l e p o s s i b i l i f o r m e d i i n t e r a z i o n e , d e s i d e r a t e e i n d e s i d e r a t e , e
I a f f r o n t e r e m o il p r o g e t t o d i a p p l i c a z i o n i c o n c o r r e n t i s c r i v e n d o n e la c o d i f i c a i n l i n g u a g g i o d i
programmazione.

• Stato dei processi


D u r a n t e i l c i c l o d i v i t a d i u n processo è possibile i n d i v i d u a r e u n i n s i e m e d i s i t u a z i o n i i n c u i i l p r o -
cesso può t r o v a r s i , che d e f i n i r e m o c o m e g l i s t a t i d i u n processo, associati alla sua e v o l u z i o n e e alla
sua " s i t u a z i o n e " r i s p e t t o alla C P U .
V e d i a m o d e t t a g l i a t a m e n t e c o m e può t r o v a r s i u n processo r i s p e t t o a l processore:
I n u o v o (new): è l o stato i n c u i si t r o v a u n processo a p p e n a è stato c r e a t o , c i o è l ' u t e n t e r i c h i e d e
l'esecuzione d i u n p r o g r a m m a che risiede s u l d i s c o ;
I e s e c u z i o n e (running): i l processo sta e v o l v e n d o , n e l senso che la C P U sta eseguendo le sue i s t r u -
z i o n i , e q u i n d i a esso è assegnato i l processore. N e i s i s t e m i a m o n o p r o c e s s o r e ( q u e l l i a n a l i z z a t i i n
questo testo) u n solo processo può essere i n questo stato;
I attesa (waiting): u n processo è n e l l o stato d i attesa q u a n d o g l i m a n c a u n a risorsa p e r p o t e r e v o l -
vere ( o l t r e alla C P U ) e q u i n d i sta aspettando che si v e r i f i c h i u n e v e n t o (per e s e m p i o che si l i b e r i
la risorsa che g l i serve e che i l processore g l i e l a assegni);
I p r o n t o (ready-to-run): u n processo è n e l l o stato d i p r o n t o se h a t u t t e le risorse necessarie alla
sua e v o l u z i o n e t r a n n e la C P U ( c i o è è i l caso i n c u i sta a s p e t t a n d o che g l i venga assegnato i l suo
time-slice d i CPU);
• finito (terminated): s i a m o n e l l a situazione i n c u i t u t t o i l codice d e l processo è stato eseguito e
q u i n d i h a d e t e r m i n a t o l'esecuzione; i l sistema o p e r a t i v o deve o r a rilasciare le risorse che u t i l i z z a v a .

STATO DI UN PROCESSO
C o n s t a t o d i u n p r o c e s s o i n t e n d i a m o q u i n d i u n a t r a le c i n q u e p o s s i b i l i s i t u a z i o n i in c u i
u n p r o c e s s o in e s e c u z i o n e p u ò t r o v a r s i : p u ò a s s u m e r e u n a sola v o l t a lo s t a t o d i e
di " m i n a t o , m e n t r e p u ò essere p e r più v o l t e n e g l i altri t r e stati.

V e d i a m o c o m e è possibile r a p p r e s e n t a r e m e d i a n t e u n g r a f i c o o r i e n t a t o i passaggi che u n processo


esegue t r a i p o s s i b i l i s t a t i sopra d e s c r i t t i : q u e s t o g r a f i c o p r e n d e i l n o m e d i d i a g r a m m a degli s t a t i .

RL

4
Seguiamo o r a l a v i t a d i u n processo d a l p r i n c i p i o : a l n u o v o processo v i e n e assegnato u n i d e n t i f i c a t o -
re ( P I D , Process I D e n t i f i e r ) e v i e n e i n s e r i t o n e l l ' e l e n c o dei processi p r o n t i ( R L , Ready L i s t ) i n attesa
che a r r i v i i l suo t u r n o d i u t i l i z z o d e l l a C P U .

O g n i p r o c e s s o è c r e a t o d a u n a l t r o p r o c e s s o d e t t o " p a d r e " m e n t r e l u i p r e n d e il n o m e d i " f i -


I g l i o " : l ' u n i c a e c c e z i o n e è il p r o c e s s o " i n i t " , c i o è il p r i m o a e s s e r e e s e g u i t o d a l S . O , c h e n o n
ha n e s s u n " p a d r e " . Wr

Q u a n d o g l i v i e n e assegnata l a C P U , i l processo passa n e l l o stato d i e s e c u z i o n e , d a l quale può u s c i r e


per tre m o t i v i :
• t e r m i n a l a sua esecuzione, c i o è i l processo esaurisce i l suo c o d i c e e q u i n d i finisce (exit);
• t e r m i n a i l suo t e m p o d i CPU, c i o è i l suo q u a n t o d i t e m p o , e q u i n d i r i t o r n a n e l l a l i s t a d e i processi
p r o n t i R L (ready list);
• per p o t e r evolvere necessita d i u n a risorsa c h e a l m o m e n t o n o n è d i s p o n i b i l e : i l processo si sospen-
de (suspend) e passa nello stato d i attesa, i n s i e m e a d a l t r i processi, f o r m a n d o l a w a i t i n g l i s t W L .

Q u i n d i d u r a n t e l ' e v o l u z i o n e i l processo può t r o v a r s i i n u n o d e i seguenti t r e s t a t i :


I i n esecuzione ( r u n n i n g ) ;
I pronto (ready);
I s o s p e s o ( w a i t i n g ) , a n c h e d e t t o b l o c c a t o ( b l o c k e d ) , c h e è l o stato i n c u i si t r o v a q u a n d o n o n può
o t t e n e r e l a C P U a n c h e se q u e s t a è l i b e r a , p o i c h é è i n attesa d i q u a l c h e e v e n t o e s t e r n o o risorsa
che a l m o m e n t o n o n è d i s p o n i b i l e .

Dallo stato d i sospeso, cioè d a l l o stato d i attesa, u n processo p u ò passare in q u e l l o d i


e s e c u z i o n e : i n f a t t i , q u a n d o si r e n d e d i s p o n i b i l e la r i s o r s a c h e s t a " a s p e t t a n d o " , v i e n e s p o s t a t o
dalla - m a v i e n e i n s e r i t o n e l l e RL, c i o è n e l l a lista d e i p r o c e s s i p r o n t i a d a c c e d e r e a l l a C P U .
Q u a n d o arriverà il s u o t u r n o , g l i v e r r à a s s e g n a t o il p r o c e s s o r e e s o l o a l l o r a p o t r à e v o l v e r e .

Sospensione per interrupt


I I SO h a u n d i v e r s o c o m p o r t a m e n t o n e l caso c h e i l processo venga sospeso a causa d i u n a i n t e r r u -
zione associata a u n d i s p o s i t i v o I/O r i s p e t t o alla sospensione d o v u t a allo scadere d e l t i m e slice: g l i
i n t e r r u p t d o v u t i a i d i s p o s i t i v i d i I/O sono o r g a n i z z a t i i n classi e a essi v i e n e associata u n a l o c a z i o n e ,
spesso v i c i n a alla p a r t e bassa d e l l a m e m o r i a , c h i a m a t a i n t e r r u p t v e c t o r , c h e c o n t i e n e l ' i n d i r i z z o
della p r o c e d u r a d i gestione delle i n t e r r u z i o n i .

Se si v e r i f i c a u n ' i n t e r r u z i o n e (causata per e s e m p i o da p r o b l e m i sul disco fisso) q u a n t o è i n esecuzione


i l processo X X X , i l program counter d i q u e s t o processo, l a parola di stato del programma e la masche-
ra delle Interruzioni (a v o l t e anche u n o o più registri) vengono messi sullo stack c o r r e n t e d a l l ' h a r d w a -
re dedicato alle i n t e r r u z i o n i e l a C P U salta a l l ' i n d i r i z z o specificato n e l l ' i n t e r r u p t v e c t o r c h e p r o v v e d e
a c o m p l e t a r e i l salvataggio dello stato del processo p r i m a d i eseguire la r u o t i n e della i n t e r r u z i o n e .

Q u a n d o t e r m i n a l a gestione d e l l ' i n t e r r u p t , v i e n e r i c h i a m a t o l o s c h e d u l e r per v e d e r e quale processo


deve essere m a n d a t o i n e s e c u z i o n e e u n p i c c o l o p r o g r a m m a assembler esegue i l c a r i c a m e n t o d e i
r e g i s t r i e l a m a p p a d i m e m o r i a p e r i l n u o v o processo c o r r e n t e .

CONTEXT SWITCHING
Tutte queste azioni d i salvataggio e ripristino v e n g o n o chiamate c o n t e x t switching.

5
Processi sequenziali e paralleli

PCB (Process Control Block)


C o n c l u d i a m o questa s i n t e s i s u i processi r i c o r d a n d o l a s t r u t t u r a d e l d e s c r i t t o r e d e l processo P C B
(Process C o n t r o l B l o c k ) :
I identificatore unico (PID);
• stato c o r r e n t e ;
• program counter;
• registri;
t priorità;
• p u n t a t o r i alla m e m o r i a del processo;
I p u n t a t o r i alle risorse allocate a l processo.

Nome PID
Stato
Program counter " Contesto
Altri registri del processo
Priorità
Limiti di memoria
File aperti

S a p p i a m o c h e il p r o g r a m c o u n t e r e i r e g i s t r i f o r m a n o il c o n t e s t o d e l p r o c e s s o : q u e s t i c a m p i
p r e n d o n o a n c h e il n o m e d i a r e a d i s a l v a t a g g i o d e l l o s t a t o d e l l a C P U .

O l t r e a queste i n f o r m a z i o n i sono a n c h e p r e s e n t i d a t i c h e r i g u a r d a n o informazioni per l'accounting


e per lo stato dellVO, c h e r i p o r t a n o l a lista d e i file e delle p e r i f e r i c h e associati a l processo.
I l d e s c r i t t o r e d i processo v i e n e a l l o c a t o d i n a m i c a m e n t e a l l ' a t t o della c r e a z i o n e e o p p o r t u n a m e n t e
i n i z i a l i z z a t o . V i e n e r i m o s s o d o p o le o p e r a z i o n i d i t e r m i n a z i o n e d e l processo.

Per i m p l e m e n t a r e i l m o d e l l o a processi, i l SO m a n t i e n e u n a tabella c h i a m a t a P r o c e s s T a b l e , c o n t e n e n -


te t u t t i i P C B dei singoli processi, i n m o d o d a avere sempre a disposizione le i n f o r m a z i o n i sullo stato
del processo, aggiornandola q u a n d o i l processo passa da u n o stato d i esecuzione a u n o stato d i p r o n t o
o bloccato, i n m a n i e r a c h e possa essere fatto r i p a r t i r e più t a r d i c o m e se n o n fosse m a i stato f e r m a t o .

Zoom su...
COMANDI PER LA CREAZIONE, SOSPENSIONE
E TERMINAZIONE DEI PROCESSI
N e i s i s t e m i -4 * N I X L i k e • l a c r e a z i o n e d i u n
p r o c e s s o a v v i e n e m e d i a n t e la f u n z i o n e : < * N I X L i k e C o n * N I X si i n t e n d o n o
i sistemi operativi UNIX e XENIX c h e
hanno parecchie analogie e con *NIX
pid f o r k ( ) ;
Like i sistemi o p e r a t i v i che s o n o loro
" s o m i g l i a n t i " , c o m e Linux c h e s a p -
All'atto della chiamata viene generato un
p i a m o essere d i r e t t a m e n t e derivato
n u o v o P I D p e r il f i g l i o e u n n u o v o d e s c r i t t o - da UNIX. •
re d e l p r o c e s s o P C B , v e n g o n o c o p i a t i nella

6
memoria del nuovo processo i s e g m e n t i d a t i e d a t i d i s i s t e m a in m o d o d a a v e r e d u e coppie
d i s e g m e n t i i d e n t i c h e , d a t o c h e il " f i g l i o " è u n c l o n e d e l " p a d r e " : l ' u n i c a d i f f e r e n z a è il v a l o r e
restituito dalla f o r k Q stessa.

Il c o d i c e d e l p r o c e s s o padre viene c o n d i v i s o d a l f i g l i o d a l p u n t o in cui v i e n e invocata


la f o r k ( ) e q u i n d i a p a r t i r e d a q u e s t a i s t r u z i o n e i d u e p r o c e s s i e v o l v o n o i n p a r a l l e l o e s e -
g u e n d o l o s t e s s o c o d i c e : l ' i s t r u z i o n e d i f o r k Q r i t o r n e r à il v a l o r e a e n t r a m b e l e i s t a n z e d e l
programma:
la p r i m a i s t a n z a è il p r o c e s s o p a d r e , c o n il v a l o r e d e l P I D c h e v i e n e a s s e g n a t o d a l SO
al f i g l i o ;
la s e c o n d a i s t a n z a è il p r o c e s s o f i g l i o a p p e n a c r e a t o , c o n v a l o r e p a r i a .

La t e r m i n a z i o n e d i u n p r o c e s s o a v v i e n e m e d i a n t e la f u n z i o n e :

void e x i t ( i n t s t a t u s ) ;

A l l a s u a c h i a m a t a v e n g o n o e s e g u i t e le o p e r a z i o n i d i c h i u s u r a d e i f i l e a p e r t i , v i e n e r i l a s c i a t a la
m e m o r i a , v i e n e s a l v a t o il v a l o r e d e l l ' e x i t s t a t u s n e l d e s c r i t t o r e d e l p r o c e s s o i n m o d o c h e potrà
e s s e r e r e c u p e r a t o d a l p a d r e m e d i a n t e le f u n z i o n e waitQ (di s e g u i t o d e s c r i t t a ) .

È i m p o r t a n t e o s s e r v a r e c o m e il n o n v i e n e r i l a s c i a t o e il d e s c r i t t o r e n o n v i e n e d i s t r u t t o ,
m a v i e n e s e g n a l a t a al p r o c e s s o p a d r e la t e r m i n a z i o n e d i u n f i g l i o .

Un p r o c e s s o p a d r e può s o s p e n d e r e la p r o p r i a a t t i v i t à i n a t t e s a c h e il f i g l i o t e r m i n i c o n l'istru-
zione:

pid wait(int* status);

A l l a c h i a m a t a d i q u e s t a f u n z i o n e il p r o c e s s o p a d r e si s o s p e n d e in a t t e s a d e l l a t e r m i n a z i o n e d i u n
p r o c e s s o f i g l i o : q u a n d o q u e s t o a v v i e n e , r e c u p e r a il v a l o r e d e l l o s t a t o d i u s c i t a s p e c i f i c a t o d a l l a
f u n z i o n e ex/t() n e l f i g l i o .
In p a r t i c o l a r e il v a l o r e c h e v i e n e r e s t i t u i t o è c o m p o s t o d a d u e b y t e :
> n e l b y t e m e n o s i g n i f i c a t i v o d e l l a v a r i a b i l e v i e n e i n d i c a t a la r a g i o n e d e l l a t e r m i n a z i o n e , che
può essere stata naturale o m e d i a n t e un segnale;
• n e l b y t e p i ù s i g n i f i c a t i v o d e l l a v a r i a b i l e v i e n e s c r i t t o il v a l o r e d e l l o s t a t o d i u s c i t a specificato
nella f u n z i o n e exit() d e l f i g l i o
Il S O r i l a s c i a il P I D d e l f i g l i o , rimuove il s u o d e s c r i t t o r e d i p r o c e s s o e r e s t i t u i s c e il P I D d e l f i g l i o
terminato.

E s i s t e a n c h e la p o s s i b i l i t à c h e u n p r o c e s s o f i g l i o t e r m i n i p r i m a c h e il p a d r e a b b i a invocato
| la f u n z i o n e waitQ, il p r o c e s s o f i g l i o d i v e n t a " d e f u n c t " o " z o m b i , " : i n q u e s t o c a s o il p r o -
c e s s o è t e r m i n a t o m a il d e s c r i t t o r e n o n p u ò e s s e r e rilasciato.

Potrebbero piacerti anche