Η χρήση στοίβας στην κλήση διαδικασιών

Ξεκίνησε από Kalli, 03 Μαΐου 2007, 12:02:51 ΜΜ

« προηγούμενο - επόμενο »

Kalli

Μπορεί κάποιος να μου εξηγήσει πως υλοποιείται?Κάπως πιο κατανοητά από το βιβλίο

petrosp13

Το όλο νόημα είναι το εξής:
Όταν το κύριο πρόγραμμα καλεί στον κώδικα του ένα υποπρόγραμμα, που και αυτό με τη σειρά του καλεί ένα άλλο, και εκείνο ένα άλλο κοκ., ο μεταγλωττιστής της γλώσσας οφείλει να "θυμάται" την σειρά με την οποία κλήθηκαν τα υποπρογράμματα, ούτως ώστε, όταν τελειώσει το καθένα από αυτά, να γυρίζει σε εκείνο που το κάλεσε και ακριβώς σε εκείνο το σημείο που κλήθηκε.
Αυτό υλοποιείται με χρήση στοίβας. Αρχικά, στην στοίβα ωθείται το κύριο πρόγραμμα, από πάνω το υποπρόγραμμα που κάλεσε αυτό, από πάνω το υποπρόγραμμα που κάλεσε το τελευταίο κοκ.. Όταν το υποπρόγραμμα που κλήθηκε τελευταίο (και είναι στην κορυφή της στοίβας) ολοκληρώσει , απωθείται από την στοίβα και η ροή της εκτέλεσης μεταφέρεται στο επόμενο υποπρόγραμμα της στοίβας. Όταν και αυτό ολοκληρώσει, αφαιρείται από την στοίβα κοκ.
Τελικά, ο έλεγχος θα μεταφερθεί στο τελευταίο στοιχείο της στοίβας που είναι πάντα το κύριο πρόγραμμα και εκεί θα ολοκληρωθεί η εκτέλεση.

Καλύτερα τώρα;;
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

Kalli