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

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

Upload: eliana-odom

Post on 03-Jan-2016

41 views

Category:

Documents


1 download

DESCRIPTION

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

TRANSCRIPT

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

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

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

Περίληψη

Διεργασίες Πολυπρογραμματισμός Καταστάσεις Διεργασιών Περιγραφή διεργασιών στο ΛΣ Έλεγχος διεργασιών Το ΛΣ Linux

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

Διεργασία (process)

Διεργασία είναι κάθε πρόγραμμα που εκτελείται Κώδικας του προγράμματος (program code) Δεδομένα (data) τα οποία χρειάζονται από το πρόγραμμα

(μεταβλητές, ενδιάμεση μνήμη (buffers), work space…) Κατάσταση της διεργασίας (execution context or process state).

Καταχωρητές του επεξεργαστή και δεδομένα τα οποία χρησιμοποιεί το ΛΣ για να παρακολουθεί και να ελέγχει κάθε διεργασία (προτεραιότητα, κατάσταση Ε/Ε, κλπ).

Ή έννοια της διεργασίας είναι σημαντική στην όλη λειτουργία του ΛΣ. Κάθε πρόγραμμα αποτελείται από μια ή περισσότερες διεργασίες ή

υποδιεργασίες (threads). Ο καταμερισμός των πόρων του συστήματος γίνεται μεταξύ των

διεργασιών Διεργασίες συναγωνίζονται για πρόσβαση στους πόρους του συστήματος

Το ΛΣ επίσης αποτελείται από διάφορες διεργασίες.

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

Διεργασία (process)

Τρόποι Δημιουργίας Διεργασιών Υποβολή εργασίας (batch job submission) Είσοδος νέου χρήστης (user login) Παροχή κάποιας υπηρεσίας από το ΛΣ. Μια διεργασία (εφαρμογή) δημιουργεί μια νέα (spawned child

process) Όταν δημιουργηθεί η νέα διεργασία το ΛΣ δημιουργεί τις

απαιτούμενες δομές έτσι που να μπορεί να τη διαχειριστεί Τρόποι τερματισμού διεργασιών

Κανονικός τερματισμός Διάφορα λάθη (π.χ., αριθμητικά, προσπάθεια πρόσβασης σε μη

επιτρεπτό χώρο, ΄χρήση μη επιτρεπτών εντολών) Αποτυχία κάποιον συσκευών Ε/Ε Παραβίαση χρονικών περιθωρίων

Όταν τερματίζεται μια διεργασία ελευθερώνεται η δεσμευμένη μνήμη.

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

Λίστα Διεργασιών (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

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

Πολυπρογραμματισμός (multiprogramming)

0

0xFFFF

PC

Δ4

Δ3

Δ2

Δ1

Πολυπρογραμματισμός ή ψευδοπαράλληλο σύστημα Ο επεξεργαστής μπορεί

να εκτελεί μόνο ένα πρόγραμμα

Το ΛΣ δημιουργεί την ψευδαίσθηση ότι ο υπολογιστής εκτελεί παράλληλα πολλά

προγράμματα

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

Πολυπρογραμματισμός

Χρόνος

Δ1Δ2Δ3

Δ4

Μόνο ένα πρόγραμμα εκτελείται κάθε στιγμή.

Δ3

Δ4

Δ2

Δ1

Ψευδαίσθηση ότι οι διεργασίες τρέχουν παράλληλα.

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

Παράδειγμα Πολυπρογραμματισμού

Ίχνη των Διεργασιών

Διερ. Α Διερ. Β Διερ. Γ

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

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

Μοντέλο Δύο Καταστάσεων

Κάθε διεργασία μπορεί να βρίσκεται σε μια από δύο δυνατές καταστάσεις Εκτελείται (running) Δεν εκτελείται και περιμένει (waiting)

Μηχανή Πεπερασμένων Καταστάσεων (Finite State Machine FSM)

ΕκτελείταιΠεριμένειΔημιουργία

Διεργασίας

Επιλογή

Αναστολή

Τερματισμός

Κύκλοι αντιπροσωπεύουν καταστάσεις (states) Βέλη αντιπροσωπεύουν μεταβάσεις (event transitions)

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

Μοντέλο Δύο Καταστάσεων

Υλοποίηση του μοντέλου δύο καταστάσεων σαν σύστημα ουράς

Δημιουργία διεργασίας

Ουρά διεργασιών Τερματισμός

Πώς θα υλοποιούσατε μια ουρά; Ποια τα πιθανά μειονεκτήματα του μοντέλου δύο

καταστάσεων και πώς αντιμετωπίζονται; Μια διεργασία μπορεί να μην εκτελείται για δύο λόγους

Ο χρονοδρομολογητής επέλεξε άλλη διεργασία να εκτελεσθεί από τον επεξεργαστή.

Η διεργασία δεν μπορεί να εκτελεσθεί διότι περιμένει κάποια συσκευή Ε/Ε.

CPU

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

Μοντέλο Πέντε Καταστάσεων

Κάθε διεργασία μπορεί να βρίσκεται σε μια από πέντε δυνατές καταστάσεις Εκτελείται (running) Δεν εκτελείται αλλά είναι έτοιμη (ready) Δεν εκτελείται και δεν είναι έτοιμη (blocked) Νέα διεργασία υπό δημιουργία (new)

Παρόλο που έχει δημιουργηθεί μπορεί να παραμένει ανέτοιμη να εκτελεσθεί

Τερματισμός διεργασίας (Exit) Μια διεργασία που τερματίζει πρέπει να ελευθερώσει όλους τους

πόρους τους οποίους έχει δεσμευμένους.

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

Μοντέλο Πέντε Καταστάσεων

loaded

dispatched

Timeout

Done

Σε ορισμένα ΛΣ είναι δυνατόν να υπάρχουν επιπρόσθετες μεταβάσεις, π.χ., Ready Exit, Blocked Exit. Αυτό μπορεί να συμβαίνει όταν η διεργασία είναι θυγατρική από γονέα ο οποίος τερμάτισε.

new Ready running exit

blocked

I/O RequestI/O Response

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

Υλοποίηση Μοντέλο Πέντε Καταστάσεων

Δημιουργία διεργασίας

Ουρά Έτοιμων διεργασιών Τερματισμός

CPU

Ουρά Μη-Έτοιμων διεργασιών

Αλλαγή διεργασίας

Η αλλαγή διεργασίας ελέγχεται από το ΛΣ και μπορεί να γίνει διότι μια διεργασία έχει εξαντλήσει το χρονικό της περιθώριο ή διότι υπάρχει διεργασία υψηλότερης προτεραιότητας

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

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

Μοντέλα Καταστάσεων

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

Suspended: κατάσταση στην οποία η διεργασία δεν είναι φορτωμένη στην κύρια μνήμη.

dispatched

Timeout

loaded Done new Ready running exit

blocked

I/O RequestI/O Response

suspended suspend

activate

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

Περιγραφή Διεργασιών στο ΛΣ

Το ΛΣ διατηρεί διάφορες δομές ελέγχου (control structures) όπου αποθηκεύονται οι πληροφορίες που χρειάζεται το ΛΣ Πίνακας Μνήμης

Κατανομή μνήμης (κύριας ή δευτερεύουσας) σε διεργασίες Κανόνες χρήσης και περιορισμούς πρόσβασης

Πίνακας συσκευών Ε/Ε Ποιες συσκευές υπάρχου, πιες είναι δεσμευμένες και ποιες

ελεύθερες. Ποιες λειτουργίες Ε/Ε βρίσκονται σε εξέλιξη

Πίνακας Αρχείων Που βρίσκεται το κάθε αρχείο καθώς και επιπρόσθετες πληροφορίες

π.χ., κωδικούς πρόσβασης. Πίνακας Διεργασιών

Το πρόγραμμα, τα δεδομένα του προγράμματος, οι τιμές των καταχωρητών (process image).

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

Έλεγχος Διεργασιών

Τα περισσότερα ΛΣ υποστηρίζουν δύο τρόπους εκτέλεσης προγραμμάτων (modes of execution) Στον πυρήνα (kernel mode) του ΛΣ

Διεργασίες που εκτελούνται στον πυρήνα έχουν περισσότερα προνόμια.

Μπορούν να χρησιμοποιούν περισσότερες εντολές Έχουν άμεση πρόσβαση στις συσκευές Ε/Ε

Στο χώρο του χρήστη (user mode)

Προβλήματα Πώς ο επεξεργαστής αποφασίζει ποιο τρόπο θα χρησιμοποιήσει;

Υπάρχει κάποιο bit στον καταχωρητή (Program Status Word PSW) Πώς αλλάζει το τρόπος εκτέλεσης;

Το bit αυτό αλλάζει κατάσταση όταν συμβεί κάποιο γεγονός (event) π.χ., συστημική κλήση (system call)

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

Έλεγχος Διεργασιών

Όταν δημιουργηθεί μια διεργασίας το ΛΣ Προσδιορίζει μια ταυτότητα (process identification) Παρέχει την απαιτούμενη μνήμη (memory allocation) Αρχικοποιεί την δομή ελέγχου της διεργασίας

(process control block initialization) Αρχικοποιεί άλλες πιθανές συνδέσεις (π.χ., με τις

λίστες του χρονοδρομολογητή) Δημιουργεί ή επεκτείνει άλλες δομές δεδομένων (π.χ.,

την δομή μετρήσεων και παρακολούθησης για σκοπούς χρέωσης).

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

Έλεγχος Διεργασιών

Εναλλαγή Διεργασιών (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).

Κάθε σήμα διακοπής δεν σημαίνει αυτόματα και εναλλαγή διεργασίας

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

Έλεγχος Διεργασιών

Αλλαγή κατάστασης διεργασίας (process state change) Μεταγωγή περιβάλλοντος (process switch or context

switch). Αποθήκευση της κατάστασης του επεξεργαστή (καταχωτητές –

context) Ενημέρωση της δομής ελέγχου της διεργασίας (process control

block) Μεταφορά της δομής ελέγχου της διεργασίας στη κατάλληλη ουρά Επιλογή της επόμενης διεργασίας (χρονοδρομολογητής) Ενημέρωση της δομής ελέγχου της νέας διεργασίας. Ενημέρωση των δομών δεδομένων που σχετίζονται με τη

διαχείριση της μνήμης Επαναφορά της κατάστασης του επεξεργαστή στο σημείο που

ήταν την τελευταία φορά πριν διακοπεί η δεδομένη διαδικασία.

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

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) σε αρχεία τα οποία ανοίχτηκαν από τη διεργασία)

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

Linux

Κάθε διεργασία στο ΛΣ Linux περιγράφεται με τη δομή task_structure Address space (διευθύνσεις του χώρου της διεργασίας) Process-specific context (καταχωρητές και άλλες

πληροφορίες που περιγράφουν το περιβάλλον (context) της διεργασίας.

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

Καταστάσεις του ΛΣ 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.

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

Καταστάσεις του ΛΣ Linux

creation

dispatched

timeout

termination

I/O requestsignal or event

Stopped

Ready Executing Zombie

Uninterruptible

Interruptible

event

signalsignal