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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Μετακινούμενος Κώδικας (Mobile Code) Κατανεμημένα Συστήματα 1

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

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

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

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

Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC

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

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

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

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

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

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

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

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

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

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

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

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

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

Λειτουργικά Συστήματα Ι. Κεφάλαιο 1 Βασικές Έννοιες Λειτουργικών Συστημάτων

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

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

Transcript:

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

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

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

Αφαιρετική προσέγγιση Η έννοια του νήματος/διεργασίας και τα βασικά προβλήματα του ταυτόχρονου προγραμματισμού έχουν γενικότερη ισχύ για διαφορετικούς τύπους συστημάτων υπολογιστών Μεμονωμένα συστήματα με έναν ή περισσότερες CPUs/cores Κατανεμημένα συστήματα με ξεχωριστούς κόμβους που επικοινωνούν πάνω από ένα κατάλληλο δίκτυο Υιοθετούμε ένα αφαιρετικό/γενικό μοντέλο νήματος/διεργασίας και εκτέλεσης κώδικα ΙΙΙ 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 καθυστέρηση λόγω διακοπών διακοπτόμενη εκτέλεση ΙΙΙ 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 execution thread interrupt/event generator ΙΙΙ 51 lalis@inf.uth.gr

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

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