Διαφορά μεταξύ στοίβας και σωρού

Συγγραφέας: Laura McKinney
Ημερομηνία Δημιουργίας: 1 Απρίλιος 2021
Ημερομηνία Ενημέρωσης: 12 Ενδέχεται 2024
Anonim
Πώς να χτίσετε ένα στέρεο σπίτι: κάθετες και οριζόντιες τεχνολογίες κατασκευής
Βίντεο: Πώς να χτίσετε ένα στέρεο σπίτι: κάθετες και οριζόντιες τεχνολογίες κατασκευής

Περιεχόμενο


Το Stack και το Heap είναι τα τμήματα μνήμης που χρησιμοποιούνται στις τεχνικές κατανομής μνήμης. Η κύρια διαφορά μεταξύ του Stack και του σωρού είναι ότι η στοίβα περιλαμβάνει γραμμική και διαδοχική κατανομή της μνήμης που χρησιμοποιείται στη στατική κατανομή μνήμης, ενώ ο σωρός ενεργεί ως χώρος αποθήκευσης που μοιράστηκε τυχαία τη μνήμη (Δυναμική κατανομή μνήμης).

Η ταχύτητα είναι η κύρια παράμετρος που διακρίνει τη στοίβα και τον σωρό. μια στοίβα είναι σημαντικά ταχύτερη από ένα σωρό.

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

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

Βάση σύγκρισηςΣωρόςΣωρός
ΒασικόςΗ μνήμη διατίθεται σε (LIFO) Τελευταία σε πρώτη μόδα.Η μνήμη κατανέμεται σε τυχαία σειρά.
Κατανομή και αποεπένδυσηΑυτόματοΕγχειρίδιο
ΚόστοςΠιο λιγοΠερισσότερο
ΕκτέλεσηΣκληράΑνετα
ΕπανάκλησηΕΠΙ)Ο (1)
ΘέμαΈλλειψη μνήμηςΚατακερματισμός μνήμης
Τόπος αναφοράςΕξοχοςΕπαρκής
ΕυκαμψίαΣταθερό μέγεθος και δεν είναι ευέλικτοΗ αλλαγή μεγέθους είναι δυνατή
Χρόνος πρόσβασηςΓρηγορότεραΒραδύτερη


Ορισμός του Stack

Η κατανομή της στοίβας ακολουθεί μια στρατηγική LIFO (Last in first out) για την ανάθεση της μνήμης στις διαδικασίες με τη βοήθεια λειτουργίας push και pop. Κάθε μπλοκ στη μνήμη είναι σταθερού μεγέθους που δεν μπορεί να επεκταθεί ή να συρρικνωθεί. Η τελευταία καταχώρηση στη στοίβα είναι προσβάσιμη ανά πάσα στιγμή. Η στοίβα χρησιμοποιεί μια συνεχή μνήμη όπου ένας δείκτης που ονομάζεται ως βάση στοίβας υποδεικνύει την πρώτη καταχώρηση της στοίβας και ένας άλλος δείκτης που ονομάζεται ως το επάνω μέρος της στοίβας οδηγεί στην τελευταία καταχώρηση της στοίβας.

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


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

Ορισμός του σωρού

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

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

  1. Σε μια στοίβα, η κατανομή και η ανακατανομή γίνεται από τη CPU και είναι αυτόματη, ενώ, σε σωρό, πρέπει να γίνει από τον προγραμματιστή με το χέρι.
  2. Ο χειρισμός πλαισίου σωρού είναι πιο δαπανηρός από το χειρισμό πλαισίου στοίβας.
  3. Η υλοποίηση μιας στοίβ είναι περίπλοκη. Αντιθέτως, η υλοποίηση ενός σωρού είναι απλή.
  4. Μια κλήση λειτουργίας στη στοίβα παίρνει χρόνο O (N). Σε αντίθεση, παίρνει O (1) χρόνο σε ένα σωρό.
  5. Η εφαρμογή Stack πάσχει κυρίως από το πρόβλημα έλλειψης μνήμης. Αντίθετα, το κύριο ζήτημα σε έναν σωρό είναι ο κατακερματισμός.
  6. Η πρόσβαση σε ένα πλαίσιο στοίβας είναι ευκολότερη από τον σωρό, καθώς η στοίβα περιορίζεται στη μικρή περιοχή της μνήμης και χτυπάει πάντα την κρυφή μνήμη, αλλά τα κουτιά σωρού διασκορπίζονται σε όλη τη μνήμη, έτσι ώστε η πρόσβαση στη μνήμη να προκαλέσει περισσότερες απώλειες από τη μνήμη cache.
  7. Η στοίβα δεν είναι ευέλικτη, δεν μπορεί να αλλάξει το μέγεθος της μνήμης. Από την άλλη πλευρά, ένας σωρός είναι ευέλικτος και η μνήμη μπορεί να μεταβληθεί.
  8. Ένας σωρός παίρνει περισσότερο χρόνο πρόσβασης από μια στοίβα.

συμπέρασμα

Η κατανομή στοίβας είναι πιο γρήγορη αλλά πολύπλοκη. Από την άλλη πλευρά, ένας σωρός είναι πιο αργός, αλλά η υλοποίησή του είναι απλούστερη από μια στοίβα. Το σωρό είναι πιο αποτελεσματικό από τη στοίβα.