Skirtumas tarp šakutės () ir vfork ()

Autorius: Laura McKinney
Kūrybos Data: 2 Balandis 2021
Atnaujinimo Data: 1 Gegužė 2024
Anonim
Skirtumas tarp šakutės () ir vfork () - Technologija
Skirtumas tarp šakutės () ir vfork () - Technologija

Turinys


Abu šakutė () ir vfork () yra sistemos skambučiai sukuria naują procesą, identišką procesui, kuris iškvietė šakę () arba vfork (). Naudojant šakutė () leidžia vienu metu vykdyti tėvų ir vaiko procesą. Priešingai, vfork () sustabdo tėvystės proceso vykdymą, kol vaiko procesas baigs jį vykdyti. Pagrindinis šakinio () ir „vfork ()“ sistemos skambučio skirtumas yra tas, kad pradiniame procese, sukurtame naudojant šakę, yra atskira adreso sritis, kaip ir pirminiame procese. Kita vertus, vaiko procesas, sukurtas naudojant „vfork“, turi dalintis pagrindinio proceso adreso erdve.

Pateiksime keletą skirtumų tarp šakutės () ir vfork (), naudodamiesi palyginimo lentele, parodyta žemiau.

  1. Palyginimo diagrama
  2. Apibrėžimas
  3. Pagrindiniai skirtumai
  4. Išvada

Palyginimo diagrama

Palyginimo pagrindasšakutė ()vfork ()
PagrindinisVaiko ir tėvų procese yra atskiros adresų vietos.Vaikų ir tėvų procesas ta pačia adresų erdve yra tas pats.
VykdymasTėvų ir vaikų procesas vykdomas vienu metu.Tėvų procesas sustabdomas tol, kol vaiko procesas baigs jį vykdyti.
ModifikacijaJei antrinis procesas keičia bet kurį adresą adreso srityje, jis nematomas pirminiam procesui, nes adreso sritis yra atskira.Jei antrinis procesas keičia bet kurį adresą adreso srityje, tai yra matomas pirminis procesas, nes jie naudojasi ta pačia adresų erdve.
Kopijuok, rašykšakutė () naudoja kopijavimą rašyti kaip alternatyvą, kai tėvas ir vaikas dalijasi tais pačiais puslapiais, kol kuris nors iš jų nepakeis bendro puslapio.„vfork“ () nenaudoja kopijavimo rašyti.


Šakutės apibrėžimas ()

šakutė () yra sistemos skambučio naudojimas kuriant naujas procesas. Naujas procesas, sukurtas šaukimo „šakutė“ () metu, yra antrinis procesas, procesas, iškviečiantis šakės () sistemos kvietimą. Vaikų proceso kodas yra identiškas jo pirminio proceso kodams. Sukūrus vaiko procesą, tiek procesas, t. Y., Tiek tėvas, tiek vaikas pradeda savo vykdymą nuo kito pareiškimo po šakutės () ir abu procesai vykdomi tuo pačiu metu.

Tėvų procesas ir vaiko procesas turi atskira adreso sritis. Taigi, kai kuris iš procesų modifikuoja bet kurį kodo teiginį ar kintamąjį. Kitais proceso kodais tai neatsispindės. Tarkime, jei antrinis procesas pakeis kodą, tai neturės įtakos pradiniam procesui.

Kai kurie vaiko procesai po jų sukūrimo iškart paskambina Exe (). Exe () sistemos skambutis pakeičia procesą su programa, nurodyta jos parametre. Tada atskira vaiko proceso adreso erdvė nenaudinga. Viena alternatyva čia yra kopijuoti, rašyti.


kopijuoti-rašyti leiskite tėvui ir vaikui pasidalinti ta pačia adresų erdve. Jei kuris nors iš procesų rašo puslapiuose adresų erdvėje, adreso erdvės kopija sukuriama tam, kad abu procesai galėtų veikti savarankiškai.

„Vfork“ apibrėžimas ()

Modifikuota šakės () versija yra „vfork“ (). vfork () sistemos skambutis taip pat naudojamas kuriant naują procesą. Panašiai kaip šakutė (), čia taip pat sukurtas naujas procesas yra antrinis procesas, proceso, kuris iškvietė „vfork“ (). Antrinis proceso kodas taip pat yra tapatus pirminio proceso kodas. Čia vaiko procesas sustabdo vykdymą pirminio proceso, kol jis neužbaigia jo vykdymo, nes abu procesai naudoja tą pačią adreso erdvę.

Kadangi vaiko ir tėvų procesas dalijasi ta pati adreso sritis. Jei kuris nors iš procesų modifikuoja kodą, jis yra matomas kitam procesui, turinčiam tuos pačius puslapius. Tarkime, jei pirminis procesas keičia kodą; tai atsispindės vaiko proceso kodekse.

Kadangi naudojant „vfork“ () nesukuriamos atskiros adresų vietos vaiko ir tėvų procesams. Vadinasi, taip ir turi būti įgyvendinta kur skambina vaiko procesas Exe () iškart po jo sukūrimo. Taigi, nereikės švaistyti adresų vietos, ir tai yra efektyvus būdas sukurti procesą. vfork nenaudoja kopijuoti-rašyti.

  1. Pagrindinis skirtumas tarp šakutės ir vfork yra tas, kad vaiko sukurtas procesas šakutė turi atskira atminties vieta iš tėvų proceso. Tačiau vaiko sukurtas procesas vfork sistemos kvietimas dalijasi ta pati adreso sritis pirminio proceso.
  2. Vaiko procesas, sukurtas naudojant šakutę vykdyti vienu metu su tėvų procesu. Kita vertus, vaiko procesas, sukurtas naudojant „vfork“ sustabdyti pirminio proceso vykdymas iki jo įvykdymo pabaigos.
  3. Tėvų ir vaikų proceso atminties vieta yra atskiras modifikavimas, kurį atlieka bet kuris iš procesų, ir tai neturi įtakos kitų puslapiams. Tačiau kadangi tėvų ir vaikų procesas turi tą patį atminties adreso pakeitimą, kurį atlieka bet kuris procesas, atsispindi adreso erdvėje.
  4. Sistemos iškvietimo šakutė () naudoja kopijuoti-rašyti kaip alternatyva, leidžianti vaikui ir tėvams tvarkyti tą pačią adresų vietą, kol kuris nors iš jų nepakeis puslapių. Kita vertus, „vfork“ nenaudoja „copy-on-write“.

Išvada:

Sistemos „vfork“ () kvietimas turi būti įgyvendintas, kai vaiko proceso skambutis vykdomas (()) iškart po jo sukūrimo naudojant šakę (). Kadangi atskira adresų erdvė vaiko ir tėvų procesams čia nebus naudinga.