Sunteți pe pagina 1din 12

Laborator 3

Procese

Sisteme de Operare

3 - 9 Martie 2011

SO Laborator 3, Procese 1/12


Ce este un proces?

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 informat, iile asociate procesului (Process Control Block)


I tabela de fis, iere deschise
I handler-ele pentru semnale
I directorul curent

SO Laborator 3, Procese 2/12


Operat, ii cu procese

I creare
I as, teptarea terminarii
I terminare
I duplicarea descriptorilor de resurse

SO Laborator 3, Procese 3/12


Crearea unui proces

I Linux - organizare ierarhica

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 Windows - organizare neierarhica


I CreateProcess - mbina cele doua operat, ii de pe Linux

SO Laborator 3, Procese 4/12


As, teptarea terminarii unui proces

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

SO Laborator 3, Procese 5/12


Terminarea unui 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

SO Laborator 3, Procese 6/12


Redirectare

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

SO Laborator 3, Procese 7/12


Variabile de mediu

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

SO Laborator 3, Procese 8/12


Ce este un pipe?

I mecanisme de comunicare ntre procese, ce ofera acces de tip


FIFO
I sistemele de operare garanteaza sincronizarea ntre operat, iile
de citire s, i de scriere la cele doua capete
I doua tipuri
I anonime
I pot fi folosite doar ntre procese nrudite
I exist
a doar n prezent, a proceselor care det, in descriptori c
atre
ele
I cu nume
I pot fi folosite ntre oricare dou
a procese
I exist
a fizic - sunt reprezentate de fis, iere speciale

SO Laborator 3, Procese 9/12


Pipe-uri anonime

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.

SO Laborator 3, Procese 10/12


Pipe-uri cu nume

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

SO Laborator 3, Procese 11/12


Intrebari

I Care este primul argument (argv[0]) al programului fun daca


se ruleaza astfel: ./fun so lab 3
I Ce va afis, a apelul getppid() efectuat de un proces copil al
carui parinte a apelat exit() ?
I Cate procese noi se vor crea n urma execut, iei codului
urmator: if (fork()) fork();
I Ce se ntampla daca un program executa urmatorul cod:
execvp(argv[0], &argv[0])

SO Laborator 3, Procese 12/12

S-ar putea să vă placă și

  • Lfac 4
    Lfac 4
    Document23 pagini
    Lfac 4
    Ionel Popescu
    Încă nu există evaluări
  • Lfac 4
    Lfac 4
    Document23 pagini
    Lfac 4
    Ionel Popescu
    Încă nu există evaluări
  • Lfac 7
    Lfac 7
    Document23 pagini
    Lfac 7
    Ionel Popescu
    Încă nu există evaluări
  • Lfac 8
    Lfac 8
    Document23 pagini
    Lfac 8
    Ionel Popescu
    Încă nu există evaluări