Διαφορά μεταξύ mmap και malloc

mmap εναντίον malloc

Υπάρχει δυναμική μνήμη στο C και αυτό δείχνει την κατανομή της μνήμης στη γλώσσα προγραμματισμού C μέσω ενός συνόλου λειτουργιών που υπάρχουν στην τυπική βιβλιοθήκη C. Ένα από αυτά είναι malloc, το οποίο αναφέρεται στην κατανομή μνήμης. Στο σύστημα UNIX υπάρχει mmap, το οποίο αναφέρεται σε ένα σύστημα χαρτογράφησης μνήμης που συνοδεύεται από το δικό του μοναδικό I / O. Αυτά τα δύο (mmap και malloc) στην ονομαστική τους αξία θα έχουν την ίδια λειτουργία, αλλά περαιτέρω έλεγχος αποκαλύπτει κάποιες διαφορές. Αυτές οι διαφορές, που προκύπτουν από τη λειτουργικότητα, περιγράφονται παρακάτω.



Διαφορές

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

Η κύρια διεπαφή κατανομής μνήμης είναι malloc. Αυτό είναι το μεγαλύτερο στη βιβλιοθήκη Γ. Μέρος της διαχείρισης κώδικας που περιέχεται σε αυτό είναι mmap. Όταν το malloc λειτουργεί, συγκεντρώνει όλες τις διαθέσιμες εγκαταστάσεις συστήματος. Πρόσθετες εγκαταστάσεις συστήματος μπορούν να κινητοποιηθούν μέσω του πυρήνα, η οποία είναι μία από τις στρατηγικές διαχείρισης μνήμης που χρησιμοποιούν τα συστήματα για να διασφαλίσουν ότι υπάρχει ικανοποιητική κατανομή μνήμης. Ωστόσο, η διαδικασία δεν είναι απλή και έχει γίνει περίπλοκη για τον μοναδικό λόγο της αποτροπής της δημιουργίας απλών προγραμμάτων που μπορούν να αποδιοργανώσουν την κατανομή της μνήμης και να δημιουργήσουν Φτωχός εκτέλεση.



Το 'mmap' από την άλλη πλευρά είναι μια κλήση συστήματος που αναλαμβάνει τη φόρτιση και ζητά από τον πυρήνα να βρει μια αχρησιμοποίητη και συνεχόμενη περιοχή στη διεύθυνση μιας εφαρμογής που είναι αρκετά μεγάλη ώστε να επιτρέπει τη χαρτογράφηση αρκετών σελίδων μνήμης. Υπάρχει επίσης η δημιουργία δομών διαχείρισης εικονικής μνήμης οι οποίες στην ουσία δεν μπορούν να οδηγήσουν σε μια προεπιλογή.

Το Malloc λειτουργεί γενικά στο μεγαλύτερο μέρος της διαδικασίας διαχείρισης μνήμης. Σε περίπτωση που το πρόγραμμα απαιτεί επιπλέον μνήμη, αυτό δανείζεται από το λειτουργικό σύστημα. Το Mmap από την άλλη πλευρά χρησιμοποιεί έναν διακόπτη περιβάλλοντος που μετατρέπεται σε γη πυρήνα.

Το Malloc είναι πιο κατάλληλο για εκχώρηση μνήμης σε οποιαδήποτε εφαρμογή εκτελείται στο σύστημα σε αντίθεση με τη χρήση του mmap. Αυτό είναι που απαιτείται να συμβεί από προεπιλογή, εκτός από τις ειδικές περιπτώσεις όταν αυτό επιτρέπεται.



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

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

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



Το Mmap είναι πλεονεκτικό σε σχέση με το malloc επειδή η μνήμη που καταναλώνεται από το mmap επιστρέφεται αμέσως στο λειτουργικό σύστημα. Η μνήμη που εξαντλήθηκε από το malloc δεν επιστρέφεται ποτέ εκτός εάν υπάρχει διακοπή τμημάτων δεδομένων. Αυτή η μνήμη διατηρείται ειδικά για επαναχρησιμοποίηση.

Περίληψη

«Malloc» σημαίνει το κύριο σημείο εκχώρησης μνήμης

Ένα σύστημα mmap καλεί και ζητά έναν πυρήνα για να βρει περιοχές που δεν χρησιμοποιούνται σε διευθύνσεις εφαρμογών που μπορούν να φιλοξενήσουν χαρτογράφηση πολλών σελίδων μνήμης

Το Mmap δεν συνιστάται για εκχώρηση μνήμης καθώς διαχωρίζει τη διαθέσιμη μνήμη και δεν μπορεί να πραγματοποιήσει κλήσεις συστήματος

Ένα πλεονέκτημα του mmap έναντι του malloc είναι η διαθεσιμότητα μνήμης, σε αντίθεση με τη μνήμη malloc, η οποία επαναχρησιμοποιείται.

Φρέσκες Σκέψεις

Κατηγορία

Επιλογή Προγράμματος Επεξεργασίας

Οικιακοί Εξοπλισμοί

Glam Διαβίωσης

Γεωγραφία

Οδηγοί Δώρων

Ψυχαγωγία

Ιστορία Της Αεροπορίας

Ηγέτες

Γυναίκες Της Χρονιάς

Υγεία Και Άσκηση

Συνιστάται