Διαφορά μεταξύ του πιρουνιού () και του vfork ()

Συγγραφέας: Laura McKinney
Ημερομηνία Δημιουργίας: 2 Απρίλιος 2021
Ημερομηνία Ενημέρωσης: 7 Ενδέχεται 2024
Anonim
Διαφορά μεταξύ του πιρουνιού () και του vfork () - Τεχνολογία
Διαφορά μεταξύ του πιρουνιού () και του vfork () - Τεχνολογία

Περιεχόμενο


Και τα δυο πιρούνι() και vfork () είναι το κλήσεις συστήματος που δημιουργεί μια νέα διαδικασία που είναι ίδια με τη διαδικασία που επικαλέστηκε fork () ή vfork (). Χρησιμοποιώντας πιρούνι() επιτρέπει την ταυτόχρονη εκτέλεση της γονικής και της παιδικής διαδικασίας. Ο άλλος τρόπος, vfork () αναστέλλει την εκτέλεση της γονικής διαδικασίας έως ότου ολοκληρωθεί η εκτέλεση του παιδιού. Η κύρια διαφορά μεταξύ των κλήσεων συστήματος fork () και vfork () είναι ότι η διαδικασία δημιουργίας παιδιού που χρησιμοποιεί το πιρούνι έχει ξεχωριστό χώρο διευθύνσεων όπως εκείνο της γονικής διαδικασίας. Από την άλλη πλευρά, η διαδικασία παιδιού που δημιουργήθηκε χρησιμοποιώντας το vfork πρέπει να μοιραστεί το χώρο διευθύνσεων της γονικής διαδικασίας.

Ας βρούμε κάποιες διαφορές μεταξύ των πιρουνιών () και του vfork () με τη βοήθεια του πίνακα σύγκρισης που φαίνεται παρακάτω.

  1. Συγκριτικό διάγραμμα
  2. Ορισμός
  3. Βασικές διαφορές
  4. συμπέρασμα

Συγκριτικό διάγραμμα

Βάση σύγκρισηςπιρούνι()vfork ()
ΒασικόςΗ διεργασία παιδιού και η γονική διαδικασία έχουν ξεχωριστούς χώρους διεύθυνσης.Η διαδικασία παιδιού και η γονική διαδικασία μοιράζονται τον ίδιο χώρο διευθύνσεων.
ΕκτέλεσηΗ διαδικασία γονέων και παιδιού εκτελείται ταυτόχρονα.Η γονική διαδικασία παραμένει αναρτημένη έως ότου ολοκληρωθεί η εκτέλεση του παιδιού.
ΤροποποίησηΕάν η διαδικασία παιδιού αλλάξει οποιαδήποτε σελίδα στο χώρο διεύθυνσης, είναι αόρατη στη γονική διεργασία καθώς ο χώρος διευθύνσεων είναι ξεχωριστός.Εάν η διαδικασία παιδιού αλλάξει οποιαδήποτε σελίδα στο χώρο διευθύνσεων, είναι ορατή στη γονική διαδικασία καθώς μοιράζεται τον ίδιο χώρο διευθύνσεων.
Αντιγραφή-εγγραφήτο fork () χρησιμοποιεί την αντιγραφή στο γράψιμο ως εναλλακτική λύση όπου ο γονέας και το παιδί μοιράζονται τις ίδιες σελίδες μέχρι να τροποποιήσει οποιαδήποτε από αυτές την κοινόχρηστη σελίδα.Το vfork () δεν χρησιμοποιεί copy-on-write.


Ορισμός του πιρουνιού ()

ο πιρούνι() είναι μια χρήση κλήσης συστήματος για τη δημιουργία ενός νέα διαδικασία. Η νέα διαδικασία που δημιουργείται από την κλήση fork () είναι η διαδικασία του παιδιού, της διαδικασίας που επικαλείται την κλήση συστήματος fork (). Ο κώδικας της διαδικασίας παιδιού είναι πανομοιότυπος με τον κώδικα της γονικής διαδικασίας. Μετά τη δημιουργία της διαδικασίας του παιδιού, τόσο η διαδικασία, δηλαδή η γονική και η παιδική διαδικασία ξεκινούν την εκτέλεση τους από την επόμενη δήλωση μετά από το διχάλα () και εκτελούνται και οι δύο διαδικασίες ΤΑΥΤΟΧΡΟΝΑ.

Η γονική διαδικασία και η διαδικασία παιδιού έχουν ξεχωριστό χώρο διεύθυνσης. Επομένως, όταν οποιαδήποτε από τις διαδικασίες τροποποιεί οποιαδήποτε δήλωση ή μεταβλητή στον κώδικα. Δεν θα αντικατοπτρίζεται σε άλλους κώδικες διεργασιών. Ας υποθέσουμε ότι αν η διαδικασία παιδιού τροποποιεί τον κώδικα, δεν θα επηρεάσει τη γονική διαδικασία.


Κάποια παιδική διαδικασία μετά τη δημιουργία τους καλεί αμέσως exec (). Η κλήση συστήματος exec () αντικαθιστά τη διαδικασία με το πρόγραμμα που καθορίζεται στην παράμετρο του. Στη συνέχεια, ο χωριστός χώρος διευθύνσεων της διαδικασίας παιδιού δεν είναι χρήσιμος. Η μία εναλλακτική λύση είναι η αντιγραφή στο γράψιμο.

ο copy-on-write αφήστε τη διαδικασία γονέα και παιδιού να μοιράζεται τον ίδιο χώρο διεύθυνσης. Αν οποιαδήποτε από τις διαδικασίες γράψει στις σελίδες του χώρου διευθύνσεων, το αντίγραφο του χώρου διευθύνσεων δημιουργείται για να επιτρέψει και στη διαδικασία να λειτουργεί ανεξάρτητα.

Ορισμός του vfork ()

Η τροποποιημένη έκδοση του πιρουνιού () είναι vfork (). ο vfork () η κλήση συστήματος χρησιμοποιείται επίσης για τη δημιουργία μιας νέας διαδικασίας. Παρόμοια με το πηρούνι (), εδώ επίσης η νέα διαδικασία που δημιουργείται είναι η παιδική διαδικασία, της διαδικασίας που επικαλείται vfork (). Ο κώδικας διαδικασίας παιδιού είναι ταυτόσημος με τον γονικό κώδικα διεργασίας. Εδώ, η διαδικασία του παιδιού αναστέλλει την εκτέλεση της γονικής διαδικασίας έως ότου ολοκληρωθεί η εκτέλεσή της, καθώς η διαδικασία διαμοιράζει τον ίδιο χώρο διευθύνσεων που πρέπει να χρησιμοποιηθεί.

Καθώς η διαδικασία παιδιού και γονέα μοιράζεται το ίδιο διάστημα διευθύνσεων. Αν οποιαδήποτε από τις διαδικασίες τροποποιήσει τον κώδικα, είναι ορατή στην άλλη διαδικασία που μοιράζεται τις ίδιες σελίδες. Ας υποθέσουμε αν η γονική διαδικασία μεταβάλλει τον κώδικα. θα αντικατοπτρίζεται στον κώδικα της παιδικής διαδικασίας.

Καθώς η χρήση του vfork () δεν δημιουργεί ξεχωριστούς χώρους διεύθυνσης για διαδικασίες παιδιού και γονέα. Ως εκ τούτου, πρέπει να είναι εφαρμοστεί όπου καλείται η διαδικασία παιδιού exec () αμέσως μετά τη δημιουργία του. Έτσι, δεν θα υπάρξει σπατάλη χώρου διευθύνσεων, και είναι το αποτελεσματικός τρόπο για να δημιουργήσετε μια διαδικασία. vfork δεν χρησιμοποιεί copy-on-write.

  1. Η κύρια διαφορά μεταξύ του πιρουνιού και του vfork είναι ότι η παιδική διαδικασία που δημιουργήθηκε από το πιρούνι έχει ένα ξεχωριστό χώρο μνήμης από τη γονική διαδικασία. Ωστόσο, η διαδικασία παιδιού που δημιουργήθηκε από το vfork η κλήση συστήματος μοιράζεται το ίδιο διάστημα διευθύνσεων της μητρικής διαδικασίας.
  2. Η διαδικασία του παιδιού δημιουργήθηκε με τη χρήση πιρουνιού εκτέλεση ταυτόχρονα με τη γονική διαδικασία. Από την άλλη πλευρά, η διαδικασία παιδιού δημιουργήθηκε με τη χρήση του vfork αναστέλλω την εκτέλεση της γονικής διαδικασίας μέχρι την ολοκλήρωσή της.
  3. Καθώς ο χώρος μνήμης της γονικής και της παιδικής διαδικασίας είναι ξεχωριστή τροποποίηση που γίνεται από οποιαδήποτε από τις διαδικασίες δεν επηρεάζει τις σελίδες άλλων. Ωστόσο, καθώς η γονική και η παιδική διαδικασία μοιράζονται την ίδια τροποποίηση της διεύθυνσης μνήμης που πραγματοποιείται από οποιαδήποτε διαδικασία αντανακλά στον χώρο διευθύνσεων.
  4. Η χρήση του πλέγματος κλήσης συστήματος () copy-on-write ως εναλλακτική λύση, η οποία αφήνει τη διαδικασία παιδιών και γονέων να μοιράζονται τον ίδιο χώρο διευθύνσεων μέχρι να τροποποιήσει ο ένας από αυτούς τις σελίδες. Από την άλλη πλευρά, το vfork δεν χρησιμοποιεί copy-on-write.

Συμπέρασμα:

Η κλήση συστήματος vfork () πρέπει να υλοποιηθεί όταν η διαδικασία κλήσης παιδιού exec () αμέσως μετά τη δημιουργία της χρησιμοποιεί το πιρούνι (). Ως χωριστός χώρος διευθύνσεων για παιδική και γονική διαδικασία δεν θα έχει καμία χρησιμότητα εδώ.