Krijimi i një proçesi

Ekzistojnë katër ngjarje që shkaktojnë krijimin e një proçesi :

  1. Inicializimi i një proçesi
  2. Thirrja nga një proçes në ekzekutim i një thirrje sistemi për krijimin e një proçesi të ri.
  3. Kërkesa e përdoruesit për krijimin e një proçesi të ri
  4. Nisja e një batch job ( pune batch).

Në momentin e boot-imit të sistemit të shfrytëzimit krijohen disa proçese. Disa prej tyre ndërveprojnë me përdoruesin dhe realizojnë një punë të tyre. Disa proçese të tjerë janë proçese në background të cilët nuk kanë lidhje me një përdorues, por kanë funksione të tjera specifike. Psh një proçes i tillë në background është ai i cili pret një e-mail që mund të vijë. Ky proçes është gjithë kohën pasiv por nis punën kur vjen një mail. Proçese të tillë në Windows ju mund ti shihni në Task Manager.
Përveç proçeseve që krijohen gjatë kohës së boot-imit, të tjerë proçese shtohen më pas. Shpesh një proçes në ekzekutim mund të bëjë një thirrje sistemi për të krijuar një proçes të ri që ta ndihmojë në detyrën e tij. Duhet pasë parasysh që këto proçese janë të nevojshëm për të shpejtuar punët. Gjithashtu ata janë të ndërlidhur dhe të pavarur njëkohësisht njëri me tjetrin. Për të nisur një program, përdoruesi jep një komandë ose klikon në një ikonë. Në këtë
moment nis një proçes i ri i cili ekzekuton këtë program. Në shumë sisteme me ndërfaqe grafike çdo program i hapur jepet me anë të një dritareje. Përdoruesi me anë të mousit zgjedh se me cilin program do ndërveprojë.
Rasti i fundit i krijimit të proçeseve aplikohet vetëm në sistemet batch në mainframet gjigande. Në këto sisteme përdoruesi mund të kryejë një punë dhe kur sistemi i shfrytëzimit vendos që ka resurse për të krijuar një tjetër punë, atëherë ai krijon një proçes të ri.
Në të gjithë këto raste, një proçes i ri krijohet duke pasë një tjetër proçes që ekzekuton një thirrje sistemi për të krijuar një proçes të ri. Ky proçes mund të jetë një proçes në ekzekutim, një proçes sistemi i thirrur nga tastjera ose nga mousi. Ajo që realizon një proçes është ekzekutimi i një thirrje sistemi për të krijuar një proçes të ri. Kjo thirrje i tregon sistemit të shfrytëzimit që duhet krijuar një proçes i ri si dhe i tregon se cili program të ekzekutohet në këtë proçes.
Në UNIX ekziston vetëm një thirrje sistemi për të krijuar një proçes të ri. Kjo quhet fork dhe krijon një kopje ekzakte të proçesit. Pas këtij instruksioni fork të dy proçeset kanë të njëjtin imazh në memorje si dhe të njëjtët skedarë të hapur. Zakonisht në këtë moment proçesi fëmijë ekzekuton execve për të ndryshuar imazhin e tij në memorje dhe për të ekzekutuar një tjetër program. Psh kur përdoruesi shkruan komandën sort atëherë ekzekutohet një thirrje fork për të krijuar një proçes të ri dhe me pas ky proçes ekzekuton komandën sort. Në Windows kjo ndodh kështu : bëhet një thirrje për një funksion CreateProçess e cila kryen krijimin e proçesit si dhe ngarkimin e programit të proçesi i sapokrijuar. Kjo thirrje ka 10 parametra, në të cilat përfshihen programi që do ekzekutohet, disa atribute të sigurisë, bite që tregojnë nëse trashëgohen skedarët e hapur, informacion rreth prioritetit, ndonjë specifikim rreth dritares së hapur, etj.

Perveç CreateProçess, në Win32 ekzistojnë dhe rreth 100 funksione të tjerë që sinkronizojnë proçeset. Në Windows ashtu edhe në UNIX, pasi krijohet një proçes, proçesi prind dhe proçesi fëmijë kanë zonat e ndryshme të adresave. Nqs njëri nga këto dy ndryshon një fjalë në zonën e adresave ndryshimi nuk i paraqitet tek proçesi tjetër. Gjithsesi është e mundur që një proçes i sapokrijuar ndan me proçesin prind të njëjtat resurse, si psh skedarët e hapur.

Bazuar në librin Modern Operating Systems, me autor A.Tanenbaum