Erinevus kahvli () ja vfork () vahel

Autor: Laura McKinney
Loomise Kuupäev: 2 Aprill 2021
Värskenduse Kuupäev: 10 Mai 2024
Anonim
Erinevus kahvli () ja vfork () vahel - Tehnoloogia
Erinevus kahvli () ja vfork () vahel - Tehnoloogia

Sisu


Mõlemad kahvel () ja vfork () on süsteemikõned mis loob uue protsessi, mis on identne protsessiga, mis käivitas kahvli () või vfork (). Kasutades kahvel () võimaldab teostada vanema ja lapse protsessi samaaegselt. Teistpidi, vfork () peatab vanemprotsessi täitmise, kuni lapseprotsess on selle täitmise lõpetanud. Peamine erinevus kahvli () ja vfork () süsteemikõne vahel on see, et kahvli abil loodud lapsprotsessil on eraldi aadressiruum kui põhiprotsessil. Teisest küljest peab vforki abil loodud lapseprotsess jagama oma vanema protsessi aadressiruumi.

Allpool toodud võrdlusdiagrammi abil leiame mõned erinevused fork () ja vfork () vahel.

  1. Võrdlusdiagramm
  2. Definitsioon
  3. Peamised erinevused
  4. Järeldus

Võrdlusdiagramm

Võrdluse aluskahvel ()vfork ()
PõhilineLapsiprotsessil ja vanemprotsessil on eraldi aadressiruumid.Lapsiprotsess ja vanemprotsess jagavad sama aadressiruumi.
HukkamineVanema ja lapse protsess täidetakse üheaegselt.Vanemprotsess peatatakse, kuni lapseprotsess on selle täitmise lõpule viinud.
ModifikatsioonKui alamprotsess muudab mõnda aadressiruumi lehte, on see vanemprotsessi jaoks nähtamatu, kuna aadressiruum on eraldi.Kui alamprotsess muudab mõnda aadressiruumi lehte, on see vanemprotsessile nähtav, kuna neil on sama aadressiruum.
Kirjutage-kirjutagefork () kasutab alternatiivina kopeerimist-kirjutamist, kui vanem ja laps jagavad samu lehti, kuni keegi neist jagatud lehte muudab.vfork () ei kasuta copy-on-write kirjutamist.


Määratlus kahvel ()

kahvel () on süsteemikõne kasutamine a. loomiseks uus protsess. Uus fork () kõne loodud protsess on alamprotsess, protsess, mis kutsus välja kahvli () süsteemikõne. Lapseprotsessi kood on identne selle põhiprotsessi koodiga. Pärast lapseprotsessi loomist alustavad nii protsessid, st vanem- kui ka lapseprotsessid nende täitmist järgmisest avaldusest pärast kahvlit () ja mõlemad protsessid käivitatakse samaaegselt.

Vanemprotsessil ja lapseprotsessil on see olemas eraldi aadressiruum. Seega, kui mõni protsess muudab koodi mõnda avaldust või muutujat. Teistes protsessikoodides see ei kajastuks. Oletame, et kui alamprotsess muudab koodi, ei mõjuta see vanemprotsessi.

Mõni lapseprotsess pärast nende loomist helistab kohe Exe (). Exe () süsteemikõne asendab protsessi parameetris määratud programmiga. Siis pole lapseprotsessi eraldi aadressiruumist mingit kasu. Üks alternatiiv siin on copy-on-write.


kopeerima-kirjutama laske vanemal ja lapsel sama aadressiruumi jagada. Kui mõni protsess kirjutab lehtedele aadressiruumi, luuakse aadressiruumi koopia, mis võimaldab mõlemal protsessil iseseisvalt töötada.

Määratlus vfork ()

Fork () muudetud versioon on vfork (). vfork () süsteemikõnet kasutatakse ka uue protsessi loomiseks. Sarnaselt kahvlile (), on ka siin loodud uus protsess lapseprotsess, protsess, mis käivitas vfork (). Algprotsessikood on identne ka lähteprotsessikoodiga. Siin lapseprotsess peatab hukkamise vanemprotsessist kuni selle täitmiseni, kuna mõlemal protsessil on sama kasutatav aadressiruum.

Kuna lapse ja vanema protsess jagab sama aadressiruum. Kui mõni protsess muudab koodi, on see nähtav teistele samadel lehtedel ühisele protsessile. Oletame, kas vanemprotsess koodi muudab; see kajastub lapseprotsessi koodis.

Kuna vforki () kasutamine ei loo eraldi aadressiruume lapse- ja vanemprotsesside jaoks. Seega peab see olema rakendatud kus lapsprotsess kutsub Exe () kohe pärast selle loomist. Nii et aadressiruumi ei raisata ja see on see tõhus protsessi loomise viis. vfork ei kasuta kopeerima-kirjutama.

  1. Peamine erinevus kahvli ja vforki vahel on see, et lapse loodud protsess kahvel on eraldi mäluruum vanemprotsessist. Kuid lapse loodud protsess vfork süsteemikõne jagab sama aadressiruum emaprotsessist.
  2. Lapsiprotsess, mis on loodud kahvli abil täitma üheaegselt koos vanema protsessiga. Teisest küljest on vforki abil loodud lapseprotsess riputama vanemprotsessi täitmine kuni selle täitmiseni.
  3. Kuna vanema ja lapse protsessi mäluruum on eraldi modifitseerimine, mille ükski protsess läbi viib, ei mõjuta see teiste lehti. Kuna vanem- ja lapseprotsessis on sama mäluaadressi muutmine, mida teeb iga protsess, kajastub aadressiruumis.
  4. Süsteemikõne kahvel () kasutab kopeerima-kirjutama alternatiivina, mis laseb lapsel ja vanematel sama aadressiruumi jagada, kuni keegi neist muudab lehti. Teisest küljest ei kasuta vfork copy-on-write kirjutamist.

Järeldus:

Vfork () süsteemikõne tuleb rakendada pärast lapseprotsessikõne täitmist exec () kohe pärast selle loomist, kasutades fork (). Kuna eraldi aadressiruum lapse- ja vanemprotsessis pole siin kasulik.