Löytäkäämme eroja haarukan () ja vforkin () välillä alla olevan vertailukaavion avulla.
Vertailukaavio
Vertailun perusteet | haarukka() | vfork () |
---|---|---|
perustiedot | Lapsiprosessissa ja vanhemman prosessissa on erilliset osoitetilat. | Lapsiprosessi ja vanhemman prosessi jakavat saman osoitetilan. |
suoritus | Vanhempien ja lasten prosessi suoritetaan samanaikaisesti. | Vanhemman prosessi pysyy keskeytettynä, kunnes lapsiprosessi on suoritettu loppuun. |
muutos | Jos lapsi prosessi muuttaa minkä tahansa osoitetilan sivua, se on näkymätön vanhemmille prosessille, koska osoitetila on erillinen. | Jos lapsiprosessi muuttaa minkä tahansa osoitetilan sivua, se näkyy vanhemman prosessin kohdalla, koska ne jakavat saman osoitetilan. |
Copy-on-write | haarukka () käyttää copy-on-write -vaihtoehtoa vaihtoehtona, jossa vanhempi ja lapsi jakavat samat sivut, kunnes joku niistä muuttaa jaettua sivua. | vfork () ei käytä copy-on-write -toimintoa. |
Haarukan määritelmä ()
Haarukka () on järjestelmän puhelu, jolla luodaan uusi prosessi . Haarukan () kutsun uusi prosessi on lapsiprosessi, prosessin, joka käynnisti haarukan () järjestelmän kutsun. Lapsiprosessin koodi on identtinen sen vanhemman prosessin koodin kanssa. Lapsiprosessin luomisen jälkeen molemmat prosessit eli vanhemmat ja lapsi prosessit aloittavat suorituksen seuraavasta lausekkeesta haarukan () jälkeen ja molemmat prosessit suoritetaan samanaikaisesti .
Vanhemman prosessin ja lapsen prosessissa on erillinen osoitetila . Näin ollen kun jokin prosesseista muuttaa koodin lausuntoa tai muuttujaa. Se ei näkyisi muissa prosessikoodeissa. Oletetaan, että jos lapsiprosessi muuttaa koodia, se ei vaikuta vanhempaan prosessiin.
Jotkut lapsen prosessit niiden luomisen jälkeen soittaa välittömästi () . Exec () -järjestelmän puhelu korvaa prosessin sen parametrissa määritellyn ohjelman kanssa. Sitten lapsen prosessin erillinen osoitetila ei ole hyödyllinen. Yksi vaihtoehto tässä on copy-on-write.
Copy-on-write antaa vanhemmille ja lapsille prosessin jakaa saman osoitetilan. Jos jokin prosesseista kirjoittaa osoitetilan sivuille, osoitetilan kopio luodaan, jotta molemmat prosessit toimivat itsenäisesti.
Määritelmä vfork ()
Haarukan () muunnettu versio on vfork (). Vfork () -järjestelmän puhelua käytetään myös uuden prosessin luomiseen. Samoin kuin haarukka (), tässä myös uusi prosessi, joka on luotu, on lapsiprosessi, prosessi, jossa vfork (). Lapsiprosessikoodi on myös identtinen vanhemman prosessikoodin kanssa. Tällöin lapsiprosessi keskeyttää vanhemman prosessin suorittamisen, kunnes se suorittaa suorituksensa, koska molemmat prosessit käyttävät samaa osoitetilaa.
Kun lapsi ja vanhempi prosessi jakavat saman osoiteavaruuden . Jos jokin prosesseista muuttaa koodia, se näkyy toisella prosessilla, joka jakaa samoja sivuja. Oletetaan, jos vanhemman prosessi muuttaa koodia; se heijastuu lapsiprosessin koodiin.
Koska vforkin () käyttäminen ei luo erillisiä osoitetiloja lapsille ja vanhemmille prosesseille. Siksi se on toteutettava, jos lapsi prosessoi puheluita () välittömästi sen luomisen jälkeen. Niinpä osoitetilaa ei tuhlata, ja se on tehokas tapa luoda prosessi. vfork ei käytä copy-on-write -toimintoa.
Haarukan () ja vforkin () väliset erot
- Haarukan ja vforkin ensisijainen ero on, että haarukan luomalla lapsiprosessilla on erillinen muistitilaa vanhemmasta prosessista. Vfork- järjestelmän puhelun luomalla lapsiprosessilla on kuitenkin sama prosessiosoite kuin sen emoprosessilla.
- Haarukalla luotu lapsiprosessi suorittaa samanaikaisesti vanhemman prosessin kanssa. Toisaalta vforkilla luotu lapsiprosessi keskeyttää vanhemman prosessin suorittamisen, kunnes sen suorittaminen on valmis.
- Koska vanhemman ja lapsen prosessin muistitila on erillinen muokkaus, jota jokin prosesseista tekee, ei vaikuta muiden sivuihin. Kuitenkin, koska vanhemman ja lapsen prosessi jakaa saman muistiosoitteen, minkä tahansa prosessin tekemä muutos heijastaa osoitetilaan.
- Järjestelmäkutsuhaarukka () käyttää kopiointikirjoitusta vaihtoehtona, jonka avulla lapsi ja vanhempi prosessi jakavat saman osoiteavaruuden, kunnes jokin niistä muuttaa sivuja. Toisaalta vfork ei käytä copy-on-write -toimintoa.
johtopäätös:
Vfork () -järjestelmän puhelu on toteutettava, kun lapsi prosessoi puhelun exec () heti sen luomisen jälkeen haarukalla (). Lapsen ja vanhemman prosessin erillisenä osoitetilana ei ole mitään hyötyä täällä.