Ero haarukan () ja vfork () välillä

Kirjoittaja: Laura McKinney
Luomispäivä: 2 Huhtikuu 2021
Päivityspäivä: 10 Saattaa 2024
Anonim
Ero haarukan () ja vfork () välillä - Tekniikka
Ero haarukan () ja vfork () välillä - Tekniikka

Sisältö


molemmat haarukka() ja vfork () ovat järjestelmän puhelut joka luo uuden prosessin, joka on identtinen prosessin kanssa, joka käynnisti haarukan () tai vfork (). käyttämällä haarukka() mahdollistaa vanhemman ja lapsen prosessin suorittamisen samanaikaisesti. Toinen tapa, vfork () keskeyttää vanhemman prosessin suorittamisen, kunnes alaprosessi on suorittanut loppuun sen suorittamisen. Ensisijainen ero haarukka () - ja vfork () -järjestelmän puhelun välillä on, että haarukalla luodussa alaprosessissa on erillinen osoitetila kuin vanhempana. Toisaalta vfork-sovelluksella luodun lapsiprosessin on jaettava vanhemman prosessin osoitetila.

Otetaanpa joitain eroja haarukan () ja vfork () välillä alla olevan vertailutaulun avulla.

  1. Vertailutaulukko
  2. Määritelmä
  3. Keskeiset erot
  4. johtopäätös

Vertailutaulukko

Vertailun perusteethaarukka()vfork ()
perustiedotLapsiprosessissa ja vanhempainprosessissa on erilliset osoitealueet.Lapsiprosessissa ja vanhemman prosessissa on sama osoitetila.
suoritusVanhemman ja lapsen prosessi suoritetaan samanaikaisesti.Vanhempi prosessi keskeytetään, kunnes lapsiprosessi on suorittanut loppuun suorituksen.
muutosJos alaprosessi muuttaa mitä tahansa osoiterivin sivua, se on vanhempien prosessien kannalta näkymätön, koska osoitetila on erillinen.Jos alaprosessi muuttaa mitä tahansa osoiterivin sivua, se on vanhempien prosessin näkyvissä, koska heillä on sama osoitetila.
Kopioi-on-writehaarukka () käyttää kopiointi-kirjoituksessa -vaihtoehtoa, jossa vanhempi ja lapsi jakavat samat sivut, kunnes joku heistä muuttaa jaettua sivua.vfork () ei käytä kopiointia kirjoitettaessa.


Määritelmä haarukka ()

haarukka() on järjestelmäkutsu, jonka avulla luodaan uusi prosessi. Uusi haarukan () -puhelun luoma prosessi on alaprosessi, prosessista, joka käynnisti haarukka () -järjestelmän puhelun. Lapsiprosessin koodi on identtinen sen vanhemman prosessin koodin kanssa. Lapsiprosessin luomisen jälkeen sekä prosessi, ts. Vanhempi ja lapsiprosessi aloittavat suorituksen seuraavasta lausekkeesta haarukan jälkeen () ja molemmat prosessit suoritetaan samanaikaisesti.

Vanhempainprosessissa ja lapsiprosessissa on erillinen osoitetila. Siksi, kun jokin prosesseista muuttaa mitä tahansa lauseketta tai muuttujaa koodissa. Se ei heijastu muihin prosessikoodeihin. Oletetaan, että jos alaprosessi muuttaa koodia, se ei vaikuta vanhempaan prosessiin.

Jotkut lapsiprosessit luomisensa jälkeen soittavat välittömästi exec (). Exe () -järjestelmäkutsu korvaa prosessin parametrillaan määritellyllä ohjelmalla. Silloin lapsiprosessin erillisestä osoitealueesta ei ole hyötyä. Yksi vaihtoehto tässä on copy-on-write.


copy-on-write anna vanhemman ja lapsen prosessoida jakamaan sama osoitetila. Jos jokin prosesseista kirjoittaa sivuille osoitetilaan, osoitealueen kopio luodaan niin, että molemmat prosessit toimivat itsenäisesti.

Määritelmä vfork ()

Haarukan () muokattu versio on vfork (). vfork () Järjestelmäpuhelua käytetään myös uuden prosessin luomiseen. Samoin kuin haarukalla (), tässäkin luotu uusi prosessi on alaprosessi, prosessista, joka kutsui vfork (): ta. Alkuprosessikoodi on myös identtinen vanhempien prosessikoodin kanssa. Täällä lapsiprosessi keskeyttää täytäntöönpanon emoprosessista, kunnes se on suorittanut loppuun suorituksen, koska molemmilla prosesseilla on sama käytettävä osoitetila.

Kun lapsi ja vanhemmat jakavat prosessin, sama osoitetila. Jos jokin prosesseista muuttaa koodia, se näkyy toiselle prosessille, jolla on samat sivut. Oletetaan, että emoprosessi muuttaa koodia; se heijastuu lasten prosessin koodiin.

Koska vfork (): n käyttö ei luo erillisiä osoitetiloja ala- ja vanhempainprosesseille. Siksi sen on oltava täytäntöön missä lapsiprosessi soittaa exec () heti sen luomisen jälkeen. Joten, osoitetilaa ei tuhlata, ja se on tehokas tapa luoda prosessi. vfork ei käytä copy-on-write.

  1. Ensisijainen ero haarukan ja vforkin välillä on, että haarukka on a erillinen muistitila vanhemmasta prosessista. Kuitenkin vfork järjestelmäsoitto jakaa sama osoitetila sen vanhemmasta prosessista.
  2. Haarukalla luotu lapsiprosessi suorittaa samanaikaisesti vanhemman kanssa. Toisaalta vforkilla luotu lapsiprosessi keskeyttää emoprosessin suorittaminen sen suorittamiseen saakka.
  3. Koska vanhempien ja lasten prosessien muistitila on erillinen muutos, jonka jokin prosesseista tekee, ei vaikuta muiden sivuihin. Koska vanhempi ja lapsi -prosessi kuitenkin jakavat saman muistiosoitteen muokkauksen, jonka mikä tahansa prosessi tekee, heijastuu osoitetilaan.
  4. Järjestelmäkutsu haarukka () käyttää copy-on-write vaihtoehtona, joka antaa lasten ja vanhempien prosessoida saman osoitealueen, kunnes joku heistä muuttaa sivuja. Toisaalta vfork ei käytä copy-on-kirjoitusta.

johtopäätös:

Vfork () -järjestelmäkutsu on toteutettava, kun lapsiprosessipuhelu exec () heti sen luomisen jälkeen haarukalla (). Koska erillisestä osoitetilasta lapsen ja vanhemman prosessille ei ole tässä mitään hyötyä.