Documente Academic
Documente Profesional
Documente Cultură
• Exemple UNIX
• Apelul de sistem fork() creaza noi procese
• Apelul de sistem exec() este folosit dupa fork()
pentru a inlocui memoria procesului cu noul
program
Crearea proceselor
• Fiecare comanda UNIX este un copil al
procesului shell; implicit fork() + exec()
• & permite rularea proceselor in background,
ex: sleep 200 &
Crearea proceselor (Cont.)
Program C pentru crearea
unui nou proces – simple
version
#include <unistd.h> int main()
{
#include <errno.h>
pid_t pid;
#include <sys/wait.h> /* fork another process */
#include <stdlib.h> pid = fork();
if (pid < 0) { /* error occurred */
#include <stdio.h>
fprintf(stderr, "Fork Failed");
#include <sys/types.h> exit(-1);
}
else if (pid == 0) { /* child process */
execlp("/bin/ls", "ls", NULL);
}
else { /* parent process */
/* parent will wait for the child
to complete */
wait (NULL);
printf ("Child Complete");
exit(0);
}
}
Executie fork()
Program C pentru crearea
unui nou proces – extended
version
#include <unistd.h> else if (childpid == 0) { /* child process */
pid_t childpid; /* variable to store the /* parent will wait for the child to
child's pid */ complete */
} }
}
Compilare program C in
terminal Linux
sudo -s
gcc main.cpp -o main.out
./main.out
Arbore de procese pe un
sistem Solaris
Terminarea proceselor
• Procesul executa ultima comanda si cere SO
sa il stearga – exit()
• Transmite datele de la “copil” catre “parinte” – prin
apel wait()
• Resursele procesului sunt dezalocate de catre SO
• Parintele poate sa opreasca executia
proceselor copiilor - abort()/kill() daca:
• Copilul a depasit limita de resurse alocate
• Sarcina atribuita copilului nu mai este necesare
• Daca procesul parinte se inchide:
• Unele SO nu permit procesului copilului sa continue
executia data procesul parintele se inchide - terminare in
cascada
Process Info
pstree
top
----------
ls –l /proc/
cd /proc/PID
Cooperarea dintre procese
Procese cooperante
• Proces independent - nu poate afecta si nu
poate fi afectat de executia unui alt proces
• Proces cooperant - poate afecta si poate fi
afectat de executia altor procese
• Avantajele proceselor cooperante
• Partajare de informatii
• Calcule mai rapide
• Modularitate
Modele de comunicare