Diferència entre fork () i vfork ()

Autora: Laura McKinney
Data De La Creació: 2 Abril 2021
Data D’Actualització: 10 Ser Possible 2024
Anonim
Diferència entre fork () i vfork () - Tecnologia
Diferència entre fork () i vfork () - Tecnologia

Content


Tots dos forquilla () i vfork () són els trucades del sistema que crea un procés nou idèntic al procés que va invocar fork () o vfork (). Utilitzant forquilla () permet l'execució simultània del procés de pares i fills. Per contra, vfork () suspèn l’execució del procés parent fins que el procés fill finalitzi la seva execució. La diferència principal entre la trucada del sistema fork () i vfork () és que el procés fill creat amb fork té un espai d’adreces separat com el del procés pare. D'altra banda, el procés fill creat amb vfork ha de compartir l'espai d'adreces del procés pare.

Anem a trobar algunes diferències entre fork () i vfork () amb l'ajut del gràfic de comparació que es mostra a continuació.

  1. Gràfic de comparació
  2. Definició
  3. Diferències claus
  4. Conclusió

Gràfic de comparació

Bases per a la comparacióforquilla ()vfork ()
BàsicEl procés infantil i el procés parent tenen espais d’adreces diferents.El procés infantil i el procés parent comparteixen el mateix espai d’adreces.
ExecucióEl procés de pares i fills s’executen simultàniament.El procés progenitor queda suspès fins que el procés fill finalitzi la seva execució.
ModificacióSi el procés fill altera qualsevol pàgina de l’espai d’adreces, és invisible per al procés progenitor ja que els espais d’adreces estan separats.Si el procés fill altera qualsevol pàgina de l’espai d’adreces, és visible per al procés progenitor ja que comparteixen el mateix espai d’adreces.
Copiar-escriurefork () utilitza una copia d’escriptura com a alternativa on el pare i el fill comparteixen les mateixes pàgines fins que qualsevol d’ells modifiqui la pàgina compartida.vfork () no utilitza còpia-escriptura.


Definició de fork ()

El forquilla () és un ús de trucada del sistema per crear un nou procés. El nou procés creat per la trucada fork () és el procés fill, del procés que va invocar la trucada del sistema fork (). El codi del procés fill és idèntic al del procés del seu progenitor. Després del procés de creació del fill, tant el procés, és a dir, el procés pare i el fill comencen la seva execució a partir de la següent instrucció després de forquilla () i tots dos processos s'executen. simultàniament.

El procés parent i el procés fill tenen espai d’adreces separades. Per tant, quan qualsevol dels processos modifica qualsevol declaració o variable del codi. No es reflectiria en altres codis de procés. Suposem que si el procés fill modifica el codi, això no afectaria el procés pare.


Alguns processos infantils després de la seva creació truquen immediatament exec (). Trucada del sistema exec () substitueix el procés amb el programa especificat al seu paràmetre. Aleshores, l'espai d'adreces separat del procés infantil no serveix de res. L’alternativa aquí és la còpia a escriure.

El còpia a escriure deixeu que el progenitor i el progenitor comparteixin el mateix espai d’adreces. Si algun dels processos escriu a les pàgines de l’espai d’adreces, la còpia de l’espai d’adreces es crea per permetre que tant el procés funcioni de manera independent.

Definició de vfork ()

La versió modificada de fork () és vfork (). El vfork () La trucada al sistema també s'utilitza per crear un procés nou. Similar al fork (), aquí també el nou procés creat és el procés fill, del procés que va invocar vfork (). El codi de procés fill també és idèntic al codi de procés parent. Aquí, el procés infantil suspèn l’execució del procés pare fins que finalitzi la seva execució, ja que tant el procés comparteix el mateix espai d’adreces que s’ha d’utilitzar.

A mesura que el procés del fill i dels pares comparteix el procés mateix espai d’adreces. Si algun dels processos modifica el codi, és visible per a l’altre procés compartint les mateixes pàgines. Suposem que si el procés pare altera el codi; reflectirà en el procés del codi del fill.

Igual que l'ús de vfork () no crea espais d'adreces diferents per als processos dels fills i dels pares. Per tant, deu ser implementat on truca el procés del nen exec () immediatament després de la seva creació. Per tant, no hi haurà una pèrdua d'espai d'adreces, i és eficient forma de crear un procés. vfork no utilitza còpia a escriure.

  1. La diferència principal entre fork i vfork és que el procés fill creat per forquillaespai de memòria separat del procés progenitor. Tanmateix, el procés infantil creat per l ' vfork la trucada del sistema comparteix el mateix espai d’adreces del procés parental.
  2. El procés infantil creat amb forquilla executar simultàniament amb el procés progenitor. D'altra banda, es va crear el procés infantil mitjançant vfork suspendre l'execució del procés pare fins que s'hagi completat la seva execució.
  3. Com que l'espai de memòria del procés de pares i fills és una modificació separada per qualsevol dels processos, no afecta les pàgines d'altres. Tanmateix, com el procés pare i fill comparteix la mateixa modificació d’adreça de memòria feta per qualsevol procés es reflecteix a l’espai d’adreces.
  4. El sistema de forquilla de trucades () utilitza còpia a escriure com a alternativa, que permet que el procés fill i pare comparteixin el mateix espai d’adreces fins que qualsevol d’ells modifiqui les pàgines. D'altra banda, el vfork no utilitza copy-on-writing.

Conclusió:

La trucada del sistema vfork () s’ha d’implementar quan s’executa la trucada del procés fill () immediatament després de la seva creació mitjançant fork (). Com a espai d'adreces separats per al procés del fill i del pare no serveix de res.