Ļaujiet mums atrast dažas atšķirības starp dakšu () un vfork () ar zemāk redzamo salīdzinājuma diagrammu.
Salīdzinājuma diagramma
Salīdzinājuma pamats | dakša () | vfork () |
---|---|---|
Pamata | Bērnu procesam un vecāku procesam ir atsevišķas adreses telpas. | Bērnu procesam un vecāku procesam ir tāda pati adrešu telpa. |
Izpilde | Vecāku un bērnu process notiek vienlaicīgi. | Vecāku process paliek apturēts, līdz bērna process ir pabeigts. |
Izmaiņas | Ja bērna process maina jebkuru adresi adreses telpā, tas ir neredzams vecākam procesam, jo adrešu telpa ir atsevišķa. | Ja bērna process maina jebkuru adresi adreses telpā, tas ir redzams vecākiem procesiem, jo tiem ir tāda pati adrešu telpa. |
Copy-on-write | dakša () izmanto kopiju kā rakstīt kā alternatīvu, ja vecāki un bērni koplieto tās pašas lapas, līdz kāds no tiem maina kopīgo lapu. | vfork () neizmanto copy-on-write. |
Dakšas definīcija ()
Dakša () ir sistēmas zvana izmantošana, lai izveidotu jaunu procesu . Jaunais process, ko rada dakšu () zvans, ir bērna process, process, kas ieviesa dakšu () sistēmas zvanu. Bērna procesa kods ir identisks tās vecāka procesa kodam. Pēc bērna procesa izveides gan process, gan 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 procesu un bērnu procesam ir atsevišķa adrešu telpa . Tādējādi, ja kāds no procesiem maina jebkuru kodu vai mainīgo kodu. Tas nebūtu atspoguļots citos procesa kodos. Pieņemsim, ka, ja bērnu process maina kodu, tas neietekmētu vecāku procesu.
Daži bērna procesi pēc to izveides nekavējoties izsauc izpildi () . Exec () sistēmas zvans aizvieto procesu ar tās parametrā norādīto programmu. Tad bērna procesa atsevišķa adrešu telpa nav noderīga. Viena alternatīva šeit ir kopēt uz rakstīšanu.
Copy-on-write ļauj koplietot vecāku un bērnu, lai dalītos tajā pašā adreses telpā. Ja kāds no procesiem raksta adreses vietas lapās, tiek izveidots adrešu telpas kopija, lai ļautu abiem procesiem darboties neatkarīgi.
Vforka definīcija ()
Dakšas () modificētā versija ir vfork (). Vfork () sistēmas zvanu izmanto arī, lai izveidotu jaunu procesu. Līdzīgi kā dakša (), šeit tiek radīts arī jaunais process, kas ir bērna process, process, kas izmantoja vforku (). Bērna procesa kods ir identisks arī mātes procesa kodam. Šeit bērna process aptur vecāku procesu izpildi, līdz tas pabeidz izpildi, jo abiem procesiem ir tāda pati adrešu telpa, ko izmantot.
Tā kā bērna un vecāku procesam ir tāda pati adrešu telpa . Ja kāds no procesiem maina kodu, tas ir redzams citam procesam, kas koplieto tās pašas lapas. Pieņemsim, ka vecāku process mainīs kodu; tas atspoguļosies bērna procesa kodeksā.
Tā kā, izmantojot vfork (), netiek izveidotas atsevišķas adrešu vietas bērnu un vecāku procesiem. Līdz ar to tas ir jāīsteno, ja bērns izsauc izsaukumus exec () tūlīt pēc tās izveides. Tātad adrešu telpa netiks izšķērdēta, un tas ir efektīvs veids, kā izveidot procesu. vfork neizmanto copy-on-write .
Galvenās atšķirības starp dakšu () un vforku ()
- Galvenā atšķirība starp dakšu un vforku ir tā, ka dakšas radītajam bērnu procesam ir atsevišķa atmiņas vieta no vecāka procesa. Tomēr bērna process, ko izveidoja vfork sistēmas izsaukums, koplieto to pašu vecāku procesa adreses telpu .
- Bērnu process, kas izveidots, izmantojot dakšu, tiek izpildīts vienlaicīgi ar vecāku procesu. No otras puses, bērnu process, kas izveidots, izmantojot vfork, aptur vecāku procesu izpildi līdz tā izpildei.
- Tā kā vecāku un bērnu atmiņas atmiņa ir atsevišķa modifikācija, ko veic kāds no procesiem, tas neietekmē citu lapu. Tomēr, tā kā vecāku un bērnu process dalās tajā pašā atmiņas adreses pārveidošanā, ko veic jebkurš process, tas atspoguļojas adrešu telpā.
- Sistēmas izsaukuma dakša () izmanto kopiju kā rakstīt kā alternatīvu, kas ļauj bērniem un vecākiem apstrādāt vienu un to pašu adrešu telpu, līdz kāds no tiem maina lapas. No otras puses, vforks neizmanto kopiju uz rakstīšanu.
Secinājums:
Vfork () sistēmas izsaukums jāīsteno, kad bērnu process izsauc exec () tūlīt pēc tās izveidošanas, izmantojot dakšu (). Kā atsevišķa adrešu telpa bērnu un vecāku procesam šeit nebūs nekādas nozīmes.