Περιγραφή και Έλεγχος Διεργασιών

Preview:

DESCRIPTION

Περιγραφή και Έλεγχος Διεργασιών. Περίληψη. Διεργασίες Πολυπρογραμματισμός Καταστάσεις Διεργασιών Περιγραφή διεργασιών στο ΛΣ Έλεγχος διεργασιών Το ΛΣ Linux. Διεργασία ( process ). Διεργασία είναι κάθε πρόγραμμα που εκτελείται Κώδικας του προγράμματος ( program code ) - PowerPoint PPT Presentation

Citation preview

Περιγραφή και Έλεγχος Διεργασιών

Περίληψη

Διεργασίες Πολυπρογραμματισμός Καταστάσεις Διεργασιών Περιγραφή διεργασιών στο ΛΣ Έλεγχος διεργασιών Το ΛΣ 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