Preporučeno, 2024

Izbor Urednika

Razlika između vilice () i vfork ()

Oba fork () i vfork () su sustavni pozivi koji stvaraju novi proces koji je identičan procesu koji je pozvao fork () ili vfork (). Korištenje fork () omogućuje istovremeno izvršavanje nadređenog i podređenog procesa. Drugi način, vfork () obustavlja izvršenje nadređenog procesa sve dok dijete ne dovrši svoje izvršenje. Primarna razlika između sistemskog poziva fork () i vfork () je da dijete proces kreiran pomoću fork ima odvojeni adresni prostor kao onaj roditeljskog procesa. S druge strane, dječji proces stvoren pomoću vfork mora dijeliti adresni prostor svog nadređenog procesa.

Nađimo neke razlike između fork () i vfork () uz pomoć donjeg usporednog dijagrama.

Tablica usporedbe

Osnova za usporedbuvilica ()vfork ()
Osnovni, temeljniDječji proces i nadređeni proces imaju odvojene adresne prostore.Dječji proces i nadređeni proces dijele isti adresni prostor.
IzvršenjeProces roditelj i dijete izvršavaju se istovremeno.Nadređeni proces ostaje obustavljen dok dijete ne dovrši izvršenje.
ModifikacijaAko dijete proces mijenja bilo koju stranicu u adresnom prostoru, ona je nevidljiva roditeljskom procesu kao što je adresni prostor odvojen.Ako dijete proces mijenja bilo koju stranicu u adresnom prostoru, ona je vidljiva nadređenom procesu jer dijele isti adresni prostor.
Copy-on-writefork () koristi copy-on-write kao alternativu gdje roditelj i dijete dijele iste stranice dok bilo koja od njih ne izmijeni dijeljenu stranicu.vfork () ne koristi copy-on-write.

Definicija vilice ()

Fork () je sistemski poziv koji se koristi za stvaranje novog procesa . Novi proces stvoren pozivom fork () je podređeni proces, procesa koji je pozvao fork () sistemski poziv. Kod dječjeg procesa identičan je kodu nadređenog procesa. Nakon stvaranja podređenog procesa, oba procesa tj. Roditeljski i podređeni proces započinju svoje izvršenje iz sljedećeg izraza nakon fork () i oba se procesa izvršavaju istovremeno .

Nadređeni proces i podređeni proces imaju odvojeni adresni prostor . Dakle, kada bilo koji od procesa mijenja bilo koji izraz ili varijablu u kodu. Ne bi se odrazilo u drugim procesnim kodovima. Pretpostavimo da ako dječji proces modificira kôd, to neće utjecati na nadređeni proces.

Neko dijete proces nakon njihovog stvaranja odmah poziva exec () . Sistemski poziv exec () zamjenjuje proces s programom navedenim u njegovom parametru. Tada odvojeni adresni prostor dječjeg procesa nije od koristi. Jedina alternativa ovdje je copy-on-write.

Kopiraj na pisanje dopušta roditelj i dijete da dijele isti adresni prostor. Ako bilo koji od procesa piše na stranicama u adresnom prostoru, kreira se kopija adresnog prostora kako bi oba procesa radila neovisno.

Definicija vfork ()

Modificirana verzija fork () je vfork (). Sistemski poziv vfork () također se koristi za stvaranje novog procesa. Slično kao i fork (), ovdje je također stvoren novi proces djeteta, procesa koji je pozvao vfork (). Dječji procesni kod je također identičan s nadređenim procesnim kodom. Ovdje, podređeni proces obustavlja izvršenje nadređenog procesa dok ne dovrši svoje izvršenje jer oba procesa dijele isti adresni prostor za upotrebu.

Kao dijete i nadređeni proces dijele isti adresni prostor . Ako bilo koji od procesa modificira kôd, on je vidljiv drugom procesu koji dijeli iste stranice. Pretpostavimo da li nadređeni proces mijenja kôd; to će se odraziti u kodu procesa djeteta.

Kao korištenje vfork () ne stvara odvojene adresne prostore za dijete i nadređene procese. Stoga se mora implementirati tamo gdje dijete procesira exec () odmah nakon njegovog stvaranja. Dakle, neće biti rasipanja adresnog prostora i to je učinkovit način stvaranja procesa. vfork ne koristi copy-on-write .

Ključne razlike između vilice () i vfork ()

  1. Primarna razlika između vile i vfork-a je u tome što je dijete proces kreiran od strane vilice ima odvojeni memorijski prostor od roditeljskog procesa. Međutim, podređeni proces kreiran pozivom vfork sustava dijeli isti adresni prostor svoga nadređenog procesa.
  2. Dječji proces kreiran pomoću fork izvršava istodobno s nadređenim procesom. S druge strane, podređeni proces stvoren pomoću vfork obustavlja izvršenje nadređenog procesa do njegovog izvršenja.
  3. Budući da je memorijski prostor procesa roditelja i djeteta odvojena modifikacija učinjena bilo kojim procesom, to ne utječe na druge stranice. Međutim, budući da roditeljski i podređeni proces dijele istu izmjenu adrese memorije učinjenu bilo kojim procesom, ona se odražava u adresnom prostoru.
  4. Sistemska fork poziva () koristi copy-on-write kao alternativu, što dopušta dijete i nadređeni proces dijeljenje istog adresnog prostora sve dok bilo koji od njih ne izmijeni stranice. S druge strane, vfork ne koristi copy-on-write.

Zaključak:

Sistemski poziv vfork () mora biti implementiran kada dijete procesira poziv exec () odmah nakon njegova stvaranja pomoću fork (). Kao odvojeni adresni prostor za dijete i nadređeni proces ovdje neće biti korisno.

Top