Τι είναι διεργασία Ένα πρόγραμμα σε εκτέλεση Η διεργασία περιλαμβάνει:

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Λειτουργικό Σύστημα (Operating System) 1o μέρος
Advertisements

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΙΕΡΓΑΣΙΩΝ
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 2ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 26 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 11.
Εφαρμογές Υπολογιστών Ά Λυκείου Κεφ. 4 Λογισμικό Συστήματος
Λειτουργικά Συστήματα
Προγραμματισμός Ι Προτάσεις ελέγχου ροής Ο πιο συνηθισμένος τρόπος εκτέλεσης είναι ο ακολουθιακός: δύο ή περισσότερες προτάσεις βρίσκονται διατεταγμένες.
Νήματα στη Java Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία
Συστήματα εισόδου/εξόδου
Η επιστήμη των υπολογιστών
Λειτουργικά Συστήματα
Λειτουργικά Συστήματα
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ
Υλοποίηση μεταφραστή C με επεκτάσεις OpenMP Λεοντιάδης Ηλίας Τζούμας Γεώργιος Πτυχιακή εργασία Τελική παρουσίαση Υπεύθυνος καθηγητής Β. Β. Δημακόπουλος.
ΛΟΓΙΣΜΙΚΟ ΣΥΣΤΗΜΑΤΟΣ Κεφάλαιο 4 ο Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
Λειτουργικό Σύστημα 2ο μέρος.
Αρχιτεκτονική Υπολογιστών Γλώσσες Μηχανής
Κεφάλαιο 1ο: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΤΩΝ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
Λογισμικο συστηματοσ Κεφάλαιο 4ο
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Αντικείμενα ως ορίσματα.
Κλασσικά Προβλήματα Επικοινωνίας Σύνδρομων Διεργασιών
Επικοινωνία μεταξύ Διεργασιών και Σύνδρομες Διεργασίες
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 2ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 11 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 1.
NIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4 1.  Ένα thread έχει: ID, program counter, register set, stack  Μοιράζεται με τα άλλα threads της ίδιας διεργασίας.
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 19 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 1.
5. Αμοιβαίος αποκλεισμός
Νήματα Οι διεργασίες έχουν τα παρακάτω συστατικά:
Λειτουργικά Συστήματα ΑΔΙΕΞΟΔΑ. 3.1 Εισαγωγή  Αδιέξοδο = ένα σύνολο από διεργασίες που δημιουργούν μια κυκλική αλυσίδα όπου κάθε process στην αλυσίδα.
William Stallings Computer Organization and Architecture 7 th Edition Κεφάλαιο 16 Λειτουργία Μονάδας Ελέγχου.
Τι είναι διεργασία Ένα πρόγραμμα σε εκτέλεση Η διεργασία περιλαμβάνει:
ΒΡΟΧΟΙ ΜΑΘΗΜΑ 5. ΒΡΟΧΟΙΒΡΟΧΟΙ Ο Βρόχος (loop) αποτελείται από προτάσεις επανάληψης. Οι προτάσεις επανάληψης είναι οι προτάσεις που επαναλαμβάνουν ένα.
Διαχείριση μνήμης Υπόβαθρο Εναλλαγή Συνεχής κατανομή Σελιδοποίηση
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ
Ντίρλης Νίκος- ΕΤΥ 4ο ΦΡΟΝΤΙΣΤΗΡΙΟ Παρασκευή Β4 1.
Επικοινωνία μεταξύ Διεργασιών και Σύνδρομες Διεργασίες Interprocess Communication and Concurrent Processes.
Πρωτόκολλο αμοιβαίου αποκλεισμού (mutual exclusion) για δύο διεργασίες-CPN Tools Νάνος Λέανδρος 156 Τζιαλαμάνη Βιργινία 166.
Quicksort Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
Κεφάλαιο 10 – Υποπρογράμματα
RPC Multithreaded voting system Γεωργόπουλος Άλκης Κολωνιάρη Γεωργία Κοντογιώργης Τάσος Λεοντιάδης Ηλίας Πετράκης Γιάννης.
Διεργασίες Λειτουργικά Συστήματα. Λειτουργικά Συστήματα/ Slide 2 Η Έννοια της Διεργασίας * Διεργασία (Process) – ο μηχανισμός εκτέλεσης ενός προγράμματος.
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
Δομές Δεδομένων 1 Θέματα Απόδοσης. Δομές Δεδομένων 2 Οργανώνοντας τα Δεδομένα  Η επιλογή της δομής δεδομένων και του αλγορίθμου επηρεάζουν το χρόνο εκτέλεσης.
Λειτουργικά Συστήματα
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
Εφαρμογές Υπολογιστών Ά Λυκείου Κεφ. 4 Λογισμικό Συστήματος
Διεργασίες.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις (μέρος δεύτερο) και Μεταβλητές.
Νήματα με την χρήση των Posix Threads (pthreads)‏.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Νήματα Εκτέλεσης – Συγχρονισμός Διεργασιών σε Κοινή Μνήμη
1 Αδιέξοδα Μοντέλο συστήματος Χαρακτηρισμός αδιεξόδου Μέθοδοι διαχείρισης αδιεξόδων Πρόληψη Αποφυγή Ανίχνευση.
Λειτουργικά Συστήματα
ΕΙΣΑΓΩΓΉ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΉ ΝΊΚΟΣ ΠΑΠΑΔΆΚΗΣ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ.
Κρυφή μνήμη (cache memory) (1/2) Εισαγωγή στην Πληροφορκή1 Η κρυφή μνήμη είναι μία πολύ γρήγορη μνήμη – πιο γρήγορη από την κύρια μνήμη – αλλά πιο αργή.
ΠΑΡΑΔΕΙΓΜΑ: ΤΑ ΕΠΙΠΕΔΑ ΥΛΙΚΟΥ – ΛΟΓΙΣΜΙΚΟΥ ΣΕ ΕΝΑΝ ΥΠΟΛΟΓΙΣΤΗ.
Λειτουργικά Συστήματα
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Κατανεμημένα Συστήματα
Συγχρονισμός Διεργασιών
ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ
Κατηγορίες και Προδιαγραφές Λογισμικού Η/Υ (Software)
Βασικά Μοντέλα και Έννοιες Διεργασιών
Λειτουργικά Συστήματα και Ασφάλεια Πληροφοριακών Συστημάτων ΔΙΕΡΓΑΣΙΕΣ
Εισαγωγή στα Λειτουργικά Συστήματα (ΛΣ) Operating Systems (OS)
Εισαγωγή στον Προγ/μό Υπολογιστών
Διεργασίες Διεργασίες Διαδιεργασιακή Επικοινωνία (IPC)
ΔΙΕΡΓΑΣΙΕΣ.
ΣΥΓΧΡΟΝΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Τρίτη Έκδοση ANDREW S
Μεταγράφημα παρουσίασης:

Τι είναι διεργασία Ένα πρόγραμμα σε εκτέλεση Η διεργασία περιλαμβάνει: Κώδικα προγράμματος (text) Στοίβα (stack) Τμήμα δεδομένων (data) Σωρό (heap)

Κατάσταση διεργασίας Καθώς εκτελείται, μια διεργασία αλλάζει κατάσταση Καινούργια (new): η διεργασία δημιουργείται Εκτελούμενη (running): εκτελούνται εντολές σε αναμονή (waiting): αναμένει για κάποιο συμβάν Έτοιμη (ready): περιμένει να εκτελεστεί Τερματισμένη (terminated): έχει τελειώσει η εκτέλεσή της

Μπλοκ ελέγχου διεργασίας (PCB) Πληροφορίες σχετικά με τη διεργασία Κατάσταση διεργασίας Μετρητής προγράμματος Καταχωρητές ΚΜΕ Πληροφορίες χρονοδρομολόγησης Πληροφορίες διαχείρισης μνήμης Λογιστικές πληροφορίες Πληροφορίες κατάστασης Ε/Ε

Αλλαγή ΚΜΕ μεταξύ διεργασιών Το PCB αποθηκεύεται όταν μια διεργασία απομακρύνεται από την ΚΜΕ και μια άλλη παίρνει τη θέση της (context switch – μεταγωγή περιβάλλοντος).

Μεταγωγή περιβάλλοντος Όταν η ΚΜΕ αλλάζει σε άλλη διεργασία, συμβαίνει μια διακοπή (interrupt) και τρέχει ρουτίνα του πυρήνα για να αποθηκεύσει το περιβάλλον της τρέχουσας διεργασίας Το σύστημα σώζει την κατάσταση της παλιάς διεργασίας και φορτώνει την κατάσταση της νέας. Ο χρόνος για τη μεταγωγή περιβάλλοντος είναι επιβάρυνση – δε γίνεται χρήσιμη δουλειά. Ο χρόνος εξαρτάται από την υποστήριξη του υλικού (1 έως 1000 μικροδευτερόλεπτα)

Δημιουργία διεργασίας Οι γονικές διεργασίες δημιουργούν θυγατρικές διεργασίες κ.ο.κ. (fork) (δέντρο διεργασιών) Κάθε διεργασία έχει δικό της αναγνωριστικό (PID) Γονική και θυγατρική διεργασία μπορεί να μοιράζονται τους πόρους ή όχι (ή εν μέρει) Εκτελούνται παράλληλα ή οι γονικές περιμένουν κάποιες ή όλες τις θυγατρικές να τερματίσουν Η θυγατρική παίρνει αντίγραφο του χώρου διευθύνσεων της γονικής στον οποίο φορτώνει στη συνέχεια ένα νέο πρόγραμμα για εκτέλεση

Δέντρο διεργασιών σε ένα σύστημα UNIX

Τερματισμός διεργασίας Η διεργασία εκτελεί την τελευταία εντολή και μετά ζητά από το Λ.Σ. να την διαγράψει (exit) Η γονική μπορεί να τερματίσει θυγατρική διεργασία (abort) για διάφορους λόγους (π.χ., υπέρβαση πόρων, τερματισμός γονικής, το έργο που επιτελεί δεν απαιτείται πλέον)

Συνεργαζόμενες διεργασίες Η ανεξάρτητη διεργασία δε μπορεί να επηρεάσει/επηρεαστεί από την εκτέλεση άλλης Η συνεργαζόμενη διεργασία μπορεί να επηρεάσει/επηρεαστεί από την εκτέλεση άλλης Πλεονεκτήματα συνεργατικότητας Διαμοίραση πληροφοριών Επιτάχυνση υπολογισμών με παράλληλες υποεργασίες Σπονδυλωτή διάρθρωση λειτουργιών συστήματος Άνεση – θέλει κανείς να μπορεί να τυπώνει, να συντάσσει και να μεταγλωττίζει παράλληλα

Συνεργαζόμενες διεργασίες Απαιτούν ένα μηχανισμό διαδιεργασιακής επικοινωνίας (IPC) για την ανταλλαγή δεδομένων όπως: Πέρασμα μηνυμάτων (message passing) Χρήσιμο για λίγα δεδομένα Ευκολότερο στην υλοποίηση Απαιτεί κλήσεις συστήματος και συνεπώς παρέμβαση του πυρήνα Διαμοιραζόμενη μνήμη (shared memory) Μέγιστη ταχύτητα (μνήμη) και άνεση Κλήσεις συστήματος μόνο για να οριστούν οι κοινές περιοχές μνήμης (μετέπειτα επικοινωνία δεν απαιτεί τον πυρήνα)

Συγχρονισμός διεργασιών Ταυτόχρονη πρόσβαση σε διαμοιραζόμενα δεδομένα μπορεί να προκαλέσει ασυνέπεια δεδομένων Απαιτείται μηχανισμός διατήρησης συνέπειας δεδομένων

Πεπερασμένος χώρος προσωρινής αποθήκευσης #define BUFFER_SIZE 10 typedef struct { . . . } item; item buffer[BUFFER_SIZE]; int in = 0; int out = 0; int counter = 0; Διαμοιραζόμενα δεδομένα:

Πεπερασμένος χώρος προσωρινής αποθήκευσης Διεργασία παραγωγός item nextProduced; while (1) { while (counter == BUFFER_SIZE) ; /* do nothing */ buffer[in] = nextProduced; in = (in + 1) % BUFFER_SIZE; counter++; }

Πεπερασμένος χώρος προσωρινής αποθήκευσης Διεργασία καταναλωτής item nextConsumed; while (1) { while (counter == 0) ; /* do nothing */ nextConsumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; counter--; }

Πεπερασμένος χώρος προσωρινής αποθήκευσης Οι εντολές counter++; counter--; πρέπει να εκτελούνται ατομικά Ατομική λειτουργία σημαίνει ότι ολοκληρώνεται χωρίς διακοπή

Πεπερασμένος χώρος προσωρινής αποθήκευσης Η εντολή “counter++” υλοποιείται σε κώδικα μηχανής ως: register1 = counter register1 = register1 + 1 counter = register1 Η εντολή “counter--” υλοποιείται ως: register2 = counter register2 = register2 – 1 counter = register2

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

Πεπερασμένος χώρος προσωρινής αποθήκευσης Έστω ο counter είναι αρχικά 5. Μια ανάμειξη των εντολών είναι: παραγωγός: register1 = counter (register1 = 5) παραγωγός : register1 = register1 + 1 (register1 = 6) καταναλωτής: register2 = counter (register2 = 5) καταναλωτής : register2 = register2 – 1 (register2 = 4) παραγωγός : counter = register1 (counter = 6) καταναλωτής : counter = register2 (counter = 4) Η τιμή του counter μπορεί να είναι είτε 4 είτε 6, ενώ το σωστό αποτέλεσμα θα ήταν 5.

Αρχικές προσπάθειες επίλυσης Μόνο 2 διεργασίες, P0 και P1 Γενική δομή διεργασίας Pi (άλλη διεργασία Pj) do { entry section critical section exit section remainder section } while (1); Οι διεργασίες μπορεί να μοιράζονται κοινές μεταβλητές για να συγχρονίσουν τις ενέργειές τους

Συνθήκες συναγωνισμού Συνθήκη συναγωνισμού (race condition): κατάσταση όπου διάφορες διεργασίες προσπελαύνουν και χειρίζονται διαμοιραζόμενα δεδομένα ταυτόχρονα Η τελική τιμή των δεδομένων εξαρτάται από το ποια διεργασία τελειώνει τελευταία Απαιτείται συγχρονισμός για την αποφυγή συνθηκών συναγωνισμού

Κρίσιμα τμήματα Μερικές διεργασίες συναγωνίζονται για τη χρήση διαμοιραζόμενων δεδομένων Κάθε διεργασία έχει ένα τμήμα δεδομένων, το κρίσιμο τμήμα (critical section), στο οποίο προσπελαύνονται τα διαμοιραζόμενα δεδομένα Πρόβλημα: εξασφάλισε ότι όταν μια διεργασία εκτελείται στο κρίσιμο τμήμα της, καμιά άλλη δεν επιτρέπεται να εκτελέσει το δικό της

Λύσεις στο πρόβλημα του κρίσιμου τμήματος Αμοιβαίος αποκλεισμός: Αν μια διεργασία εκτελείται στο κρίσιμο τμήμα της, τότε δεν επιτρέπεται άλλες να εκτελούνται στο δικό τους Πρόοδος: Αν καμία δεν εκτελείται στο κρίσιμο τμήμα της αλλά κάποιες επιθυμούν να μπουν στο δικό τους, τότε πρέπει η επιλογή αυτών που θα μπουν να μην αναβάλλεται επ’ αόριστον Πεπερασμένη αναμονή: Πρέπει να υπάρχει ένα όριο στο πόσες φορές επιτρέπεται να μπουν άλλες διεργασίες στο κρίσιμο τμήμα τους ανάμεσα στη στιγμή που μια διεργασία έκανε ένα σχετικό αίτημα μέχρι τη στιγμή που ικανοποιήθηκε.

Αλγόριθμοι επίλυσης Λύσεις λογισμικού: Λύσεις υλικού: Λύση του Peterson Σημαφόροι Παρακολουθητές Λύσεις υλικού: Εντολή TestAndSet Εντολή Swap

Λύσεις υλικού Απενεργοποίηση διακοπών (interrupts). Έλεγξε και τροποποίησε το περιεχόμενο μιας λέξης ατομικά. boolean TestAndSet(boolean *target) { boolean rv = *target; *target = true; return rv; }

Αμοιβαίος αποκλεισμός με TestΑndSet Διαμοιραζόμενα δεδομένα: boolean lock = false; Διεργασία Pi do { while (TestAndSet(&lock)) ; critical section lock = false; remainder section }

Λύσεις υλικού Αντάλλαξε ατομικά δύο μεταβλητές: void Swap(boolean *a, boolean *b) { boolean temp = *a; *a = *b; *b = temp; }

Αμοιβαίος αποκλεισμός με Swap Διαμοιραζόμενα δεδομένα: boolean lock = false; Διεργασία Pi do { key = true; while (key == true) Swap(&lock,&key); critical section lock = false; remainder section }

Σημαφόροι Εργαλείο συγχρονισμού που δεν απαιτεί αναμονή με απασχόληση Σημαφόρος S – ακέραια μεταβλητή Μπορεί να προσπελαστεί μόνο μέσω δύο αδιαίρετων (ατομικών) λειτουργιών wait (S): while S 0 do no-op; S--; signal (S): S++;

Σημαφόροι Σημαφόρος μετρητής: παίρνει ακέραιες τιμές από ένα απεριόριστο πεδίο (για πολλά στιγμιότυπα ενός πόρου) Δυαδικός σημαφόρος: παίρνει μόνο τιμές 0 και 1 (mutex locks)

Κρίσιμο τμήμα n διεργασιών Διαμοιραζόμενα δεδομένα: semaphore mutex; //αρχικά mutex = 1 Διεργασία Pi: do { wait(mutex); critical section signal(mutex); remainder section } while (1);

Παρακολουθητές Δομή συγχρονισμού υψηλού επιπέδου που επιτρέπει ασφαλή διαμοίραση ενός αφηρημένου τύπου δεδομένων μεταξύ ταυτόχρονων διεργασιών: monitor monitor-name { shared variable declarations procedure body P1 (…) { . . . } procedure body P2 (…) { procedure body Pn (…) { initialization code