Κεφάλαιο 1 | Ενότητα7 | Ερωτήσεις επισκόπησης | Επόμενο| Λεξικό όρων

Πώς αντιμετωπίζουμε τις διακοπές

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

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

ΔΡΑΣΤΗΡΙΟΤΗΤΑ 1

Μπορείτε να εξηγήσετε το λόγο για τον οποίο στη σωλήνωση είναι πιο δύσκολο να αντιμετωπίσουμε τις διακοπές;

 

ΑΠΑΝΤΗΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ 1



Τύποι διακοπών και απαιτήσεις

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

· Αίτηση συσκευής εισόδου – εξόδου.
· Κλήση υπηρεσίας λειτουργικού συστήματος απ' ένα πρόγραμμα χρήστη.
· Παρακολούθηση (tracing) εκτέλεσης εντολής.
· Σημείο διακοπής (διακοπή από τον προγραμματιστή).
· Αριθμητική υπερχείλιση ή υποχείλιση ακεραίων.
· Ανωμαλία αριθμών κινητής υποδιαστολής (FP).
· Σφάλμα σελίδας (όχι στην κύρια μνήμη).
· Μη ευθυγραμμισμένη πρόσβαση στη μνήμη (αν απαιτείται ευθυγράμμιση).
· Παραβίαση προστασίας μνήμης.
· Χρήση απροσδιόριστης εντολής.
· Δυσλειτουργία υλικού.
· Πτώση τάσης

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

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

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

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

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

ΔΡΑΣΤΗΡΙΟΤΗΤΑ 2

Να συγκρίνετε τις διακοπές μέσα στις εντολές, με αυτές ενδιάμεσα στις εντολές. Ποια από τις δύο περιπτώσεις θεωρείτε πως είναι ευκολότερη στην υλοποίηση;

 

ΑΠΑΝΤΗΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ 2



ΔΡΑΣΤΗΡΙΟΤΗΤΑ 3

Να συγκρίνετε ένα συμβάν που τερματίζει με ένα συμβάν με συνέχιση. Ποια από τις δύο περιπτώσεις θεωρείτε πως είναι ευκολότερη στην υλοποίηση;

 

ΑΠΑΝΤΗΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ 3



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