Soovitatav, 2024

Toimetaja Valik

Kahvli () ja vforki () vahe

Mõlemad kahvlid () ja vfork () on süsteemikõned, mis loovad uue protsessi, mis on identne kahvli () või vforki () kutsumisprotsessiga. Kahvli () kasutamine võimaldab vanem- ja lapseprotsessi samaaegset teostamist. Teisest küljest peatab vfork () vanemprotsessi täitmise kuni lapse protsessi lõpuleviimiseni. Kahvel () ja vfork () süsteemi kõne peamine erinevus on see, et kahvli abil loodud lapse protsessil on eraldi aadressiruum kui algprotsessil. Teisest küljest peab vforkiga loodud lapseprotsess jagama oma vanemprotsessi aadressiruumi.

Leiame mõned erinevused kahvli () ja vforki () vahel allpool toodud võrdluskaardi abil.

Võrdluskaart

Võrdluse aluskahvel ()vfork ()
PõhilineLapse protsessil ja vanemprotsessil on eraldi aadressiruumid.Lapse protsess ja vanemprotsess jagavad sama aadressi.
TäitmineVanema ja lapse protsess toimub üheaegselt.Vanemprotsess jääb peatatuks, kuni lapse protsess lõpeb.
MuudatusKui lapse protsess muudab aadressi ruumi ükskõik millist lehekülge, on see vanemprotsessile nähtamatu, kuna aadressiruum on eraldi.Kui lapseprotsess muudab aadressi ruumi mis tahes lehekülge, on see nähtav vanemprotsessile, kuna neil on sama aadressiruum.
Kopeeri kirjalikultKahvel () kasutab koopia kirjutamisel alternatiivina, kui vanem ja laps jagavad samu lehti, kuni üks neist muudab jagatud lehekülge.vfork () ei kasuta kirjutamist.

Kahvli määratlus ()

Kahvel () on uue protsessi loomiseks kasutatav süsteemikõne. Kahvli () kutsega loodud uus protsess on lapsprotsess, protsess, mis kutsus üles kahvli () süsteemi kõne. Lapse protsessi kood on identne oma vanemprotsessi koodiga. Pärast lapseprotsessi loomist alustavad mõlemad protsessid, nt vanem- ja lapseprotsess, nende käivitamist järgmisest avaldusest pärast kahvlit () ja mõlemad protsessid täidetakse samaaegselt .

Vanema protsessi ja lapse protsessil on eraldi aadressiruum . Seega, kui mõni protsess muudab koodi mis tahes avaldust või muutujat. See ei kajastu teistes protsessikoodides. Oletame, et kui lapseprotsess muudab koodi, ei mõjuta see vanemprotsessi.

Mõned lapse protsessid pärast nende loomist kutsuvad kohe () . Exec () süsteemi kõne asendab protsessi selle parameetris määratletud programmiga. Seejärel ei ole lapse protsessi eraldi aadressiruum kasulik. Üks alternatiiv on siin kirjutamine.

Copy-on-write laseb vanematel ja lastel jagada sama aadressi. Kui mõni protsess kirjutab aadressiruumi lehtedele, luuakse aadressiruumi koopia, et mõlemad protsessid toimiksid iseseisvalt.

Vforki mõiste ()

Kahvli () muudetud versioon on vfork (). Vforki () süsteemi kõnet kasutatakse ka uue protsessi loomiseks. Sarnaselt kahvlile () on siin ka uus protsess, mis on lapsprotsess, protsess, mis viitas vforkile (). Lapse protsessi kood on samuti identne vanemprotsessi koodiga. Siin peatab lapsprotsess vanemprotsessi teostamise, kuni see lõpetab selle täitmise, kuna mõlemal protsessil on sama aadressiruum, mida kasutada.

Kuna laps ja vanem protsess jagavad sama aadressi ruumi . Kui mõni protsess muudab koodi, on see nähtav teisele protsessile, mis jagab samu lehekülgi. Oletame, kas vanemprotsess muudab koodi; see kajastub lapse protsessi koodis.

Kuna vforki () kasutamine ei loo eraldi aadressiruume laste ja vanemate protsesside jaoks. Seega tuleb seda rakendada siis, kui laps kõneleb rakendusest () kohe pärast selle loomist. Niisiis, aadressi ruumi ei raiska ja see on tõhus viis protsessi loomiseks. vfork ei kasuta kirjutamist .

Kahvli () ja vforki () vahelised peamised erinevused

  1. Kahvli ja vforki peamine erinevus on see, et kahvli poolt loodud lapseprotsessil on vanemprotsessist eraldi mäluruum . Siiski jagab vfork- süsteemi kõne poolt loodud lapseprotsess oma vanemprotsessi sama aadressi .
  2. Kahvli abil loodud lapseprotsess käivitub samaaegselt vanemprotsessiga. Teisest küljest peatab vforkiga loodud lapseprotsess vanemprotsessi täitmise, kuni selle täitmine on lõpule viidud.
  3. Kuna vanem- ja lapseprotsessi mäluruum on ükskõik milline protsess, mida ükski protsess teeb, ei mõjuta see teiste lehekülge. Kuna vanem- ja lapseprotsess jagab samasugust mälu aadressi, siis peegeldab see mis tahes protsessiga tehtud muudatusi aadressiruumis.
  4. Süsteemikõne kahvel () kasutab alternatiivina kirjalikult kirjutamist, mis laseb lapsel ja vanemprotsessil jagada sama aadressi, kuni üks neist neist lehekülgi ei muuda. Teisest küljest ei kasuta vfork kirjalikke kirjutisi.

Järeldus:

Vfork () süsteemikõne tuleb rakendada siis, kui laps helistab exec () kohe pärast selle loomist kahvli () abil. Lapse ja vanemate protsesside eraldiseisva aadressi jaoks ei ole siin mingit kasu.

Top