230 likes | 344 Views
Περιγραφή και Έλεγχος Διεργασιών. Περίληψη. Διεργασίες Πολυπρογραμματισμός Καταστάσεις Διεργασιών Περιγραφή διεργασιών στο ΛΣ Έλεγχος διεργασιών Το ΛΣ Linux. Διεργασία ( process ). Διεργασία είναι κάθε πρόγραμμα που εκτελείται Κώδικας του προγράμματος ( program code )
E N D
Περιγραφή και Έλεγχος Διεργασιών
Περίληψη • Διεργασίες • Πολυπρογραμματισμός • Καταστάσεις Διεργασιών • Περιγραφή διεργασιών στο ΛΣ • Έλεγχος διεργασιών • Το ΛΣ Linux
Διεργασία (process) • Διεργασία είναι κάθε πρόγραμμα που εκτελείται • Κώδικας του προγράμματος (program code) • Δεδομένα (data) τα οποία χρειάζονται από το πρόγραμμα (μεταβλητές, ενδιάμεση μνήμη (buffers), work space…) • Κατάσταση της διεργασίας (execution context or process state). • Καταχωρητές του επεξεργαστή και δεδομένα τα οποία χρησιμοποιεί το ΛΣ για να παρακολουθεί και να ελέγχει κάθε διεργασία (προτεραιότητα, κατάσταση Ε/Ε, κλπ). • Ή έννοια της διεργασίας είναισημαντική στην όλη λειτουργία του ΛΣ. • Κάθε πρόγραμμα αποτελείται από μια ή περισσότερες διεργασίες ή υποδιεργασίες (threads). • Ο καταμερισμός των πόρων του συστήματος γίνεται μεταξύ των διεργασιών • Διεργασίες συναγωνίζονται για πρόσβαση στους πόρους του συστήματος • Το ΛΣ επίσης αποτελείται από διάφορες διεργασίες.
Διεργασία (process) • Τρόποι Δημιουργίας Διεργασιών • Υποβολή εργασίας (batch job submission) • Είσοδος νέου χρήστης (user login) • Παροχή κάποιας υπηρεσίας από το ΛΣ. • Μια διεργασία (εφαρμογή) δημιουργεί μια νέα (spawned child process) • Όταν δημιουργηθεί η νέα διεργασία το ΛΣ δημιουργεί τις απαιτούμενες δομές έτσι που να μπορεί να τη διαχειριστεί • Τρόποι τερματισμού διεργασιών • Κανονικός τερματισμός • Διάφορα λάθη (π.χ., αριθμητικά, προσπάθεια πρόσβασης σε μη επιτρεπτό χώρο, ΄χρήση μη επιτρεπτών εντολών) • Αποτυχία κάποιον συσκευών Ε/Ε • Παραβίαση χρονικών περιθωρίων • Όταν τερματίζεται μια διεργασία ελευθερώνεται η δεσμευμένη μνήμη.
Λίστα Διεργασιών (Process List) CPU Registers Process List i i j PC Context Base b Process A Data Limit h Program Code Other Registers Context … Process B Data h Program Code
Πολυπρογραμματισμός (multiprogramming) Δ1 Δ2 Δ3 Δ4 0xFFFF • Πολυπρογραμματισμός ή ψευδοπαράλληλο σύστημα • Ο επεξεργαστής μπορεί να εκτελεί μόνο ένα πρόγραμμα • Το ΛΣ δημιουργεί την ψευδαίσθηση ότι ο υπολογιστής εκτελεί παράλληλα πολλά προγράμματα PC 0
Πολυπρογραμματισμός Δ1 Δ2 Δ3 Δ4 Χρόνος Δ1 Δ2 Δ3 Δ4 Μόνο ένα πρόγραμμα εκτελείται κάθε στιγμή. Ψευδαίσθηση ότι οι διεργασίες τρέχουν παράλληλα.
Παράδειγμα Πολυπρογραμματισμού 0 100 Dispatcher 1000 Διεργασία Α 3000 Διεργασία Β 8000 Διεργασία Γ Κύρια Μνήμη 1000 1001 1002 1003 1004 1005 100 101 102 103 104 105 1006 1007 1008 100 … 105 100 101 102 103 104 105 8000 8001 8002 8003 8004 8005 8006 8007 8008 8009 8010 100 … 105 3000 3001 3002 3003 100 101 … 105
Μοντέλο Δύο Καταστάσεων Περιμένει Εκτελείται • Κάθε διεργασία μπορεί να βρίσκεται σε μια από δύο δυνατές καταστάσεις • Εκτελείται (running) • Δεν εκτελείται και περιμένει (waiting) • Μηχανή Πεπερασμένων Καταστάσεων (Finite State Machine FSM) Επιλογή Δημιουργία Διεργασίας Τερματισμός Αναστολή • Κύκλοι αντιπροσωπεύουν καταστάσεις(states) • Βέλη αντιπροσωπεύουν μεταβάσεις(event transitions)
Μοντέλο Δύο Καταστάσεων • Υλοποίηση του μοντέλου δύο καταστάσεων σαν σύστημα ουράς Ουρά διεργασιών Δημιουργία διεργασίας Τερματισμός CPU • Πώς θα υλοποιούσατε μια ουρά; • Ποια τα πιθανά μειονεκτήματα του μοντέλου δύο καταστάσεων και πώς αντιμετωπίζονται; • Μια διεργασία μπορεί να μην εκτελείται για δύο λόγους • Ο χρονοδρομολογητής επέλεξε άλλη διεργασία να εκτελεσθεί από τον επεξεργαστή. • Η διεργασία δεν μπορεί να εκτελεσθεί διότι περιμένει κάποια συσκευή Ε/Ε.
Μοντέλο Πέντε Καταστάσεων • Κάθε διεργασία μπορεί να βρίσκεται σε μια από πέντε δυνατές καταστάσεις • Εκτελείται (running) • Δεν εκτελείται αλλά είναι έτοιμη (ready) • Δεν εκτελείται και δεν είναι έτοιμη (blocked) • Νέα διεργασία υπό δημιουργία (new) • Παρόλο που έχει δημιουργηθεί μπορεί να παραμένει ανέτοιμη να εκτελεσθεί • Τερματισμός διεργασίας (Exit) • Μια διεργασία που τερματίζει πρέπει να ελευθερώσει όλους τους πόρους τους οποίους έχει δεσμευμένους.
Μοντέλο Πέντε Καταστάσεων new Ready running exit blocked dispatched loaded Done Timeout I/ORequest I/O Response • Σε ορισμένα ΛΣ είναι δυνατόν να υπάρχουν επιπρόσθετες μεταβάσεις, π.χ., Ready Exit, Blocked Exit. Αυτό μπορεί να συμβαίνει όταν η διεργασία είναι θυγατρική από γονέα ο οποίος τερμάτισε.
Υλοποίηση Μοντέλο Πέντε Καταστάσεων Ουρά Έτοιμων διεργασιών Δημιουργία διεργασίας Τερματισμός CPU Αλλαγή διεργασίας Ουρά Μη-Έτοιμων διεργασιών • Η αλλαγή διεργασίας ελέγχεται από το ΛΣ και μπορεί να γίνει διότι μια διεργασία έχει εξαντλήσει το χρονικό της περιθώριο ή διότι υπάρχει διεργασία υψηλότερης προτεραιότητας • Εναλλακτικά, μπορούν να υλοποιηθούν παράλληλες ουρές μη έτοιμων διεργασιών, μια για κάθε αναμενόμενο συμβάν.
Μοντέλα Καταστάσεων dispatched loaded new Ready running exit Done Timeout I/ORequest I/O Response blocked • Άλλα μοντέλα μπορούν συμπεριλάβουν επιπρόσθετές καταστάσεις, π.χ., τι θα συμβεί εάν δεν υπάρχει διαθέσιμη μνήμη για να φορτωθεί άλλη μια διεργασία; • Suspended: κατάσταση στην οποία η διεργασία δεν είναι φορτωμένη στην κύρια μνήμη. activate suspended suspend
Περιγραφή Διεργασιών στο ΛΣ • Το ΛΣ διατηρεί διάφορες δομές ελέγχου (control structures) όπου αποθηκεύονται οι πληροφορίες που χρειάζεται το ΛΣ • Πίνακας Μνήμης • Κατανομή μνήμης (κύριας ή δευτερεύουσας) σε διεργασίες • Κανόνες χρήσης και περιορισμούς πρόσβασης • Πίνακας συσκευών Ε/Ε • Ποιες συσκευές υπάρχου, πιες είναι δεσμευμένες και ποιες ελεύθερες. • Ποιες λειτουργίες Ε/Ε βρίσκονται σε εξέλιξη • Πίνακας Αρχείων • Που βρίσκεται το κάθε αρχείο καθώς και επιπρόσθετες πληροφορίες π.χ., κωδικούς πρόσβασης. • Πίνακας Διεργασιών • Το πρόγραμμα, τα δεδομένα του προγράμματος, οι τιμές των καταχωρητών (process image).
Έλεγχος Διεργασιών • Τα περισσότερα ΛΣ υποστηρίζουν δύο τρόπους εκτέλεσης προγραμμάτων (modes of execution) • Στον πυρήνα (kernel mode) του ΛΣ • Διεργασίες που εκτελούνται στον πυρήνα έχουν περισσότερα προνόμια. • Μπορούν να χρησιμοποιούν περισσότερες εντολές • Έχουν άμεση πρόσβαση στις συσκευές Ε/Ε • Στο χώρο του χρήστη (user mode) • Προβλήματα • Πώς ο επεξεργαστής αποφασίζει ποιο τρόπο θα χρησιμοποιήσει; • Υπάρχει κάποιο bit στον καταχωρητή (Program Status Word PSW) • Πώς αλλάζει το τρόπος εκτέλεσης; • Το bit αυτό αλλάζει κατάσταση όταν συμβεί κάποιο γεγονός (event) π.χ., συστημική κλήση (system call)
Έλεγχος Διεργασιών • Όταν δημιουργηθεί μια διεργασίας το ΛΣ • Προσδιορίζει μια ταυτότητα (process identification) • Παρέχει την απαιτούμενη μνήμη (memory allocation) • Αρχικοποιεί την δομή ελέγχου της διεργασίας (process control block initialization) • Αρχικοποιεί άλλες πιθανές συνδέσεις (π.χ., με τις λίστες του χρονοδρομολογητή) • Δημιουργεί ή επεκτείνει άλλες δομές δεδομένων (π.χ., την δομή μετρήσεων και παρακολούθησης για σκοπούς χρέωσης).
Έλεγχος Διεργασιών • Εναλλαγή Διεργασιών (process switching) • Συμβαίνει σαν αποτέλεσμα κάποιου γεγονότος (event) • Σήμα διακοπής (interrupt,e.g.,clock interrupt, I/O interrupt). • Περιστατικό λάθους ή εξαιρετικής κατάστασης (fault or exception, e.g., Memory fault) • Κλήση επόπτη (supervisor call, e.g., a system call) • Εναλλαγή τρόπου εκτέλεσης • Μόλις παραληφθεί σήμα διακοπής το program counter πηδά στην αρχή της ρουτίναςπου διαχειρίζεται το σήμα διακοπής (interrupt handler). • Ο επεξεργαστής εναλλάσσει επίσης στον τρόπο εκτέλεσης στον πυρήνα (kernel mode). • Κάθε σήμα διακοπής δεν σημαίνει αυτόματα και εναλλαγή διεργασίας
Έλεγχος Διεργασιών • Αλλαγή κατάστασης διεργασίας (process state change) • Μεταγωγή περιβάλλοντος (process switch or context switch). • Αποθήκευση της κατάστασης του επεξεργαστή (καταχωτητές – context) • Ενημέρωση της δομής ελέγχου της διεργασίας (process control block) • Μεταφορά της δομής ελέγχου της διεργασίας στη κατάλληλη ουρά • Επιλογή της επόμενης διεργασίας (χρονοδρομολογητής) • Ενημέρωση της δομής ελέγχου της νέας διεργασίας. • Ενημέρωση των δομών δεδομένων που σχετίζονται με τη διαχείριση της μνήμης • Επαναφορά της κατάστασης του επεξεργαστή στο σημείο που ήταν την τελευταία φορά πριν διακοπεί η δεδομένη διαδικασία.
Linux • Κάθε διεργασία στο ΛΣ Linux περιγράφεται με τη δομή task_structure • State (Μοντέλο πέντε καταστάσεων) • Scheduling Information (Πληροφορίες για τη χρονοδρομολόγηση των διεργασιών) • Real-time processes • Normal process • Identifiers (Ταυτότητα διεργασιών) • Unique process identifier (Μοναδική ταυτότητα) • Group ID (ομαδική ταυτότητα) • Interprocess Communication. (Επικοινωνία μεταξύ διεργασιών) • Times and timers (Πληροφορίες σχετικές με την ώρα δημιουργίας μιας διεργασίας, διάστημα εκτέλεσης, χρονόμετρα) • File system. (Δείκτες (pointers) σε αρχείατα οποία ανοίχτηκαν από τη διεργασία)
Linux • Κάθε διεργασία στο ΛΣ Linux περιγράφεται με τη δομή task_structure • Address space (διευθύνσεις του χώρου της διεργασίας) • Process-specific context (καταχωρητές και άλλες πληροφορίες που περιγράφουν το περιβάλλον (context) της διεργασίας.
Καταστάσεις του ΛΣ Linux • Running: Either executing or ready to execute • Interruptible: Blocked state where the process is waiting for an I/O operation, availability of a resource or a signal from another process • Uninterruptible: Also a blocked state that waits only on hardware response (no signals) • Stopped: Process stopped that needs to be restarted by another process (e.g., debugger) • Zombie: Terminated process but its data structures still exist.
Καταστάσεις του ΛΣ Linux Stopped Zombie Ready Executing Uninterruptible Interruptible signal signal dispatched creation termination timeout event signal or event I/Orequest