Categories: sisteme shfrytezimi

Procedura fork() në sistemin e shfrytëzimit

Procedura fork() përdoret për të krijuar procese të reja, i cili quhet proces fëmijë. Ky proces ekzekutohet në mënyrë paralele me procesin të cilin e thirri, i cili quhet dhe proces prind. Pasi krijohet nje proces i ri, të dy proceset do ekzekutojnë instruksionin pasardhës, që ndjek thirrjen fork.

Një proces fëmijë përdor të njëjtin regjistër PC (program counter), të njëjtit regjistra të CPU si dhe të njëjtit skedarë të hapur.

Procedura fork() është një thirrje sistemi. Kjo procedurë nuk merr parametra, dhe kthen si përgjigje një numër të plotë. Më poshtë janë vlera të ndryshme që mund të kthejë procedura fork().

Vlera negative: një vlerë e tillë kthehet kur krijimi i një procesi fëmijë rezulton i pasuksesshëm.

Vlera Zero: kjo vlerë kthehet nga procesi fëmijë i sapokrijuar.

Vlera pozitive: një vlerë e tillë kthehet nga procesi thirrës, ose ndryshe procesi prind. Vlera tregon processID e procesit të sapokrijuar.

Parashikoni cfarë afishohet nga programi i mëposhtëm:

#include "stdio.h"
#include "sys/types.h"
#include "unistd.h"
int main()
{
 fork();
 printf("Hello world!\n");
 return 0;
}

 

Afishohet:

Hello world!
Hello world!

 

Llogaritni sa herë do afishohet Hello

#include "stdio.h"
#include "sys/types.h"
int main()
{
 fork();
 fork();
 fork();
 printf("hello\n");
 return 0;
}

 

Afishohet:

hello
hello
hello
hello
hello
hello
hello
hello

 

Numri i herëve që do afishohet Hello, është i njëjtë me numrin e proceseve të krijuar.

Numri total i proceseve është 2n, ku n është numri i thirrjeve fork.

Pra, kur n=3, numri total i proceseve do jetë 8.

Procesi i parë P0, me thirrjen e parë fork, krijon P1.

Me thirrjen e dytë fork, krijohet P2 nga P0, dhe P3 nga P1.

Me thirrjen e trete fork, krijohet P4 nga P0, P5 nga P1, P6 nga P2 dhe P7 nga P3.

Vini re që proceset prind dhe femijë ekzekutojnë të njëjtin program, por kjo nuk do të thotë se janë identik. Sistemi i shfrytëzimit iu alokon të dhëna të ndryshme, gjendje të ndryshme, gjithashtu rrjedha e kontrollit e këtyre proceseve mund të jetë e ndryshme.

Bazuar në librin Modern Operating Systems, me autor Andrew Tanenbaum

Sidita Duli

Share
Published by
Sidita Duli

Recent Posts

Studime për Inteligjencë Artificiale (AI) dhe Data Science: program studimi Bachelor

Vitet e fundit kanë nisur programe të reja studimi, Bachelor dhe Master, me fokus Inteligjencë…

3 muaj ago

Studime për Informatikë: lëndët dhe tregu i punës

Dega e studimit Informatike është aktualisht mjaft e kërkuar nga maturantët dhe nga tregu i…

5 muaj ago

Shkenca kompjuterike: profili dhe tregu i punes

Një nga programet e studimit më të kërkuara aktualisht janë Shkenca Kompjuterike. Po cili është…

5 muaj ago

Perdorimi i Notion ne vitin 2023

Këtë vit kam nisë të mbaj shënime dhe të organizoj projektet freelance me një aplikacion…

1 vit ago

Java dhe MySQL

Komponent kryesor i një aplikacioni në Java është lidhja dhe ndërveprimi me një bazë të…

1 vit ago

10 gjuhët e programimit për vitin 2023

Në këtë blog po përmbledh gjuhët e programimit më të preferuara, të cilat kryesojnë listën…

1 vit ago