Razlika med fork () in vfork ()

Avtor: Laura McKinney
Datum Ustvarjanja: 2 April 2021
Datum Posodobitve: 4 Maj 2024
Anonim
Razlika med fork () in vfork () - Tehnologija
Razlika med fork () in vfork () - Tehnologija

Vsebina


Oboje vilice () in vfork () so tisti sistemski klici ustvari nov postopek, ki je enak postopku, ki je sprožil fork () ali vfork (). Uporaba vilice () omogoča izvajanje starševskega in nadrejenega procesa hkrati. Drugi način, vfork () zaustavi izvedbo nadrejenega postopka, dokler nadrejeni postopek ne zaključi. Primarna razlika med sistemskim klicem fork () in vfork () je v tem, da ima nadrejeni postopek, ustvarjen z uporabo fork, ločen naslov kot prostor nadrejenega procesa. Po drugi strani mora podrejeni proces, ustvarjen z vforkom, deliti naslovni prostor nadrejenega procesa.

Najdimo nekaj razlik med fork () in vfork () s pomočjo spodnje primerjalne tabele.

  1. Primerjalna tabela
  2. Opredelitev
  3. Ključne razlike
  4. Zaključek

Primerjalna tabela

Osnove za primerjavovilice ()vfork ()
OsnovniOtroški proces in nadrejeni postopek ima ločene naslove.Otroški proces in nadrejeni proces ima isti naslovni prostor.
IzvedbaProces staršev in otrok se izvaja hkrati.Nadrejeni postopek ostane začasno zaustavljen, dokler nadrejeni postopek ne zaključi.
SpremembeČe nadrejeni postopek spremeni katero koli stran v naslovnem prostoru, je nadrejeni postopek neviden, saj je naslovni prostor ločen.Če podrejeni proces spremeni katero koli stran v naslovu, je to vidno nadrejenemu procesu, saj si delijo isti naslov.
Kopiraj-zapišifork () uporablja kopiranje pri pisanju kot alternativo, kadar starš in otrok delita iste strani, dokler nobeden od njih ne spremeni strani v skupni rabi.vfork () ne uporablja kopiranja pri pisanju.


Opredelitev vilice ()

The vilice () je sistemski klic za ustvarjanje nov postopek. Nov postopek, ustvarjen s klicem fork (), je nadrejeni postopek, ki je sprožil sistemski klic fork (). Koda nadrejenega procesa je identična s kodo nadrejenega procesa. Po izdelavi nadrejenega procesa oba procesa, tj. Nadrejeni in nadrejeni proces začneta izvajanje iz naslednjega stavka po fork () in oba procesa se izvršita hkrati.

Starševski postopek in otroški proces resnično ločen naslov. Torej, kadar kateri koli postopek spremeni kateri koli stavek ali spremenljivko v kodi. To se ne bi odrazilo v drugih procesnih kodah. Denimo, če nadrejeni postopek spremeni kodo, ne bi vplival na nadrejeni postopek.

Nekateri otroški postopek po njihovem ustvarjanju takoj pokliče exec (). Sistemski klic exec () nadomešča postopek s programom, navedenim v njegovem parametru. Nato ločen naslovni naslov nadrejenega procesa ni koristen. Druga možnost je kopiranje pri pisanju.


The kopiraj-piši pustite staršem in otroku, da si delita isti naslovni prostor. Če kateri koli od procesov zapiše na strani v naslovnem prostoru, se ustvari kopija naslovnega prostora, ki omogoča, da oba postopka delujeta neodvisno.

Opredelitev vfork ()

Spremenjena različica fork () je vfork (). The vfork () sistemski klic se uporablja tudi za ustvarjanje novega procesa. Podobno kot fork () je tudi tukaj ustvarjen nov postopek nadrejeni proces procesa, ki je sprožil vfork (). Otroška koda procesa je prav tako enaka nadrejeni kodi procesa. Tukaj otrok postopek zadrži izvršitev nadrejenega procesa, dokler ne dokonča izvedbo, saj si oba procesa delita isti naslovni prostor.

Ker si otrok in starš delita postopek isti naslovni prostor. Če kateri koli postopek spremeni kodo, je viden drugemu procesu, ki si deli iste strani. Predpostavimo, če nadrejeni postopek spremeni kodo; odraža se v kode otroškega procesa.

Ker uporaba vfork () ne ustvarja ločenih naslovnih prostorov za nadrejene in nadrejene procese. Zato mora biti izveden kjer kliče otroški postopek exec () takoj po nastanku. Torej, ne bo izgubljati naslovnega prostora, in to je učinkovit način ustvarjanja postopka. vfork ne uporablja kopiraj-piši.

  1. Glavna razlika med fork in vfork je v tem, da je otroški postopek, ki ga je ustvaril vilice ima ločen pomnilniški prostor iz matičnega postopka. Vendar je otroški postopek, ki ga je ustvaril vfork sistemski klic deli isti naslovni prostor nadrejenega procesa.
  2. Otroški postopek, ustvarjen z vilicami izvajati hkrati s starševskim postopkom. Po drugi strani pa otroški postopek, ustvarjen z uporabo vfork prekiniti izvedba nadrejenega procesa do njegove izvedbe.
  3. Ker je pomnilniški prostor nadrejenega in nadrejenega procesa ločena sprememba, ki jo opravi kateri koli od procesov, ne vpliva na druge strani. Ker pa imata nadrejeni in nadrejeni proces isto spremembo pomnilniškega naslova, ki jo opravi kateri koli postopek, se odraža v naslovnem prostoru.
  4. Uporablja se vilica sistemskega klica () kopiraj-piši kot alternativa omogočimo deljenju nadrejenega in nadrejenega istega naslovnega prostora, dokler noben od njih ne spremeni strani. Po drugi strani vfork ne uporablja kopiranja pri pisanju.

Zaključek:

Sistemski klic vfork () mora biti izveden, ko otroški procesni klic exec () takoj po njegovem ustvarjanju uporabi fork (). Tukaj ločeni naslovni prostor za nadrejene in starševske procese ne bo imel koristi.