Rekomenduojama, 2024

Redaktoriaus Pasirinkimas

Skirtumas tarp šakės () ir vforko ()

Abi šakutės () ir vfork () yra sistemos skambučiai, kurie sukuria naują procesą, kuris yra identiškas procesui, kuriuo kreipėsi šakutė () arba vfork (). Naudojant šakutę () galima vienu metu atlikti tėvų ir vaikų procesą. Antrasis būdas, vfork () sustabdo tėvų proceso vykdymą, kol vaikas baigia jo vykdymą. Pagrindinis skirtumas tarp šakės () ir vfork () sistemos skambučio yra tas, kad vaiko procesas, sukurtas naudojant šakę, turi atskirą adresų erdvę kaip ir pagrindinio proceso adresą. Kita vertus, vaiko procesas, sukurtas naudojant vfork, turi bendrinti savo patronuojančio proceso adresų erdvę.

Suraskime skirtumus tarp šakutės () ir vfork () su žemiau pateikto palyginimo diagramos pagalba.

Palyginimo diagrama

Palyginimo pagrindasšakutė ()vforkas ()
PagrindinisVaiko procesas ir tėvų procesas turi atskiras adresų vietas.Vaiko procesas ir tėvų procesas turi tą pačią adresų erdvę.
VykdymasTėvų ir vaikų procesas vyksta vienu metu.Tėvų procesas išlieka sustabdytas, kol vaikas baigia savo darbą.
ModifikacijaJei vaikas apdoroja bet kurį adresų erdvės puslapį, jis yra nematomas tėvų procesui, nes adresų erdvė yra atskira.Jei vaiko procesas pakeičia bet kurį adreso vietos puslapį, jis matomas tėvų procesui, nes jie turi tą pačią adresų erdvę.
Kopijuoti ant rašymošakutė () naudoja kopiją kaip parašą kaip alternatyvą, kai tėvas ir vaikas dalijasi tais pačiais puslapiais, kol vienas iš jų pakeičia bendrinamą puslapį.vfork () nenaudoja kopijavimo.

Šakės apibrėžimas ()

Šakė () yra sistemos skambučio naudojimas naujam procesui sukurti. Naujas procesas, sukurtas šakės () skambučiu, yra vaiko procesas, procesas, kuris iškėlė šakės () sistemos skambutį. Vaiko proceso kodas yra identiškas pirminio proceso kodui. Sukūrus vaiko procesą, abu procesai, t. Y. Tėvai ir vaikai, pradeda vykdyti savo darbą nuo kito pareiškimo po šakės () ir abu procesai vykdomi vienu metu .

Tėvų proceso ir vaiko procesas turi atskirą adresų erdvę . Taigi, kai bet kuris iš procesų modifikuoja bet kokį kodo pareiškimą ar kintamąjį. Tai nebūtų atspindėta kituose procesų koduose. Tarkime, jei vaiko procesas pakeis kodą, jis neturės įtakos tėvų procesui.

Kai kurie vaiko procesai po jų sukūrimo iš karto skambina exec () . „Exec“ () sistemos kvietimas pakeičia procesą su jo parametru nurodyta programa. Tada atskiras vaikų proceso adreso laukas nėra naudingas. Viena iš alternatyvų čia yra kopijavimas.

Copy-on-write“ leidžia tėvų ir vaikų procesui pasidalinti ta pačia adreso erdve. Jei bet kuris iš procesų rašo adresų erdvės puslapiuose, sukuriama adresų erdvės kopija, kad abu procesai veiktų nepriklausomai.

Vforko apibrėžimas ()

Modifikuota šakės () versija yra vfork (). Vfork () sistemos skambutis taip pat naudojamas kuriant naują procesą. Panašiai kaip ir šakutė (), čia taip pat sukuriamas naujas procesas, kuris yra vaiko procesas, procesas, kuris vedė vforką (). Vaiko proceso kodas taip pat atitinka pirminio proceso kodą. Čia vaiko procesas sustabdo tėvų proceso vykdymą, kol jis baigia vykdyti, nes abu procesai naudoja tą pačią adresų erdvę.

Kadangi vaiko ir tėvų procesas turi tą pačią adresų erdvę . Jei kuris nors iš procesų modifikuoja kodą, jis matomas kitam procesui, kuriame dalijami tie patys puslapiai. Tarkime, jei pirminis procesas pakeis kodą; jis atspindės vaiko proceso kodą.

Kaip naudojant vfork () nesukuria atskirų adresų erdvių vaikų ir tėvų procesams. Taigi, jis turi būti įgyvendintas ten, kur vaikas skambina exec () iš karto po jo sukūrimo. Taigi, nebus vietos adresų erdvėje, ir tai yra veiksmingas būdas sukurti procesą. „vfork“ nenaudoja „ copy-on-write“ .

Pagrindiniai skirtumai tarp šakės () ir vforko ()

  1. Pagrindinis skirtumas tarp šakės ir vforko yra tai, kad šakės sukurtas vaiko procesas turi atskirą atminties erdvę iš tėvų proceso. Tačiau vaiko procesas, sukurtas naudojant vfork sistemos skambutį, turi tą patį savo pagrindinio proceso adreso lauką .
  2. Vaiko procesas, sukurtas naudojant šakę, vykdomas kartu su pagrindiniu procesu. Kita vertus, vaiko procesas, sukurtas naudojant „vfork“, sustabdo tėvų proceso vykdymą, kol jis bus baigtas.
  3. Kadangi tėvų ir vaikų procesų atminties erdvė yra atskira modifikacija, kurią daro bet kuris iš procesų, nepaveikia kitų puslapių. Tačiau, kadangi tėvų ir vaikų procesas dalijasi tuo pačiu atminties adreso pakeitimu, kuris atliekamas bet kuriame procese, atsispindi adresų erdvėje.
  4. Sistemos skambučio šakutė () naudoja kopiją kaip parašą kaip alternatyvą, kuri leidžia vaiko ir tėvų procesams turėti tą pačią adresų erdvę, kol bet kuris iš jų nepakeis puslapių. Kita vertus, „vfork“ nenaudoja „copy-on-write“.

Išvada:

Vfork () sistemos skambutis turi būti įgyvendintas, kai vaikas skambina exec () iš karto po jo sukūrimo naudojant šakę (). Kaip atskira adresų erdvė vaiko ir tėvų procesui čia nebus naudinga.

Top