Περιγραφή και Έλεγχος Διεργασιών
DESCRIPTION
Περιγραφή και Έλεγχος Διεργασιών. Περίληψη. Διεργασίες Πολυπρογραμματισμός Καταστάσεις Διεργασιών Περιγραφή διεργασιών στο ΛΣ Έλεγχος διεργασιών Το ΛΣ Linux. Διεργασία ( process ). Διεργασία είναι κάθε πρόγραμμα που εκτελείται Κώδικας του προγράμματος ( program code ) - PowerPoint PPT PresentationTRANSCRIPT
Περιγραφή και Έλεγχος Διεργασιών
Περίληψη
Διεργασίες Πολυπρογραμματισμός Καταστάσεις Διεργασιών Περιγραφή διεργασιών στο ΛΣ Έλεγχος διεργασιών Το ΛΣ 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)
Context
Data
Program Code
Context
Data
Program CodePro
cess
AP
roce
ss B
Pro
cess
L
ist i
j
CPU Registers
i
b
h
PC
Base
Limit
Other Registers
…
h
Πολυπρογραμματισμός (multiprogramming)
0
0xFFFF
PC
Δ4
Δ3
Δ2
Δ1
Πολυπρογραμματισμός ή ψευδοπαράλληλο σύστημα Ο επεξεργαστής μπορεί
να εκτελεί μόνο ένα πρόγραμμα
Το ΛΣ δημιουργεί την ψευδαίσθηση ότι ο υπολογιστής εκτελεί παράλληλα πολλά
προγράμματα
Πολυπρογραμματισμός
Χρόνος
Δ1Δ2Δ3
Δ4
Μόνο ένα πρόγραμμα εκτελείται κάθε στιγμή.
Δ3
Δ4
Δ2
Δ1
Ψευδαίσθηση ότι οι διεργασίες τρέχουν παράλληλα.
Παράδειγμα Πολυπρογραμματισμού
Ίχνη των Διεργασιών
Διερ. Α Διερ. Β Διερ. Γ
1000
1001
1002
1003
1004
1005
1006
1007
1008
3000
3001
3002
3003
3004
8000
8001
8002
8003
8004
8005
8006
8007
8008
8009
8010
Dispatcher
Διεργασία Α
Διεργασία Β
Διεργασία Γ
100
1000
3000
8000
0
Κύρια Μνήμη
Ίχνος
100010011002100310041005
100101102103104105
3000300130023003
100101102103104105
800080018002800380048005
100101
…105
100610071008
100…
105
80068007800880098010
100…
105
Μοντέλο Δύο Καταστάσεων
Κάθε διεργασία μπορεί να βρίσκεται σε μια από δύο δυνατές καταστάσεις Εκτελείται (running) Δεν εκτελείται και περιμένει (waiting)
Μηχανή Πεπερασμένων Καταστάσεων (Finite State Machine FSM)
ΕκτελείταιΠεριμένειΔημιουργία
Διεργασίας
Επιλογή
Αναστολή
Τερματισμός
Κύκλοι αντιπροσωπεύουν καταστάσεις (states) Βέλη αντιπροσωπεύουν μεταβάσεις (event transitions)
Μοντέλο Δύο Καταστάσεων
Υλοποίηση του μοντέλου δύο καταστάσεων σαν σύστημα ουράς
Δημιουργία διεργασίας
Ουρά διεργασιών Τερματισμός
Πώς θα υλοποιούσατε μια ουρά; Ποια τα πιθανά μειονεκτήματα του μοντέλου δύο
καταστάσεων και πώς αντιμετωπίζονται; Μια διεργασία μπορεί να μην εκτελείται για δύο λόγους
Ο χρονοδρομολογητής επέλεξε άλλη διεργασία να εκτελεσθεί από τον επεξεργαστή.
Η διεργασία δεν μπορεί να εκτελεσθεί διότι περιμένει κάποια συσκευή Ε/Ε.
CPU
Μοντέλο Πέντε Καταστάσεων
Κάθε διεργασία μπορεί να βρίσκεται σε μια από πέντε δυνατές καταστάσεις Εκτελείται (running) Δεν εκτελείται αλλά είναι έτοιμη (ready) Δεν εκτελείται και δεν είναι έτοιμη (blocked) Νέα διεργασία υπό δημιουργία (new)
Παρόλο που έχει δημιουργηθεί μπορεί να παραμένει ανέτοιμη να εκτελεσθεί
Τερματισμός διεργασίας (Exit) Μια διεργασία που τερματίζει πρέπει να ελευθερώσει όλους τους
πόρους τους οποίους έχει δεσμευμένους.
Μοντέλο Πέντε Καταστάσεων
loaded
dispatched
Timeout
Done
Σε ορισμένα ΛΣ είναι δυνατόν να υπάρχουν επιπρόσθετες μεταβάσεις, π.χ., Ready Exit, Blocked Exit. Αυτό μπορεί να συμβαίνει όταν η διεργασία είναι θυγατρική από γονέα ο οποίος τερμάτισε.
new Ready running exit
blocked
I/O RequestI/O Response
Υλοποίηση Μοντέλο Πέντε Καταστάσεων
Δημιουργία διεργασίας
Ουρά Έτοιμων διεργασιών Τερματισμός
CPU
Ουρά Μη-Έτοιμων διεργασιών
Αλλαγή διεργασίας
Η αλλαγή διεργασίας ελέγχεται από το ΛΣ και μπορεί να γίνει διότι μια διεργασία έχει εξαντλήσει το χρονικό της περιθώριο ή διότι υπάρχει διεργασία υψηλότερης προτεραιότητας
Εναλλακτικά, μπορούν να υλοποιηθούν παράλληλες ουρές μη έτοιμων διεργασιών, μια για κάθε αναμενόμενο συμβάν.
Μοντέλα Καταστάσεων
Άλλα μοντέλα μπορούν συμπεριλάβουν επιπρόσθετές καταστάσεις, π.χ., τι θα συμβεί εάν δεν υπάρχει διαθέσιμη μνήμη για να φορτωθεί άλλη μια διεργασία;
Suspended: κατάσταση στην οποία η διεργασία δεν είναι φορτωμένη στην κύρια μνήμη.
dispatched
Timeout
loaded Done new Ready running exit
blocked
I/O RequestI/O Response
suspended suspend
activate
Περιγραφή Διεργασιών στο ΛΣ
Το ΛΣ διατηρεί διάφορες δομές ελέγχου (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
creation
dispatched
timeout
termination
I/O requestsignal or event
Stopped
Ready Executing Zombie
Uninterruptible
Interruptible
event
signalsignal