Priporočena, 2024

Izbira Urednika

Razlika med vilicami () in vfork ()

Oba fork () in vfork () sta sistemska klica, ki ustvarita nov proces, ki je identičen procesu, ki je sprožil fork () ali vfork (). Uporaba fork () omogoča hkratno izvajanje starševskega in otroškega procesa. Drugi način je, da vfork () prekine izvajanje nadrejenega procesa, dokler otroški proces ne konča svoje izvedbe. Glavna razlika med sistemskim klicem fork () in vfork () je, da ima otroški proces, ustvarjen s pomočjo vilic, ločen naslovni prostor kot nadrejeni proces. Po drugi strani pa mora otroški proces, ustvarjen z vfork, deliti naslovni prostor svojega nadrejenega procesa.

Najdemo nekaj razlik med vilicami () in vfork () s pomočjo primerjalne tabele, prikazane spodaj.

Primerjalna tabela

Podlaga za primerjavovilice ()Vfork ()
OsnovnoOtroški proces in nadrejeni proces imata ločene naslovne prostore.Otroški proces in nadrejeni proces imata isti naslovni prostor.
IzvajanjeStarševski in otroški proces se izvajata istočasno.Nadrejeni proces ostane prekinjen, dokler otroški proces ne konča svoje izvedbe.
SpremembaČe otroški proces spremeni katero koli stran v naslovnem prostoru, je neviden nadrejenemu procesu, saj je naslovni prostor ločen.Če otroški proces spremeni katero koli stran v naslovnem prostoru, je viden nadrejenemu procesu, saj imajo isti naslovni prostor.
Copy-on-writefork () uporablja copy-on-write kot alternativo, če starš in otrok delita iste strani, dokler katera od njih ne spremeni strani v skupni rabi.vfork () ne uporablja copy-on-write.

Opredelitev vilic ()

Fork () je sistemski klic, ki ustvarja nov proces . Nov proces, ki ga je ustvaril klic fork (), je podrejeni proces, ki je sprožil sistemski klic fork (). Koda podrejenega procesa je enaka kodi nadrejenega procesa. Po izdelavi podrejenega procesa oba procesa, tj. Starševski in otroški proces, začneta izvajati iz naslednjega stavka po fork () in oba postopka se izvršita hkrati .

Nadrejeni procesni in podrejeni proces imata ločen naslovni prostor . Zato, ko kateri koli proces spremeni katero koli izjavo ali spremenljivko v kodi. Ne bi se odražalo v drugih kodah procesov. Predpostavimo, če otroški proces spremeni kodo, ne bo vplival na nadrejeni proces.

Nekateri otroški procesi po njihovem ustvarjanju takoj pokliče exec () . Sistemski klic exec () nadomešča postopek s programom, določenim v njegovem parametru. Nato ločen naslovni prostor otroškega procesa ni koristen. Ena od možnosti je kopiranje na pisanje.

Kopiranje na pisanje naj omogoči, da starševski in otroški proces delita isti naslovni prostor. Če katerikoli proces piše na straneh v naslovnem prostoru, se ustvari kopija naslovnega prostora, ki omogoča, da oba procesa delata neodvisno.

Opredelitev vfork ()

Spremenjena različica fork () je vfork (). Sistemski klic vfork () se uporablja tudi za ustvarjanje novega procesa. Podobno kot v vilici () je tudi nov proces, ki je ustvarjen, otroški proces, ki je sprožil vfork (). Koda podrejenega procesa je enaka tudi kodi nadrejenega procesa. V tem primeru podrejeni proces zaustavi izvršitev nadrejenega procesa, dokler ne konča svoje izvedbe, saj oba procesa uporabljata isti naslovni prostor.

Ker otrok in nadrejeni delita isti naslovni prostor . Če kateri koli proces spremeni kodo, je viden drugemu procesu, ki si deli iste strani. Predpostavimo, če nadrejeni proces spremeni kodo; odražal se bo v kodeksu otrokovega procesa.

Uporaba vfork () ne ustvarja ločenih naslovnih prostorov za otroške in nadrejene procese. Zato mora biti izveden tam, kjer otrok procesira klic exec () takoj po njegovem ustvarjanju. Torej ne bo prišlo do izgube naslovnega prostora in je učinkovit način za ustvarjanje procesa. vfork ne uporablja copy-on-write .

Ključne razlike med vilicami () in vfork ()

  1. Glavna razlika med vilicami in vfork-om je v tem, da ima otroški proces, ki ga je ustvarila vilica, ločen pomnilniški prostor od nadrejenega procesa. Vendar pa otroški proces, ki ga ustvari sistemski klic vfork, deli isti naslovni prostor svojega nadrejenega procesa.
  2. Otroški proces, ustvarjen z uporabo fork, se izvaja istočasno z nadrejenim procesom. Po drugi strani pa otroški proces, ustvarjen s pomočjo vfork, prekine izvajanje nadrejenega procesa, dokler se njegovo izvajanje ne zaključi.
  3. Ker je pomnilniški prostor starševskega in otroškega procesa ločena sprememba, ki jo opravi kateri koli proces, ne vpliva na druge strani. Ker pa starševski in otroški proces imata isto spremembo naslova spomina, ki jo opravi kateri koli proces, se ta odraža v naslovnem prostoru.
  4. Sistemski klic fork () uporablja alternativno možnost copy-on-write, kar otroku in nadrejenemu procesu omogoča, da imata isti naslovni prostor, dokler katera od njiju ne spremeni strani. Po drugi strani vfork ne uporablja copy-on-write.

Sklep:

Sistemski klic vfork () mora biti izveden, ko otrok procesiranje poziva () takoj po njegovi izdelavi z uporabo fork (). Kot ločen naslovni prostor za otroški in nadrejeni proces tukaj ne bo uporaben.

Top