Разлика између форк () и вфорк ()

Аутор: Laura McKinney
Датум Стварања: 2 Април 2021
Ажурирати Датум: 10 Може 2024
Anonim
Разлика између форк () и вфорк () - Технологија
Разлика између форк () и вфорк () - Технологија

Садржај


Обоје виљушка () и вфорк () су системски позиви то ствара нови процес идентичан процесу који је позвао форк () или вфорк (). Користећи виљушка () омогућава истовремено извршавање родитељског и надређеног процеса. Други начин, вфорк () прекида извршење надређеног процеса док надређени процес не заврши његово извршавање. Примарна разлика системског позива форк () и вфорк () је у томе што подређени процес створен помоћу форк-а има засебни адресни простор као и надређени. С друге стране, дечији процес креиран помоћу вфорк-а мора делити адресни простор свог родитељског процеса.

Наћи ћемо неке разлике између форк () и вфорк () уз помоћ графикона упоређивања приказаног доле.

  1. Упоредни графикон
  2. Дефиниција
  3. Кључне разлике
  4. Закључак

Упоредни графикон

Основе за упоређивањевиљушка ()вфорк ()
ОсновниНадређени процес и родитељски процес имају одвојене адресне просторе.Надређени и родитељски процес имају исти адресни простор.
ИзвршењеПроцес родитеља и детета се извршава истовремено.Родитељски процес остаје обустављен док дечији процес не заврши извршење.
МодификацијаАко надређени процес измијени било коју страницу у адресном простору, он је родитељском процесу невидљив јер су адресни простори засебни.Ако подређени процес измијени било коју страницу у адресном простору, то је видљиво родитељском процесу јер дијеле исти адресни простор.
Копирај-пишифорк () користи копирање приликом писања као алтернативу где родитељ и дете деле исте странице док неко од њих не измени заједничку страницу.вфорк () не користи копирање приликом писања.


Дефиниција форк ()

Тхе виљушка () је системски позив за креирање нови процес. Нови процес креиран позивом форк () је надређени процес, процеса који је позвао системски позив форк (). Код дечијег процеса идентичан је коду надређеног процеса. Након креирања подређеног процеса, оба процеса, тј. Надређени и подређени процес започињу извршавање из наредне изјаве након форк () и оба процеса се извршавају истовремено.

Родитељски процес и дечији процес заиста постоје засебни адресни простор. Дакле, када било који од процеса модифицира било који исказ или варијаблу у коду. То се не би одразило у другим процесним кодовима. Претпоставимо да ако надређени процес модификује код, неће утицати на родитељски процес.

Нека деца процес након њиховог стварања одмах позову екец (). Системски позив екец () замењује поступак са програмом наведеним у његовом параметру. Тада засебни адресни простор дечијег процеса нема никакве користи. Једна од алтернатива је копирање на писање.


Тхе копирај-пиши пустите родитеља и дијете да дијеле исти адресни простор. Ако било који од процеса напише на страницама у адресном простору, копија адресног простора се ствара како би оба процеса могла независно радити.

Дефиниција вфорк ()

Модификована верзија форк () је вфорк (). Тхе вфорк () системски позив се такође користи за креирање новог процеса. Слично као форк (), и овде је створен нови процес подређени процес, процеса који је позвао вфорк (). Подређени код процеса такође је идентичан коду надређеног процеса. Ево, дечији процес обуставља извршење надређеног процеса док не заврши његово извршавање јер оба процеса деле исти адресни простор који треба користити.

Како процес детета и родитеља дели исти адресни простор. Ако било који од процеса измијени код, видљив је другом процесу који дијели исте странице. Претпоставимо да ли родитељски процес мења код; одразиће се у коду дечијег процеса.

Како употреба вфорк () не ствара засебне адресне просторе за подређене и родитељске процесе. Дакле, мора бити спроведено где се дечији процес позива екец () одмах по њеном стварању. Дакле, неће бити расипања адресног простора, а то је ефикасан начин креирања процеса. вфорк се не користи копирај-пиши.

  1. Примарна разлика између форк и вфорк је у томе што је дечији процес креиран од стране виљушка има одвојени меморијски простор из родитељског процеса. Међутим, дечији процес креиран од стране вфорк системски позив дели исти адресни простор свог родитељског процеса.
  2. Дечији процес креиран помоћу вилице извршити истовремено са родитељским процесом. Са друге стране, дечији процес креиран помоћу вфорк-а суспенд извршење родитељског процеса до његовог извршења.
  3. Како је меморијски простор родитељског и надређеног процеса одвојена модификација извршена било којим процесом не утиче на туђе странице. Међутим, како родитељ и подређени процес дијеле исту измјену меморијске адресе извршене било којим процесом одражава се у адресном простору.
  4. Користи се системска вилица () копирај-пиши као алтернатива, која омогућава деци и родитељима да деле исти адресни простор док било који од њих не модификује странице. Са друге стране, вфорк не користи копирање приликом писања.

Закључак:

Системски позив вфорк () мора бити имплементиран када подређени процес позива екец () одмах након креирања помоћу форк (). Овде вам неће бити од користи посебан адресни простор за дечји и родитељски процес.