Odporúčaná, 2024

Redakcia Choice

Rozdiel medzi vidličkou () a vfork ()

Funkcia fork () a vfork ()systémové volania, ktoré vytvárajú nový proces, ktorý je identický s procesom, ktorý vyvolal vidlice () alebo vfork (). Použitie vidlice () umožňuje súčasne vykonať proces rodičov a detí. V opačnom prípade vfork () pozastaví vykonávanie rodičovského procesu, kým dcérsky proces nedokončí jeho vykonanie. Primárnym rozdielom medzi systémovým volaním fork () a vfork () je to, že podriadený proces vytvorený pomocou vidlice má samostatný adresový priestor ako vlastný rodičovský proces. Na druhej strane, proces podriadený vytvorený pomocou vforku musí zdieľať adresový priestor jeho rodičovského procesu.

Nájdime niektoré rozdiely medzi vidlicami () a vfork () pomocou porovnávacieho grafu zobrazeného nižšie.

Porovnávacia tabuľka

Základ pre porovnanievidlička()vfork ()
základnéDieťa proces a rodičovský proces má samostatné adresné priestory.Proces dieťaťa a rodičovský proces zdieľa rovnaký priestor adries.
popravaProces rodičov a detí sa spustí súčasne.Rodičovský proces zostáva pozastavený, kým dieťa dokončí jeho proces.
modifikácieAk podradený proces zmení ľubovoľnú stránku v priestore adries, je neviditeľný pre rodičovský proces, pretože adresný priestor je oddelený.Ak podradený proces zmení ľubovoľnú stránku v priestore adries, je viditeľný pre rodičovský proces, pretože zdieľa rovnaký priestor adries.
Copy-on-writefork () používa alternatívu copy-on-write, keď rodič a dieťa zdieľajú rovnaké stránky, kým niektorá z nich nezmení zdieľanú stránku.vfork () nepoužíva copy-on-write.

Definícia vidlice ()

Vidlica () je systémové volanie používa na vytvorenie nového procesu . Nový proces vytvorený volaním fork () je podriadený proces, ktorý vyvolal systémové volanie fork (). Kód podriadeného procesu je identický s kódom jeho rodičovského procesu. Po vytvorení detského procesu začnú procesy, tj proces rodičov a detí, spustiť ich vykonanie z nasledujúceho výkazu po vidlici () a oba procesy sa vykonajú súčasne .

Rodičovský proces a podriadený proces majú samostatný adresný priestor . Preto keď niektorý z procesov upraví v kóde akékoľvek vyhlásenie alebo premennú. Nebolo by to odrazené v iných procesných kódexoch. Predpokladajme, že ak dieťa proces upraví kód, nebude to mať vplyv na rodičovský proces.

Niektoré podriadené procesy po ich vytvorení okamžite volajú exec () . Systémový hovor exec () nahrádza proces programom špecifikovaným v jeho parametri. Potom samostatný adresný priestor podriadeného procesu je nepoužiteľný. Jedna alternatíva je copy-on-write.

Kopírovanie v písomnej podobe umožňuje, aby rodičovský a podriadený proces zdieľali rovnaký priestor pre adresy. Ak niektorý z procesov zapisuje na stránky v adresovom priestore, kópia adresového priestoru sa vytvorí tak, aby oba procesy fungovali nezávisle.

Definícia vfork ()

Modifikovaná verzia vidlice () je vfork (). Systémový hovor vfork () sa tiež používa na vytvorenie nového procesu. Podobne ako vidlica (), tu je tiež vytvorený nový proces, ktorý je procesom, ktorý vyvolal vfork (). Devízový procesný kód je rovnaký ako kód rodičovského procesu. V tomto procese dieťa pozastaví vykonávanie rodičovského procesu až do dokončenia jeho vykonania, pretože obidva procesy zdieľajú rovnaký priestor na použitie.

Vzhľadom na to, že podradený a rodičovský proces má rovnaký priestor na adresu . Ak niektorý z procesov upraví kód, je viditeľný pre iný proces zdieľajúci rovnaké stránky. Predpokladajme, že ak rodičovský proces zmení kód; bude sa odrážať v kóde detského procesu.

Keďže použitie vfork () nevytvára samostatné adresové medzery pre detské a rodičovské procesy. Preto sa musí implementovať tam, kde proces dieťaťa zavolá exec () ihneď po jeho vytvorení. Nebude teda dochádzať k plytvaniu adresného priestoru a je to efektívny spôsob, ako vytvoriť proces. vfork nepoužíva copy-on-write .

Kľúčové rozdiely medzi vidličkou () a vfork ()

  1. Primárny rozdiel medzi vidličkou a vforkom spočíva v tom, že podriadený proces vytváraný vidlicouoddelené miesto od rodičovského procesu. Dôležitý proces vytvorený systémom vfork systému však zdieľa rovnaký adresný priestor jeho rodičovského procesu.
  2. Podvojný proces vytvorený pomocou vidlice sa spustí súčasne s rodičovským procesom. Na druhej strane proces vytvorený pomocou nástroja vfork pozastaví vykonávanie rodičovského procesu až do jeho dokončenia.
  3. Keďže pamäťový priestor rodičovského a podriadeného procesu je samostatná úprava vykonaná niektorým z procesov, nemá vplyv na ostatné stránky. Keďže rodičovský a podriadený proces zdieľa rovnakú modifikáciu adresy pamäte vykonanú akýmkoľvek procesom, ktorý sa odráža v adresovom priestore.
  4. Systémová výzva fork () používa alternatívu copy-on-write, ktorá umožňuje, aby podriadený a rodičovský proces zdieľali rovnaký adresný priestor, kým niektorý z nich nezmení stránky. Na druhej strane vfork nepoužíva copy-on-write.

záver:

Systémový volanie vfork () sa musí implementovať pri podprocese child () okamžite po jeho vytvorení pomocou vidlice (). Samostatné adresné miesto pre detský a rodičovský proces nebude v tomto prípade ničoho.

Top