Rozdíl mezi vidličkou () a vforkem ()

Autor: Laura McKinney
Datum Vytvoření: 2 Duben 2021
Datum Aktualizace: 6 Smět 2024
Anonim
Rozdíl mezi vidličkou () a vforkem () - Technologie
Rozdíl mezi vidličkou () a vforkem () - Technologie

Obsah


Oba Vidlička() a vfork () jsou systémová volání to vytvoří nový proces, který je totožný s procesem, který vyvolal fork () nebo vfork (). Použitím Vidlička() umožňuje provádění rodičovského a podřízeného procesu současně. Na druhou stranu vfork () pozastaví provádění nadřazeného procesu, dokud podřízený proces nedokončí jeho provedení. Primární rozdíl mezi systémovým voláním fork () a vfork () je v tom, že podřízený proces vytvořený pomocí vidlice má samostatný adresní prostor jako nadřazený proces. Na druhé straně podřízený proces vytvořený pomocí vfork musí sdílet adresní prostor svého nadřazeného procesu.

Najdeme nějaké rozdíly mezi fork () a vfork () pomocí srovnávací tabulky níže.


  1. Srovnávací tabulka
  2. Definice
  3. Klíčové rozdíly
  4. Závěr

Srovnávací tabulka

Základ pro srovnáníVidlička()vfork ()
ZákladníPodřízený proces a nadřazený proces mají samostatné adresní prostory.Podřízený proces a nadřazený proces sdílejí stejný adresní prostor.
ProvedeníRodičovský a podřízený proces se provádí současně.Rodičovský proces zůstává pozastaven, dokud nedokončený proces nedokončí.
ModifikacePokud podřízený proces změní libovolnou stránku v adresním prostoru, je pro nadřazený proces neviditelný, protože adresní prostor jsou oddělené.Pokud podřízený proces změní jakoukoli stránku v adresním prostoru, je nadřazený proces viditelný, protože sdílejí stejný adresní prostor.
Copy-on-writefork () používá alternativu copy-on-write, pokud nadřazený a podřízený sdílí stejné stránky, dokud některá z nich nesdílí sdílenou stránku.vfork () nepoužívá kopírování při zápisu.


Definice vidlice ()

Vidlička() je použití systémového volání k vytvoření nový proces. Nový proces vytvořený voláním fork () je podřízený proces, který vyvolal systémové volání fork (). Kód podřízeného procesu je totožný s kódem jeho nadřazeného procesu. Po vytvoření podřízeného procesu začnou proces, tj. Rodičovský i podřízený proces, spustit od příštího příkazu po fork () a oba procesy budou provedeny zároveň.

Nadřazený proces a podřízený proces ano samostatný adresní prostor. Proto, když kterýkoli z procesů modifikuje jakýkoli příkaz nebo proměnnou v kódu. To se neodráží v jiných procesních kódech. Předpokládejme, že pokud podřízený proces upraví kód, nebude to mít vliv na nadřazený proces.

Některé podřízené procesy po jejich vytvoření okamžitě volají exec (). Systémové volání exec () nahrazuje proces s programem uvedeným v jeho parametru. Samostatný adresový prostor podřízeného procesu je pak zbytečný. Jednou alternativou je zde copy-on-write.

copy-on-write nechat rodičovský a podřízený proces sdílet stejný adresní prostor. Pokud některý z procesů zapíše na stránky v adresovém prostoru, vytvoří se kopie adresního prostoru, která umožní, aby oba procesy fungovaly nezávisle.

Definice vfork ()

Upravená verze fork () je vfork (). vfork () systémové volání se také používá k vytvoření nového procesu. Podobně jako fork () je zde i nový vytvořený proces podřízený proces, který vyvolal vfork (). Podřízený procesní kód je také totožný s nadřazeným procesním kódem. Tady, dítě proces pozastaví popravu rodičovského procesu, dokud nedokončí jeho provádění, protože oba procesy sdílejí stejný adresní prostor, který se má použít.

Jako dítě a rodičovský proces sdílí stejný adresní prostor. Pokud některý z procesů modifikuje kód, je viditelný pro ostatní procesy sdílející stejné stránky. Předpokládejme, že rodičovský proces změní kód; promítne se to do kódu procesu podřízenosti.

Stejně jako použití vfork () nevytváří oddělené adresní prostory pro podřízené a nadřazené procesy. Proto to musí být implementováno kde dítě proces volá exec () ihned po jeho vytvoření. Takže nedojde k plýtvání adresním prostorem a je to účinný způsob, jak vytvořit proces. vfork se nepoužívá copy-on-write.

  1. Primární rozdíl mezi vidličkou a vforkem je v tom, že podřízený proces vytvořený serverem Vidličkasamostatný paměťový prostor z rodičovského procesu. Podřízený proces vytvořený programem vfork systémové volání sdílí stejný adresní prostor rodičovského procesu.
  2. Podřízený proces vytvořený pomocí vidlice provést současně s rodičovským procesem. Na druhé straně, podřízený proces vytvořený pomocí vfork pozastavit provádění rodičovského procesu až do jeho provedení.
  3. Protože paměťový prostor rodičovského a podřízeného procesu je samostatnou úpravou prováděnou některým z procesů, neovlivní stránky jiných. Protože však nadřazený a podřízený proces sdílí stejnou změnu adresy paměti provedenou jakýmkoli procesem, odráží se v adresním prostoru.
  4. Systémové volání fork () používá copy-on-write jako alternativa, která umožňuje podřízenému a nadřazenému procesu sdílet stejný adresní prostor, dokud některý z nich stránky neupravuje. Na druhou stranu vfork nepoužívá kopírování při zápisu.

Závěr:

Systémové volání vfork () musí být implementováno, když je podřízené procesní volání exec () ihned po jeho vytvoření pomocí fork (). Jako samostatný adresní prostor pro podřízený a nadřazený proces zde nebude použito.