Εισαγωγικά & Βασικές Έννοιες

Σχετικά έγγραφα
Εισαγωγικά & Βασικές Έννοιες

Προγραμματισμός Ταυτόχρονος Προγραμματισμός

Βασικές Έννοιες Πρ Ταο υγρ τόα χ μ ρ μ ο α ν τισμ ος Π ό ρ ςο ΙΙΙ γραμματισμός 1

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

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

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή

ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr

Υποστήριξη Λ.Σ. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

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

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

Λειτουργικά Συστήματα Η/Υ

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

Ε-85: Ειδικά Θέµατα Λογισµικού

Εισαγωγή στην Πληροφορική

Λειτουργικά Συστήματα (Λ/Σ)

ΕΙΣΑΓΩΓΗ. Παρέχει µια διεπαφή (interface) ανάµεσα στο υλισµικό και στα προγράµµατα εφαρµογών/χρηστών.

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα

Λειτουργικά συστήµατα. Λογισμικό Συστήματος 1

Επιτεύγµατα των Λ.Σ.

Παράλληλη Επεξεργασία

1. Εισαγωγή. Λειτουργικά Συστήματα Η/Υ. Διεργασίες. Ορισμός ΚΕΦΑΛΑΙΟ 3 - ΔΙΕΡΓΑΣΙΕΣ. Κεφάλαιο 3 «Διεργασίες»

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

ΛΟΓΙΣΜΙΚΟ (software)

Ενότητα 2 (Κεφάλαιο 3) Περιγραφή και Έλεγχος Διεργασιών. Περιεχόμενα. Ανάγκη ύπαρξης διεργασιών 1

Σηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1

2. Σκοποί και Λειτουργίες των ΛΣ. Λειτουργικά Συστήματα Η/Υ. Περίληψη. Ι. Προστασία Υλικού ΚΕΦΑΛΑΙΟ 2 - ΕΞΕΛΙΞΗ ΚΑΙ ΣΚΟΠΟΙ ΛΣ

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

Χρονοδρομολογητής Κυκλικής Επαναφοράς

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Σηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1

Κατανεμημένα Συστήματα

Εισαγωγή στην Πληροφορική

Εισαγωγή στα Λειτουργικά Συστήματα

Διεργασίες και Νήματα (2/2)

3.1 Λειτουργικό Σύστηµα. Λειτουργικό Σύστηµα (2) ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα. Ο υπολογιστής σαν σκέτο hardware έχει περιορισµένη χρησιµότητα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΙΣΑΓΩΓΗ

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

Διάλεξη Εισαγωγή στη Java, Μέρος Γ

Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΟΡΓΑΝΩΣΗ Η/Υ

Κεφάλαιο 3. Διδακτικοί Στόχοι

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Κύριες Υπηρεσίες ενός ΛΣ

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

Πληροφορική I. "Λογισμικό (Software)" B. Φερεντίνος

ver Επεξεργαστές κειμένου, λογιστικών φύλλων, παρουσιάσεων Οδηγοί συσκευών (Device Drivers)

Μάθημα 3 ο ΔΙΕΡΓΑΣΙΕΣ (PROCESSES)

Σκοπός Μαθήματος. Λειτουργικά Συστήματα Η/Υ. Γενικές Πληροφορίες. Στόχοι Μαθήματος ΚΕΦΑΛΑΙΟ 1 - ΕΙΣΑΓΩΓΗ. Θεωρία: Εργαστήριο: Κεφάλαιο 1 «Εισαγωγή»

Πληροφορική 2. Λειτουργικά Συστήματα

ΕΙΣΑΓΩΓΗ ΣΥΣΤΑΤΙΚΑ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ

Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ

Λειτουργικά Συστήματα

Θοδωρής Ανδρόνικος Τμήμα Πληροφορικής, Ιόνιο Πανεπιστήμιο

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

Λειτουργικά Συστήματα (Λ/Σ)

Σκελετός Παρουσίασης

Λιβανός Γιώργος Εξάμηνο 2017Β

Εργαστήριο Λειτουργικών Συστημάτων - Αλγόριθμοι Χρονοπρογραμματισμού. Εργαστηριακή Άσκηση

Εισαγωγή στα Λειτουργικά συστήματα Ι. Καθηγητής Κώστας Αναγνωστόπουλος

Λειτουργικά Συστήματα

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Λειτουργικά Συστήματα

Λειτουργικά Συστήματα

Μάθημα 1 ο ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΤΩΝ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

Λειτουργικά Συστήματα (ΗΥ321)

Λειτουργικά Συστήματα Πραγματικού Χρόνου

Κεφάλαιο 3: Λειτουργικά Συστήματα

Ελεγκτές/Παρακολουθητές (Monitors) Ταυτόχρονος Προγραμματισμός 1

Λειτουργικά συστήματα πραγματικού χρόνου

Κεφάλαιο 4 Λογισμικό συστήματος. Εφαρμογές Πληροφορικής Κεφ.4 Καραμαούνας Πολύκαρπος 1

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος

Λειτουργικά Συστήματα Η/Υ

Λειτουργικά Συστήματα

Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Λειτουργικά Συστήματα 1.1 Τι είναι Λειτουργικό Σύστημα (Operating System)

Διαφορές single-processor αρχιτεκτονικών και SoCs

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Χρονοπρογραμματισμός Εργαστηριακές Ασκήσεις

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Κεφάλαιο 3: Λειτουργικά Συστήµατα

Παράλληλη Επεξεργασία

Εξετάσεις Προόδου 8/1/2014 Τεχνικός Εφαρμογών Πληροφορικής (Πολυμέσα/ Web designer - developper/video games)

ΤρόποςΑξιολόγησης: α) Εργαστήρια (Προαιρετικάµε 20% - 35% βαρύτητα µόνοθετικά) β) Τελική Γραπτή Εξέταση

Το μάθημα. Λειτουργικά Συστήματα Πραγματικού Χρόνου Βασικές Έννοιες 6. Ενσωματωμένα Συστήματα (embedded systems) Παραδείγματα

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Μάθημα 6 ο. Χρονοδρομολόγηση (Scheduling)

Εισαγωγή στα Λειτουργικά Συστήματα

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

Κεφάλαιο 4. Λογισμικό Συστήματος

ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ

Λειτουργικά Συστήματα Πραγματικού Χρόνου

Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

Transcript:

Εισαγωγικά & Βασικές Έννοιες ΙΙΙ 1 lalis@inf.uth.gr

Γιατί πολλές διεργασίες/νήματα; Επίπεδο εφαρμογής Καλύτερη δόμηση κώδικα Αποφυγή μπλοκαρίσματος / περιοδικών ελέγχων Φυσική έκφραση παραλληλισμού Επίπεδο λειτουργικού συστήματος Υποστήριξη πολυπρογραμματισμού (πολλοί χρήστες) Υποστήριξη ταυτόχρονης εκτέλεσης σε 1 CPU Υποστήριξη παράλληλης εκτέλεσης σε πολλές CPU ΙΙΙ 2 lalis@inf.uth.gr

Παράδειγμα: έκφραση παραλληλισμού input data (unsorted) split data (unsorted) sort sort data (sorted) wait merge data (sorted) output ΙΙΙ 3 lalis@inf.uth.gr

Παράδειγμα: καλύτερη δόμηση input read chars lines remove spaces and \n words assign words to next line lines add spaces between words output ΙΙΙ 4 lalis@inf.uth.gr

Παράδειγμα: αποφυγή μπλοκαρίσματος job worker job control commands master job worker job worker ΙΙΙ 5 lalis@inf.uth.gr

Ταυτόχρονος Προγραμματισμός Παράλληλος Προγραμματισμός Στόχος: Ο συγχρονισμός και συντονισμός ανάμεσα σε συνεργαζόμενα νήματα ή διεργασίες ενός προγράμματος ή ολόκληρου συστήματος Πρόβλημα: Ορθότητα και απάλειψη ενεργής αναμονής Στόχος: Η επιτάχυνση ενός υπολογισμού με παράλληλη εκτέλεση πάνω από πολλούς επεξεργαστές Πρόβλημα: Κατάλληλη υποδιαίρεση του κώδικα σε τμήματα, και μεταφορά δεδομένων μεταξύ τους ΙΙΙ 6 lalis@inf.uth.gr

Αφαιρετική προσέγγιση Η έννοια του νήματος/διεργασία και τα βασικά προβλήματα του ταυτόχρονου προγραμματισμού έχουν γενικότερη ισχύ για διαφορετικούς τύπους συστημάτων υπολογιστών Μεμονωμένα συστήματα ένας ή περισσότεροι επεξεργαστές Κατανεμημένα συστήματα ξεχωριστοί κόμβοι που επικοινωνούν πάνω από ένα δίκτυο Υιοθετούμε ένα αφαιρετικό/γενικό μοντέλο νήματος/διεργασίας και εκτέλεσης κώδικα ΙΙΙ 7 lalis@inf.uth.gr

multiprocessor shared memory CPU CPU CPU CPU local memory local memory local memory local memory distributed system local memory CPU CPU local memory local memory CPU CPU local memory ΙΙΙ 8 lalis@inf.uth.gr

Νήματα/Διεργασίες ΙΙΙ 9 lalis@inf.uth.gr

Μονονηματική / πολυνηματική εκτέλεση Μονονηματικό μοντέλο εκτέλεσης (συμβατικό) Οι εντολές του κώδικα εκτελούνται σειριακά Ένα μοναδικό νήμα εκτέλεσης (execution thread) Πολυνηματικό μοντέλο εκτέλεσης Μπορεί να συνυπάρχουν πολλά νήματα / διεργασίες Που εκτελούν κώδικα ταυτόχρονα μεταξύ τους Κάθε νήμα / διεργασία έχει τη δική του (ιδιωτική) κατάσταση εκτέλεσης και εκτελείται ανεξάρτητα από τα άλλα νήματα / διεργασίες ΙΙΙ 10 lalis@inf.uth.gr

μονονηματική εκτέλεση πολυνηματική εκτέλεση PC main νήμα P1 P2 P3 (ροή εκτέλεσης) PC PC PC πρόγραμμα εντολή πρόγραμμα αλληλεπίδραση ΙΙΙ 11 lalis@inf.uth.gr

Νήματα/διεργασίες με κοινή μνήμη νήμα #1 νήμα #2 νήμα #Ν μνήμη στοίβα στοίβα στοίβα μετρητής εντολών και καταχωρητές ΚΜΕ μετρητής εντολών και καταχωρητές ΚΜΕ μετρητής εντολών και καταχωρητές ΚΜΕ ΙΙΙ 12 lalis@inf.uth.gr

Νήματα/διεργασίες χωρίς κοινή μνήμη νήμα #1 νήμα #2 νήμα #Ν μνήμη μνήμη μνήμη στοίβα στοίβα στοίβα μετρητής εντολών και καταχωρητές ΚΜΕ μετρητής εντολών και καταχωρητές ΚΜΕ μετρητής εντολών και καταχωρητές ΚΜΕ ΙΙΙ 13 lalis@inf.uth.gr

Διεργασία Θα χρησιμοποιούμε τους όρους «διεργασία» και «νήμα», ως ταυτόσημες έννοιες Σε πιο τεχνικό επίπεδο, υπάρχουν σημαντικές διαφορές ανάμεσα σε νήματα και διεργασίες η διεργασία αντιπροσωπεύει ένα πλήρες/ανεξάρτητο πλαίσιο εκτέλεσης ενός προγράμματος μια διεργασία μπορεί να δημιουργήσει άλλες διεργασίες οι διεργασίες δεν έχουν (αυτομάτως) κοινή μνήμη κάθε διεργασία μπορεί να εμπεριέχει πολλά νήματα τα νήματα έχουν κοινή μνήμη ΙΙΙ 14 lalis@inf.uth.gr

Συνηθισμένη τεχνική ορολογία Όρος heavyweight processes lightweight processes system-level threads user-level threads co-routines Λειτουργικότητα Level: system Scope: independent/separate program Memory: private Scheduling: preemptive/automatic Level: system Scope: same program Memory: shared Scheduling: preemptive/automatic Level: user Scope: same program Memory: shared Scheduling: preemptive/automatic Level: user Scope: same program Memory: shared Scheduling: explicit/manual ΙΙΙ 15 lalis@inf.uth.gr

Kernel & user-level threads Kernel threads (σε επίπεδο συστήματος) Κλήσεις συστήματος Δυνατότητα παράλληλης εκτέλεσης αν το σύστημα διαθέτει πολλούς επεξεργαστές Αν ένα νήμα μπλοκάρει σε κλήση συστήματος, τα υπόλοιπα συνεχίζουν την εκτέλεση τους User-level threads (σε επίπεδο εφαρμογής) Γρήγορες λειτουργίες Εκτέλεση σε έναν επεξεργαστή Αν ένα νήμα μπλοκάρει σε κλήση συστήματος, μπλοκάρει ολόκληρη η διεργασία ΙΙΙ 16 lalis@inf.uth.gr

user-level A thread B C user OS kernel thread ΙΙΙ 17 lalis@inf.uth.gr

Νήματα σε διάφορα επίπεδα λογισμικού Νήματα μπορεί να χρησιμοποιούνται σε πολλά διαφορετικά επίπεδα του λογισμικού ενός Η/Υ Για την ταυτόχρονη εκτέλεση ξεχωριστών εφαρμογών πάνω από το λειτουργικό σύστημα Για την ταυτόχρονη εκτέλεση τμημάτων μιας μοναδικής εφαρμογής Για την ταυτόχρονη εκτέλεση λειτουργιών του ίδιου του λειτουργικού συστήματος ΙΙΙ 18 lalis@inf.uth.gr

user program command line program system-call interface file subsystem process management subsystem I/O control device drivers memory management subsystem hardware control/interrupt interface OS Hardware ΙΙΙ 19 lalis@inf.uth.gr

Νήματα σε εφαρμογές χρήστη Κάποιες γλώσσες προγραμματισμού υποστηρίζουν την ταυτόχρονη εκτέλεση εγγενώς, μέσα από κατάλληλους τύπους, δομές και λειτουργίες Σε άλλες γλώσσες προγραμματισμού η δυνατότητα ταυτόχρονης εκτέλεσης δίνεται μέσα από ξεχωριστές βιβλιοθήκες που δεν αποτελούν μέρος της γλώσσας Και στις δύο περιπτώσεις, ο προγραμματιστής δημιουργεί συνήθως νήματα που έχουν κοινή μνήμη Τα νήματα δημιουργούνται/καταστρέφονται δυναμικά (ευέλικτος πόρος, όπως π.χ. η δυναμική μνήμη) Ανάλογα με την υλοποίηση, τα νήματα μπορεί να υλοποιούνται σε επίπεδο εφαρμογής ή συστήματος ΙΙΙ 20 lalis@inf.uth.gr

single-threaded program process multi-threaded program code code memory memory CPU state CPU state CPU state CPU state stack stack stack stack main thread main thread ΙΙΙ 21 lalis@inf.uth.gr

Εκτέλεση νημάτων/διεργασιών ΙΙΙ 22 lalis@inf.uth.gr

Ταυτόχρονη εκτέλεση Πολυπλεξία πάνω σε μια CPU Παράλληλη εκτέλεση σε διαφορετικές CPU P1 P2 P3 P1 P2 P3 P1 P2 P3 CPU CPU CPU CPU CPU CPU παραλληλισμός πολυπλεξία ΙΙΙ 23 lalis@inf.uth.gr

Πολυπλεξία σε μια CPU Κάθε νήμα εκτελείται («έχει την CPU») για ένα περιορισμένο χρονικό διάστημα Όταν εκπνεύσει ο χρόνος, η εκτέλεση του νήματος σταματά και η κατάσταση του αποθηκεύεται Επιλέγεται για εκτέλεση το επόμενο νήμα Επαναφέρεται η κατάσταση του επιλεγμένου νήματος, και η εκτέλεση του συνεχίζεται από εκεί που είχε σταματήσει Η αλλαγή ανάμεσα στα δύο νήματα ονομάζεται εναλλαγή (thread switch) ΙΙΙ 24 lalis@inf.uth.gr

χρόνος συνεχόμενη εκτέλεση διάστημα κατά το οποίο το νήμα δεν έχει την CPU καθυστέρηση λόγω διακοπών διακοπτόμενη εκτέλεση pause continue pause continue pause continue ΙΙΙ 25 lalis@inf.uth.gr

χρόνος (α) P1 1 2 3 4 5 P2 1 2 3 4 5 6 7 (β) P1 1 2 3 4 5 P2 1 2 3 4 5 6 7 (γ) P1 1 2 3 4 5 P2 1 2 3 4 5 6 7 ΙΙΙ 26 lalis@inf.uth.gr

Λειτουργία εναλλαγής σε μια CPU Πληροφορία κατάστασης νήματος Στατική & δυναμική μνήμη Καταχωρητές της CPU Στοίβα Βήματα εναλλαγής Διακοπή εκτέλεσης Σώσιμο κατάστασης τρέχοντος νήματος Επιλογή του επόμενου νήματος προς εκτέλεση Επαναφορά κατάστασης του επιλεγμένου νήματος Συνέχεια εκτέλεσης ΙΙΙ 27 lalis@inf.uth.gr

stack task descriptor stack memory CPU PC registers memory PC cpu registers code code ΙΙΙ 28 lalis@inf.uth.gr

P1 εκτελείται current task P1 memory memory P2 PC stack stack PC regs regs code CPU code PC regs ΙΙΙ 29 lalis@inf.uth.gr

σώσιμο κατάστασης P1 current task P1 memory memory P2 PC stack stack PC regs regs code CPU code PC regs ΙΙΙ 30 lalis@inf.uth.gr

επιλογή P2 current task P1 memory memory P2 PC stack stack PC regs regs code CPU code PC regs ΙΙΙ 31 lalis@inf.uth.gr

επαναφορά κατάστασης P2 current task P1 memory memory P2 PC stack stack PC regs regs code CPU code PC regs ΙΙΙ 32 lalis@inf.uth.gr

P2 εκτελείται current task P1 memory memory P2 PC stack stack PC regs regs code CPU code PC regs ΙΙΙ 33 lalis@inf.uth.gr

Κόστος εναλλαγής O χρόνος που ξοδεύεται για την εναλλαγή αποτελεί γραφειοκρατικό κόστος (overhead) κατά την διάρκεια της εναλλαγής δεν εκτελείται κώδικας εφαρμογών ή υπηρεσιών του συστήματος Ο χρόνος της εναλλαγής εξαρτάται κυρίως από την πολυπλοκότητα υλοποίησης του συστήματος την υποστήριξη που παρέχει το υλικό (ειδικές εντολές) Όσο περισσότερες εναλλαγές γίνονται ανά μονάδα χρόνου τόσο λιγότερος χρόνος αφιερώνεται στην εκτέλεση των διεργασιών του συστήματος χειρότερη περίπτωση: γίνονται μόνο εναλλαγές ΙΙΙ 34 lalis@inf.uth.gr

χρόνος (α) P1 1 2 3 4 5 P2 1 2 3 4 5 6 7 (β) P1 2 2 3 4 5 P2 1 2 3 4 5 6 7 (γ) P1 1 2 3 4 5 P2 1 2 3 4 5 6 7 ΙΙΙ 35 lalis@inf.uth.gr

Αναμονή Συχνά ένα νήμα απλά περιμένει να παρέλθει ένα συγκεκριμένο χρονικό διάστημα, να φτάσουν δεδομένα, να λάβει άδεια χρήσης ενός πόρου, Ενεργητική αναμονή Περιοδικός έλεγχος της συνθήκης, με ρητό τρόπο Μη βέλτιστη/αποδοτική χρήση της CPU Ανενεργή αναμονή Εκτός από τις λειτουργίες δημιουργίας/τερματισμού διεργασιών, το σύστημα προσφέρει και λειτουργίες αναμονής/αφύπνισης Όσο ένα νήμα βρίσκεται σε κατάσταση αναμονής, δεν λαμβάνει τον επεξεργαστή ΙΙΙ 36 lalis@inf.uth.gr

πότε θα έρθει ο επόμενος χαρακτήρας από το πληκτρολόγιο; πότε θα έρθουν τα δεδομένα από το P1; P1 P2 πότε θα έρθουν τα δεδομένα από το P2 ή θα χτυπήσει το ξυπνητήρι μου; P3 ΙΙΙ 37 lalis@inf.uth.gr

Ενδεικτικές λειτουργίες Λειτουργία task_create(task *t, ) task_start(task *t) task_stop(task *t) task_yield() Περιγραφή Δημιουργία νήματος Έναρξη εκτέλεσης νήματος Τερματισμός νήματος Παραχώρηση επεξεργαστή task_wait() task_wakeup(task *t) Αναμονή νήματος Αφύπνιση νήματος task_wait(queue *q) task_wakeup(queue *q) task_wakeupall(queue *q) Αναμονή νήματος σε ουρά Αφύπνιση ενός (του πρώτου) νήματος που αναμένει στην ουρά Αφύπνιση όλων των νημάτων που αναμένουν στην ουρά ΙΙΙ 38 lalis@inf.uth.gr

αναμονή running εναλλαγή (απώλεια επεξεργαστή) εναλλαγή (λήψη επεξεργαστή) waiting αφύπνιση ready δημιουργία ΙΙΙ 39 lalis@inf.uth.gr

Χρονοπρογραμματισμός Πότε «χάνει» ένα νήμα τον επεξεργαστή; Αυτόματα (περιοδικά), με βάση ένα χρονόμετρο Όταν καλέσει έμμεσα ή άμεσα την wait/yield Ποιο νήμα θα «πάρει» τον επεξεργαστή; Προτεραιότητες, απαιτήσεις πραγματικού χρόνου Ο πιο απλός αλγόριθμος: round-robin ΙΙΙ 40 lalis@inf.uth.gr

tasks P0 ready P1 running P2 ready waiting P1 εκτελείται ΙΙΙ 41 lalis@inf.uth.gr

tasks P0 ready P1 ready P2 running waiting P2 εκτελείται ΙΙΙ 42 lalis@inf.uth.gr

tasks P0 running P1 ready P2 ready waiting P2 εκτελείται ΙΙΙ 43 lalis@inf.uth.gr

tasks P0 ready P1 running P2 ready waiting P1 εκτελείται ΙΙΙ 44 lalis@inf.uth.gr

tasks P0 ready P1 waiting P2 running waiting P1 μπαίνει σε αναμονή P2 εκτελείται ΙΙΙ 45 lalis@inf.uth.gr

tasks P0 running P1 waiting P2 waiting waiting P2 μπαίνει σε αναμονή P0 εκτελείται ΙΙΙ 46 lalis@inf.uth.gr

tasks P0 waiting P1 waiting P2 waiting waiting P0 μπαίνει σε αναμονή ΙΙΙ 47 lalis@inf.uth.gr

tasks P0 waiting P1 ready P2 waiting waiting P1 αφυπνίζεται ΙΙΙ 48 lalis@inf.uth.gr

tasks P0 waiting P1 running P2 waiting waiting P1 εκτελείται ΙΙΙ 49 lalis@inf.uth.gr

Χειρισμός διακοπών / γεγονότων Ο χειρισμός διακοπών (interrupts) είναι μια ειδική μορφή ταυτόχρονης εκτέλεσης Σε περίπτωση διακοπής, γίνεται αυτόματη εναλλαγή από την τρέχουσα εκτέλεση στην ρουτίνα χειρισμού της διακοπής μπορεί να συμβεί ανά πάσα στιγμή Παρομοίως για ασύγχρονα γεγονότα πιο ψηλού επιπέδου (asynchronous events) ο χειρισμός των οποίων γίνεται με ανάστροφες κλήσεις (up-calls) π.χ. signal handling in Unix Προκύπτουν προβλήματα αντίστοιχα/παρόμοια με αυτά της ταυτόχρονης εκτέλεσης νημάτων ΙΙΙ 50 lalis@inf.uth.gr

interrupt/event handler current thread interrupt/event generator ΙΙΙ 51 lalis@inf.uth.gr

Εκτέλεση νημάτων σε πολλές CPU Τεχνικές κατανομής Κεντρική ουρά όπου τοποθετούνται τα νήματα, με κάθε CPU να εκτελεί το επόμενο έτοιμο νήμα Κάθε CPU έχει δική της ουρά νημάτων, ενώ μπορεί να γίνει μεταφορά νημάτων ανάμεσα στις ουρές (π.χ., αν μια CPU παραμένει σχετικά αδρανής) Προβλήματα Γραφειοκρατικό κόστος Καλή εκμετάλλευση CPUs Ομαδοποίηση και συντονισμένη εκτέλεση διαφορετικών νημάτων ΙΙΙ 52 lalis@inf.uth.gr

CPU scheduler P1 P2 P3 CPU scheduler P4 P5 P9 task migration/stealing CPU scheduler P6 P7 P8 P9 ΙΙΙ 53 lalis@inf.uth.gr