Rozdiel medzi vidličkou () a vforkom ()

Autor: Laura McKinney
Dátum Stvorenia: 2 Apríl 2021
Dátum Aktualizácie: 10 Smieť 2024
Anonim
Торт Шоколадный Наполеон с хрустящими коржами!
Video: Торт Шоколадный Наполеон с хрустящими коржами!

Obsah


oba vidlička() a vfork ()systémové volania ktorý vytvára nový proces, ktorý je totožný s procesom, ktorý vyvolal fork () alebo vfork (). Použitím vidlička() umožňuje vykonávanie rodičovského a podriadeného procesu súčasne. Na druhú stranu, vfork () pozastaví vykonávanie nadradeného procesu, kým podriadený proces nedokončí jeho vykonanie. Primárny rozdiel medzi systémovým volaním fork () a vfork () je ten, že podriadený proces vytvorený pomocou vidlice má samostatný adresný priestor ako priestor nadradeného procesu. Na druhej strane podriadený proces vytvorený pomocou vfork musí zdieľať adresný priestor svojho rodičovského procesu.

Nájdeme niektoré rozdiely medzi vidlicami () a vforkmi () pomocou porovnávacej tabuľky uvedenej nižšie.


  1. Porovnávacia tabuľka
  2. definícia
  3. Kľúčové rozdiely
  4. záver

Porovnávacia tabuľka

Základ pre porovnanievidlička()vfork ()
základnéPodradený proces a rodičovský proces majú samostatné adresné priestory.Podradený proces a rodičovský proces zdieľajú rovnaký adresný priestor.
popravaRodičovský a podradený proces sa vykonávajú súčasne.Rodičovský proces zostáva pozastavený až do dokončenia jeho vykonania.
modifikácieAk podradený proces zmení ľubovoľnú stránku v adresnom priestore, je nadradený proces neviditeľný, pretože adresný priestor je oddelený.Ak podradený proces zmení ľubovoľnú stránku v adresnom priestore, je viditeľný pre rodičovský proces, pretože zdieľajú rovnaký adresný priestor.
Copy-on-writefork () používa ako alternatívu kopírovanie pri zápise, ak rodič a dieťa zdieľajú rovnaké stránky, až kým niektorá z nich nezmení zdieľanú stránku.vfork () nepoužíva copy-on-write.


Definícia vidlice ()

vidlička() je použitie systémového hovoru na vytvorenie nový proces, Nový proces vytvorený volaním fork () je podradeným procesom, ktorý vyvolal systémové volanie fork (). Kód podriadeného procesu je totožný s kódom jeho nadradeného procesu. Po vytvorení podradeného procesu začnú procesy, t. zároveň.

Rodičovský proces a podradený proces áno samostatný adresný priestor, Preto, keď ktorýkoľvek z procesov modifikuje akýkoľvek príkaz alebo premennú v kóde. To sa neodráža v iných procesných kódoch. Predpokladajme, že ak podriadený proces zmení kód, nebude to mať vplyv na nadradený proces.

Niektoré detské procesy po ich vytvorení okamžite volajú exec (), Systémové volanie exec () nahrádza proces s programom uvedeným v jeho parametri. Samostatný adresný priestor podriadeného procesu potom nie je k dispozícii. Jednou z alternatív je kopírovanie na disk.

copy-on-write nechať rodičovský a podradený proces zdieľať rovnaký adresný priestor. Ak ktorýkoľvek z procesov zapíše na stránky v adresnom priestore, vytvorí sa kópia adresného priestoru, ktorá umožní, aby oba procesy pracovali nezávisle.

Definícia vfork ()

Upravená verzia fork () je vfork (). vfork () systémové volanie sa tiež používa na vytvorenie nového procesu. Podobne ako v prípade fork (), aj tu je nový vytvorený proces podradený proces, ktorý vyvolal vfork (). Podriadený procesný kód je tiež totožný s rodičovským procesným kódom. Tu sa dieťa proces pozastaví vykonanie rodičovského procesu, kým nedokončí jeho vykonanie, pretože obidva procesy zdieľajú ten istý adresný priestor, ktorý sa má použiť.

Keďže proces dieťaťa a rodiča zdieľa systém rovnaký adresný priestor, Ak niektorý z procesov modifikuje kód, je viditeľný pre iný proces zdieľajúci rovnaké stránky. Predpokladajme, že ak rodičovský proces zmení kód; odzrkadlí sa v kóde procesu dieťaťa.

Ako pri použití vfork () nevytvára samostatné adresné priestory pre podriadené a nadradené procesy. Preto musí byť implementovaná kde volá proces dieťaťa exec () ihneď po jeho vytvorení. Takže nedôjde k plytvaniu adresným priestorom a je to účinný spôsob, ako vytvoriť proces. vfork sa nepoužíva copy-on-write.

  1. Hlavným rozdielom medzi vidlicou a vforkom je to, že podriadený proces vytvorený serverom vidličkasamostatný pamäťový priestor z rodičovského procesu. Podriadený proces vytvorený spoločnosťou vfork systémové volanie zdieľa rovnaký adresný priestor svojho materského procesu.
  2. Podriadený proces vytvorený pomocou vidlice vykonať súčasne s rodičovským procesom. Na druhej strane, podriadený proces vytvorený pomocou vfork pozastaviť vykonanie rodičovského procesu až do jeho ukončenia.
  3. Pretože pamäťový priestor rodičovského a podradeného procesu je samostatnou úpravou vykonanou niektorým z procesov, neovplyvní to stránky iných. Pretože však nadradený a podradený proces zdieľa rovnakú adresu v pamäti, vykonaná akýmkoľvek procesom, odráža sa v adresnom priestore.
  4. Používa sa fork () systémového volania copy-on-write ako alternatíva, ktorá umožňuje, aby podriadený a rodičovský proces zdieľali ten istý adresný priestor, kým ktorýkoľvek z nich neupraví stránky. Na druhú stranu, vfork nepoužíva copy-on-write.

záver:

Systémové volanie vfork () sa musí implementovať, keď je spustené volanie procesu spustenia () bezprostredne po vytvorení pomocou fork (). Keďže tu nebude samostatný adresný priestor pre podradené a rodičovské procesy, nebude to potrebné.