Razlika između fork () i vfork ()

Autor: Laura McKinney
Datum Stvaranja: 2 Travanj 2021
Datum Ažuriranja: 10 Svibanj 2024
Anonim
Razlika između fork () i vfork () - Tehnologija
Razlika između fork () i vfork () - Tehnologija

Sadržaj


Oba vilica () i vfork () su sistemski pozivi koji stvara novi proces identičan procesu koji je pozvao fork () ili vfork (). koristeći vilica () omogućava istovremeno izvršavanje procesa roditelja i djeteta. Drugi put, vfork () obustavlja izvršenje nadređenog postupka dok podređeni proces ne dovrši njegovo izvršavanje. Primarna razlika između sistema fork () i vfork () je u tome što podređeni proces stvoren pomoću fork-a ima zasebni adresni prostor kao i nadređeni proces. S druge strane, podređeni proces stvoren pomoću vfork mora dijeliti adresni prostor svog nadređenog procesa.

Naći ćemo neke razlike između fork () i vfork () pomoću grafikona za usporedbu prikazanih dolje.

  1. Usporedni grafikon
  2. definicija
  3. Ključne razlike
  4. Zaključak

Usporedni grafikon

Osnove za usporedbuvilica ()vfork ()
Osnovni, temeljniPodređeni proces i roditeljski proces imaju odvojene adresne prostore.Podređeni proces i roditeljski proces dijele isti adresni prostor.
IzvršenjePostupak roditelja i djeteta izvršava se istovremeno.Nadređeni proces ostaje obustavljen dok dječji proces ne završi izvršenje.
ModifikacijaAko nadređeni proces mijenja bilo koju stranicu u adresnom prostoru, roditelj je nevidljiv jer je adresni prostor odvojen.Ako podređeni proces mijenja bilo koju stranicu u adresnom prostoru, to je vidljivo roditeljskom procesu jer dijele isti adresni prostor.
Copy-on-writefork () koristi kopiranje prilikom pisanja kao alternativu gdje roditelj i dijete dijele iste stranice dok niti jedan od njih ne izmijeni zajedničku stranicu.vfork () ne koristi kopiranje prilikom pisanja.


Definicija fork ()

vilica () upotreba sistemskog poziva za stvaranje novi postupak, Novi postupak kreiran pozivom fork () je nadređeni proces, procesa koji je pozvao sistemski poziv fork (). Šifra podređenog procesa identična je kodu nadređenog procesa. Nakon stvaranja podređenog procesa, oba procesa, tj. Nadređeni i podređeni proces započinju izvršavanje iz sljedeće izjave nakon fork (), a oba se procesa izvršavaju istovremeno.

Proces roditelja i podređeni proces zaista imaju zasebni adresni prostor, Dakle, kada bilo koji od procesa mijenja bilo koji iskaz ili varijablu u kodu. To se ne bi odrazilo u drugim procesnim kodovima. Pretpostavimo da ako nadređeni proces izmijeni kod ne bi utjecao na roditeljski proces.

Neko dijete proces nakon svog stvaranja odmah zove exec (), Poziv sustava exec () zamjenjuje postupak s programom navedenim u njegovom parametru. Tada zasebni adresni prostor dječjeg procesa nema nikakve koristi. Jedna od alternativa ovdje je kopiranje na pisanje.


copy-on-write neka roditelj i dijete upravljaju dijeleći isti adresni prostor. Ako bilo koji od procesa napiše na stranicama u adresnom prostoru, kopija adresnog prostora stvara se kako bi oba postupka mogla raditi nezavisno.

Definicija vfork ()

Modificirana verzija fork () je vfork (). vfork () sistemski poziv koristi se i za stvaranje novog procesa. Slično kao fork (), i ovdje je stvoren novi proces podređenog procesa, procesa koji je pozvao vfork (). Podređeni kôd procesa isto je identičan sa nadređenim procesnim kodom. Evo, dječji proces obustavlja izvršenje nadređenog procesa dok ne završi njegovo izvršavanje jer oba procesa dijele isti adresni prostor koji se koristi.

Kao dijeljenje procesa djeteta i roditelja isti adresni prostor, Ako bilo koji od procesa izmijeni kôd, vidljiv je drugom procesu koji dijeli iste stranice. Pretpostavimo da li roditeljski postupak mijenja kôd; to će se odraziti na kodu dječjeg procesa.

Kako korištenje vfork () ne stvara zasebne adresne prostore za podređene i roditeljske procese. Dakle, mora biti provoditi gdje se dječji proces poziva exec () odmah nakon stvaranja. Dakle, neće biti prosipanja adresnog prostora, a to je onaj učinkovit način stvaranja procesa. vfork se ne koristi copy-on-write.

  1. Primarna razlika između fork i vfork je u tome što je podređeni proces kreiran od strane viljuška ima zasebni memorijski prostor iz roditeljskog procesa. Međutim, dječji proces kreiran od strane vfork sistemski poziv dijeli isti adresni prostor svog roditeljskog procesa.
  2. Podređeni proces stvoren je pomoću vilice izvršiti istovremeno s roditeljskim procesom. S druge strane, dječji proces stvoren pomoću vfork obustaviti izvršenje nadređenog postupka do njegovog izvršenja.
  3. Budući da je memorijski prostor roditeljskog i nadređenog procesa odvojena modifikacija koja se vrši u bilo kojem od procesa ne utječe na ostale stranice. Međutim, kako proces nadređenog i nadređenog dijeli istu izmjenu memorijske adrese izvršene bilo kojim procesom odražava se u adresnom prostoru.
  4. Koristi se vilica sistemskog poziva () copy-on-write kao alternativa omogućujući djeci i roditeljima da dijele isti adresni prostor sve dok bilo koji od njih ne izmijeni stranice. S druge strane, vfork ne koristi copy-on-write.

Zaključak:

Sustavni poziv vfork () mora se provesti kada dječji proces poziva exec () odmah nakon kreiranja pomoću fork (). Ovdje neće biti od koristi zasebni prostor adrese za dijete i roditelje.