Starpība starp dakšu () un vfork ()

Autors: Laura McKinney
Radīšanas Datums: 2 Aprīlis 2021
Atjaunināšanas Datums: 10 Maijs 2024
Anonim
Starpība starp dakšu () un vfork () - Tehnoloģija
Starpība starp dakšu () un vfork () - Tehnoloģija

Saturs


Gan jau dakša () un vfork () ir sistēmas zvani kas rada jaunu procesu, kas ir identisks procesam, kas izsaucis dakšu () vai vfork (). Izmantojot dakša () ļauj vienlaikus izpildīt vecāku un bērnu procesu. Citādi, vfork () aptur vecāku procesa izpildi, līdz bērna process pabeidz tā izpildi. Galvenā atšķirība starp dakšas () un vfork () sistēmas izsaukumu ir tāda, ka bērna procesam, kas izveidots, izmantojot dakšiņu, ir atsevišķa adrešu telpa kā vecākprocesam. No otras puses, bērna procesam, kas izveidots, izmantojot vfork, ir jādalās ar vecāku procesa adreses laukumu.

Izmantojot salīdzināšanas diagrammu, kas parādīta zemāk, atradīsim dažas atšķirības starp dakšu () un vfork ().

  1. Salīdzināšanas tabula
  2. Definīcija
  3. Galvenās atšķirības
  4. Secinājums

Salīdzināšanas tabula

Salīdzināšanas pamatsdakša ()vfork ()
PamataBērnu procesam un vecāku procesam ir atsevišķas adreses.Bērnu un vecāku procesos ir viena un tā pati adreses telpa.
IzpildeVecāku un bērnu process tiek veikts vienlaikus.Vecāku process tiek apturēts, līdz bērna process ir pabeigts.
ModifikācijaJa pakārtotais process maina jebkuru lapu adreses telpā, tas vecāku procesam ir neredzams, jo adreses telpa ir atsevišķa.Ja pakārtotais process maina jebkuru lapu adreses telpā, tas ir redzams vecāku procesam, jo ​​viņiem ir viena un tā pati adreses telpa.
Rakstīt uz kopēšanasfork () kā alternatīvu izmanto kopēšanu rakstot, ja vecāks un bērns koplieto vienas un tās pašas lapas, līdz kāds no viņiem maina koplietojamo lapu.vfork () neizmanto kopēšanu rakstot.


Dakšas () definīcija

dakša () ir sistēmas zvana izmantošana, lai izveidotu jauns process. Jaunais process, ko rada dakšas () izsaukums, ir pakārtotais process, process, kurā tika izsaukts dakšas () sistēmas zvans. Bērnu procesa kods ir identisks tā vecāka procesa kodam. Pēc bērna procesa izveidošanas gan process, t.i., vecāku un bērnu process sāk savu izpildi no nākamā paziņojuma pēc dakšas (), un abi procesi tiek izpildīti vienlaicīgi.

Vecāku procesam un bērna procesam tas ir atsevišķa adreses telpa. Tātad, kad kāds no procesiem maina jebkuru paziņojumu vai mainīgo kodā. Citos procesa kodos tas netiks atspoguļots. Pieņemsim, ka, ja bērnu process maina kodu, tas neietekmēs vecāku procesu.

Daži bērna procesi pēc viņu radīšanas nekavējoties zvana izpildīt (). Izpildes () sistēmas izsaukums aizstāj procesu ar programmu, kas norādīta tā parametrā. Tad bērna procesa atsevišķajai adreses telpai nav nozīmes. Viena alternatīva šeit ir copy-on-write.


kopēt-rakstīt ļaujiet vecākiem un bērnam koplietot vienādu adreses telpu. Ja kāds no procesiem raksta lapās adreses telpā, adreses telpas kopija tiek izveidota, lai abi procesi darbotos neatkarīgi.

Vfork () definīcija

Pārveidotā dakšas () versija ir vfork (). vfork () Sistēmas zvanu izmanto arī jauna procesa izveidošanai. Līdzīgi kā dakša (), arī šeit radītais jaunais process ir bērna process, process, kas izsauca vfork (). Pakārtotais procesa kods ir identisks arī vecāku procesa kodam. Šeit notiek bērna process aptur izpildi vecākprocesu, līdz tas pabeidz tā izpildi, jo abiem procesiem ir viena un tā pati adrešu telpa, kuru izmantot.

Tā kā bērna un vecāku process dalās tā pati adreses telpa. Ja kāds no procesiem maina kodu, tas ir redzams citam procesam, kuram ir tās pašas lapas. Pieņemsim, ja vecāku process maina kodu; tas tiks atspoguļots bērna procesa kodā.

Tā kā vfork () izmantošana nerada atsevišķas adrešu telpas bērnu un vecāku procesiem. Līdz ar to tam ir jābūt ieviests kur zvana bērna process izpildīt () tūlīt pēc tās izveidošanas. Tātad, adrešu telpa netiks tērēta, un tā ir efektīvs veids, kā izveidot procesu. vfork nelieto kopēt-rakstīt.

  1. Galvenā atšķirība starp dakšiņu un vfork ir tā, ka bērna izveidotais process dakša ir atsevišķa atmiņas telpa no vecāku procesa. Tomēr bērnu radītais process vfork sistēmas zvans dalās tā pati adreses telpa tā vecāku procesu.
  2. Bērna process, kas izveidots, izmantojot dakšiņu izpildīt vienlaicīgi ar vecāku procesu. No otras puses, bērna process, kas izveidots, izmantojot vfork apturēt vecāku procesa izpilde līdz tā pabeigšanai.
  3. Tā kā vecāku un bērnu procesu atmiņa ir atsevišķa modifikācija, ko veic kāds no procesiem, tas neietekmē citu lapas. Tomēr, tā kā vecāku un bērnu procesam ir viena un tā pati atmiņas adreses modifikācija, ko veic jebkurš process, tas atspoguļojas adreses telpā.
  4. Sistēmas izsaukuma dakša () izmanto kopēt-rakstīt kā alternatīva, kas ļauj bērnam un vecākam veikt kopīgu adresi vienā adresē, līdz kāds no viņiem maina lapas. No otras puses, vfork neizmanto copy-on-write.

Secinājums:

Sistēmas zvans vfork () ir jāievieš, kad bērna procesa izsaukums exec () tūlīt pēc tā izveidošanas, izmantojot dakšiņu (). Tā kā atsevišķa adrešu telpa bērna un vecāku procesam šeit nebūs lietderīga.