Хајде да нађемо неке разлике између форк () и вфорк () уз помоћ табеле за упоређивање приказане испод.
Цомпарисон Цхарт
Основа за поређење | виљушка () | вфорк () |
---|---|---|
Басиц | Дечји процес и надређени процес имају одвојене адресне просторе. | Дечји процес и надређени процес деле исти адресни простор. |
Извршење | Процес родитељ и дете се извршавају истовремено. | Родитељски процес остаје обустављен док дијете не доврши своје извршење. |
Модификација | Ако дечији процес мења било коју страницу у адресном простору, он је невидљив за родитељски процес пошто је адресни простор одвојен. | Ако дечији процес мења било коју страницу у адресном простору, она је видљива родитељском процесу пошто дијеле исти адресни простор. |
Копирај на писање | форк () користи цопи-он-врите као алтернативу где родитељ и дијете дијеле исте странице док било која од њих не измијени дијељену страницу. | вфорк () не користи цопи-он-врите. |
Дефиниција форк ()
Форк () је системски позив који се користи за креирање новог процеса . Нови процес креиран позивом форк () је дечији процес, процеса који је позвао форк () системски позив. Код подређеног процеса је идентичан коду матичног процеса. Након креирања дечјег процеса, оба процеса тј. Родитељски и подређени процес почињу своје извршење из наредног израза након форк () и оба процеса се извршавају истовремено .
Родитељски процес и дечији процес имају одвојени адресни простор . Дакле, када било који од процеса модификује било који израз или варијаблу у коду. То се не би одразило у другим процесним кодовима. Претпоставимо да ако дечији процес модификује код, то неће утицати на надређени процес.
Неко дете процес након њиховог креирања одмах позива екец () . Системски позив екец () замењује процес програмом наведеним у његовом параметру. Тада одвојени адресни простор дјететовог процеса није од користи. Једина алтернатива је копирање на писање.
Копирај на писање дозвољава родитељ и дете да деле исти адресни простор. Ако било који од процеса пише на страницама у адресном простору, креира се копија адресног простора како би се омогућило да оба процеса раде независно.
Дефиниција вфорк ()
Модификована верзија форк () је вфорк (). Системски позив вфорк () се такође користи за креирање новог процеса. Слично као и форк (), овде је и нови процес креиран као дечији процес, процеса који је позвао вфорк (). Код процеса за дете је такође идентичан коду надређеног процеса. Овде, дечији процес обуставља извршење надређеног процеса док не доврши његово извршење јер оба процеса деле исти простор адресе за употребу.
Као дијете и родитељски процес дијели исти адресни простор . Ако било који од процеса мења код, он је видљив другом процесу који дели исте странице. Претпоставимо да ли матични процес мења код; то ће се одразити у коду процеса дјетета.
Као што употреба вфорк () не ствара одвојене адресне просторе за надређене и надређене процесе. Дакле, мора се имплементирати тамо гдје дијете позива позиве екец () одмах након његовог креирања. Дакле, неће бити расипања адресног простора и то је ефикасан начин за креирање процеса. вфорк не користи цопи-он- врите.
Кључне разлике између виљушке () и вфорк ()
- Основна разлика између форк-а и вфорк-а је у томе што дете процес креиран од стране виљушке има одвојен меморијски простор од родитељског процеса. Међутим, дечији процес који је креирао вфорк системски позив дели исти адресни простор свог надређеног процеса.
- Дјечји процес креиран помоћу форк извршава истовремено с надређеним процесом. С друге стране, дечији процес креиран помоћу вфорк обуставља извршење надређеног процеса до његовог извршења.
- Како је меморијски простор родитељског и подређеног процеса засебна модификација учињена било којим од процеса не утиче на друге странице. Међутим, како родитељски и подређени процес деле исту модификацију адресе меморије која се врши било којим процесом, она се рефлектује у адресном простору.
- Системски позив форк () користи цопи-он-врите као алтернативу, што допушта дечјем и родитељском процесу дељење истог адресног простора док било која од њих не измени странице. С друге стране, вфорк не користи цопи-он-врите.
Закључак:
Системски позив вфорк () мора бити имплементиран када дијете процесира екец () одмах након његовог креирања помоћу форк (). Као одвојени адресни простор за дијете и родитељски процес овдје неће бити од користи.