Advertisement
Guest User

Untitled

a guest
Jun 11th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Note:
  2. c’è un processo in esecuizone, effettua la prima fork, che crea un secondo processo e entrambi fanno la fork quindi tot 4 processi. Unica variabile child_pid per memorizzare il ritorno di fork quindi con la seconda fork i primi due prcessi ottengono valori positivi, gli ultimi due processi ottengono valore di fork =0. quindi abbiamo due processi che hanno child_pid > 0 e due processi che hanno child_pid = 0. di conseguenza due processi hanno la condizione child_pid>0 vera e vanno in sleep per 60 secondi. Gli altri due hanno la condizione falsa e termineranno. Essendo terminati i due processi figli e siccome i due genitori sono in sleep potrebbero essere interessati a fare una wait dopo, il SO mantiene i figli come processi zombie. Quindi 2 processi zombie vengono creati. Anche 3 va bene nel caso in cui il figlio del primo processo che però ha comunque child_pid>0 (e quindi ha fatto sleep) viene eseguito prima del padre, finisce e quindi viene creato un altro zombie. Mentre 2 è certo, il 3 è possibile dipende da come va l’esecuzione. Si potrebbe anche dubitare su 2, sleep(60) magari non garantisce che in 60 secondi venga eseguito il processo figlio. Le tracce d’esame sono del tipo “SO in buone condizioni e sistema operativo esegue processi in pochi millisecondi..”.
  3. Intuitivamente il messaggio è che il processo genitore va in sleep e il processo figlio finisce. In realtà non è necessariamente vero perché se il sistema operativo è completamente intasato, il padre va in sleep e il figlio in 60 secondi comunque non esegue questa semplice exit perché il SO non gli assegna la CPU, quindi non ci sarebbe nemmeno uno zombie in questo caso, ma nella traccia d’esame tutto apposto perché il SO assegna il processo alla CPU in pochi millisecondi. Non siamo in uno scenario così brutto.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement