Documente Academic
Documente Profesional
Documente Cultură
Procese
Sisteme de Operare
3 - 9 Martie 2011
I program n execut, ie
I unitatea primitiva prin care sistemul de operare aloca resurse
utilizatorilor
I caracteristici
I spat, iu de adrese
I unul sau mai multe fire de execut, ie
I creare
I as, teptarea terminarii
I terminare
I duplicarea descriptorilor de resurse
I fork - duplic
a procesul
curent
I 0, n copil
I pid > 0, n parinte
I -1, n caz de eroare
I exec - nlocuies, te
imaginea procesului
I Linux
I waitpid, wait
I suspenda execut, ia procesului apelant p
ana c
and procesul
(procesele) specificat n argumente fie s-au terminat, fie au
fost oprite (SIGSTOP)
I WIFEXITED, WEXITSTATUS ...
I obt, in modul s, i codul de ies, ire ale procesului, examin
and
status, ntors de waitpid
I Windows
I WaitForSingleObject, WaitForMultipleObjects
I suspenda execut, ia procesului curent p
an
a c
and unul sau mai
multe alte procese se termin a
I GetExitCode
I determin
a codul de eroare cu care s-a terminat un anumit
proces
I Linux
I exit
I ncheie execut, ia procesului curent
I tot, i descriptorii de fis, ier ai procesului sunt nchis, i
I copiii procesului sunt nfiat, i de init
I parintelui procesului i e trimis un semnal SIGCHLD
I va scrie bufferele streamurilor deschise s, i le va nchide
I Windows
I ExitProcess
I ncheie execut, ia procesului curent
I TerminateProcess
I ncheie execut, ia altui proces
I Nu este recomandat a
I Linux
I dup, dup2
I descriptorii din p
arinte se mos, tenesc, implicit, n copil
I Windows
I descriptorii ce indica fis, ierele catre care se face redirectarea
trebuie sa poata fi mos, tenit, i n procesul creat
I membrul bInheritHandle al structurii SECURITY_ATTRIBUTES
pasate lui CreateFile trebuie s
a fie TRUE
I pentru mos, tenirea descriptorilor
I parametrul bInheritHandle din CreateProcess trebuie s
a
fie TRUE
I la crearea procesului, trebuie populata structura STARTUPINFO
I setarea membrilor hStdInput, hStdOutput, hStdError la
descriptorii corespunz
atori
I membrul dwFlags trebuie setat la STARTF_USESTDHANDLES
I Linux
I int main(int argc, char **argv, char **environ)
I parametrul environ e un vector de s, iruri de caractere de
forma VARIABILA = VALOARE
I getenv, setenv
I obt, ine/seteaz
a valoarea unei variabile de mediu
I unsetenv
I nl
atur
a o variabil
a de mediu
I Windows
I GetEnvironmentVariable, SetEnvironmentVariable
I setarea unei variabile cu valoarea NULL nlatura acea variabila
Linux Windows
I pipe I CreatePipe
I read, write I ReadFile, WriteFile
I close I CloseHandle
Atent, ie!
I Linux: Cand se utilizeaza fork, descriptorii sunt duplicat, i =>
numarul necesar de nchideri se vor dubla. Inchiderea part, iala
a descriptorilor conduce la blocaje n read.
I Windows: Valorile descriptorilor nu sunt direct vizibile n
procesul copil s, i trebuie facute cunoscute printr-o metoda
alternativa.
I moduri de deschidere
I blocant
I neblocant
I Linux
I mkfifo
I Windows
I moduri de comunicare
I flux de octet, i
I flux de mesaje
Server Client
I CreateNamedPipe I CreateFile
I ConnectNamedPipe I CallNamedPipe