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

Σχετικά έγγραφα
Παράλληλη Επεξεργασία

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

Νήµατα. ιεργασίες και νήµατα Υλοποίηση νηµάτων Ελαφριές διεργασίες Αξιοποίηση νηµάτων. Κατανεµηµένα Συστήµατα 10-1

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

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

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

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

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

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

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

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

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

Κατηγορίες Νηµάτων. Νήµατα Επιπέδου Πυρήνα. Νήµατα Επιπέδου Χρήστη. «Νήµατα Επιπέδου Χρήστη» Ε-85: Ειδικά Θέµατα Λογισµικού

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

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

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

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

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

Μνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1

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

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

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

Συναρτήσεις-Διαδικασίες

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

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

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

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

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

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

ιεργασίες και Επεξεργαστές στα Κατανεµηµένων Συστηµάτων

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

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

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

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

Περίληψη. Υπερυπολογιστές. Υπολογιστικά προβλήµατα. TOP 500 (Ιούνιος 2007) TOP 500 (Ιούνιος 2009) Ε-85: Ειδικά Θέµατα Λογισµικού

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

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

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

ΗΜΥ Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών

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

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

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Διαδικασίες Ι. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 4

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

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

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

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

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

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

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

Αρχιτεκτονική Μικροεπεξεργαστών MIPS-32. Αρχείο καταχωρητών και Χάρτης Μνήµης

Εικονική Μνήμη (Virtual Μemory)

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

Κεφάλαιο 10 ο Υποπρογράµµατα

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Επ. Καθ. Κ. Λαμπρινουδάκης

Πολυπύρηνοι επεξεργαστές Multicore processors

Ενότητα 13. Εισαγωγή στην Πληροφορική. Κεφάλαιο 13Α. Αρχεία. Χειµερινό Εξάµηνο ρ. Παναγιώτης Χατζηδούκας (Π..407/80) προγραµµατισµός

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

; Γιατί είναι ταχύτερη η λήψη και αποκωδικοποίηση των εντολών σταθερού μήκους;

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

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

Συγχρονισµός: Αδιέξοδο & Παρατεταµένη Στέρηση

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

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

Οργάνωση και Αρχιτεκτονική Υπολογιστών. Κεφάλαιο 7.4

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

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

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου

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

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

Υποπρογράμματα (Subroutines)

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

Αρχιτεκτονική Υπολογιστών

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

Αρχιτεκτονική υπολογιστών

Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ. Εισαγωγή

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή

Ο βασικός παράγοντας είναι ο χρόνος αξιοποίησης του επεξεργαστή Ελάχιστος αριθµός πράξεων και όχι µακρόχρονες αιτήσεις Ε/Ε

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

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

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

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

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

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 6 C & Assembly

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

Α. Ερωτήσεις Ανάπτυξης

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

Transcript:

Ε-85: Ειδικά Θέµατα Λογισµικού Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων Χειµερινό Εξάµηνο 2009-10 «ιεργασίες και Νήµατα» Παναγιώτης Χατζηδούκας (Π.Δ. 407/80) E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων 1

ιεργασίες Μια διεργασία περιλαµβάνει Ένα πεδίο διευθύνσεων, που αποτελείται από τα τµήµατα: κώδικα, δεδοµένων, σωρού και στοίβας Πληροφορίες που διατηρεί το λειτουργικό σύστηµα εσωτερικά (κατάσταση διεργασίας, προτεραιότητα, δεσµευµένοι πόροι, στατιστικά). Σαν κατάσταση διεργασίας αναφέρουµε κάθε στιγµιότυπο κατά το οποίο τα παραπάνω δεδοµένα έχουν συγκεκριµένες τιµές. Η κατάσταση µνήµης αντιστοιχεί στην κατάσταση του χώρου διευθύνσεων Η κατάσταση επεξεργαστή αντιστοιχεί στις τιµές των καταχωρητών Heap Data Code Registers E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων 2

Εναλλαγή ιεργασιών Γιανα εκτελεστεί µια διεργασία σε έναν επεξεργαστή πρέπει να φορτωθεί σε αυτόν η κατάσταση επεξεργαστή της διεργασίας Κατά την εκτέλεση της διεργασίας η κατάσταση επεξεργαστή µεταβάλλεται Για να σταµατήσει η εκτέλεση µιας διεργασίας και να ξεκινήσει µια άλλη (context switching): Αποθηκεύεται η κατάσταση επεξεργαστή της τρέχουσας διεργασίας Φορτώνεται η κατάσταση επεξεργαστή της προς εκτέλεση διεργασίας E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων 3

Μνήµη ιεργασίας Κάθεδιεργασία διαθέτει το δικό της (ιδιωτικό) χώρο µνήµης στον οποίο έχει πρόσβαση µόνο αυτή Το λειτουργικό σύστηµα έχει πρόσβαση στη µνήµη όλων των διεργασιών Η αποµόνωση των διεργασιών Εξασφαλίζει ότι µια διεργασία δεν θα έχει πρόσβαση στη µνήµη µιας άλλης διεργασίας Παρέχει στοιχειώδη ασφάλεια σε ένα σύστηµα που εξυπηρετεί πολλούς χρήστες ταυτόχρονα E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων 4

ιαµοίρασημνήµης Παράτην αποµόνωση µεταξύ των διεργασιών, σε πολλές περιπτώσεις υπάρχει ανάγκη για επικοινωνία µεταξύ τους Απώτερος σκοπός είναι η συνεργασία και ο συντονισµός των διεργασιών για την επίλυση κάποιου προβλήµατος Το λειτουργικό σύστηµα υλοποιεί διάφορους µηχανισµούς διαδιεργασιακήςεπικοινωνίας: σύνολο τεχνικών για την ανταλλαγή δεδοµένων µεταξύ δύο ή περισσότερων διεργασιών: σήµατα, αρχεία, σωληνώσεις ανταλλαγή µηνυµάτων, κοινή µνήµη, σηµαφόροι Tα νήµατα εκµεταλλεύονται την ιδέα της κοινής µνήµης για να διευκολύνουν τον προγραµµατισµό E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων 5

ΟργάνωσηΜνήµης Προγράµµατος Παράµετροιγραµµής εντολών & µεταβλητές περιβάλλοντος Στοίβα Σωρός Μη αρχικοποιηµένα εδοµένα Αρχικοποιηµένα εδοµένα Κώδικας E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων 6

ιευθέτησημνήµης (Πρόγραµµα C) Τµήµα κώδικα (text segment) Οι εντολές που εκτελεί o επεξεργαστής. Μπορεί να διαµοιράζεται ανάµεσα σε διεργασίες. Συνήθως είναι ανάγνωσης µόνο (?) Τµήµα αρχικοποιηµένωνδεδοµένων (initialised data segment) Καθολικές µεταβλητές µε αρχική τιµή π.χ. int Pi = 3.1415; static char message[] = hello world!"; E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων 7

ιευθέτησημνήµης (Πρόγραµµα C) Τµήµαµη αρχικοποιηµένωνδεδοµένων (uninitialized data segment) Καθολικές µεταβλητές χωρίς αρχική τιµή π.χ. int result; double Matrix[512][512]; Ο πυρήνας γράφει µηδενικά στο τµήµα αυτό πριν ξεκινήσει η εκτέλεση του προγράµµατος Στοίβα Τοπικές µεταβλητές, παράµετροι συναρτήσεων και διευθύνσεις επιστροφής Σωρός Για δυναµική διαχείριση µνήµης (malloc, calloc,...) E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων 8

Νήµατα Ένανήµα είναι µια ανεξάρτητη ακολουθία εκτέλεσης εντολών ενός προγράµµατος εντός µιας διεργασίας Φιλοσοφία: Αντιγραφή και διαχωρισµός µόνο των απαραίτητων δεδοµένων Κοινή διαµοίραση των υπόλοιπων Μια διεργασία µπορεί να δηµιουργήσει πολλαπλά νήµατα, τα οποία εκτελούν µια συγκεκριµένη συνάρτηση Κάθε τέτοιο νήµα έχει ξεχωριστή κατάσταση εκτέλεσης όλα µπορούν να εκτελεστούν ταυτόχρονα σε διαφορετικούς επεξεργαστές. Κάθε νήµα χρησιµοποιεί τον ίδιο χώρο διευθύνσεων, οπότε όλα επενεργούν στα ίδια δυναµικά και στατικά δεδοµένα. E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων 9

Νήµατα Ένα νήµα συχνά καλείται ελαφριά διεργασία εν είναι όµως διεργασία αλλά κάτι µικρότερο από αυτή Το περιβάλλον εκτέλεσης µιας διεργασίας περιλαµβάνει Μνήµη, εντολές, µετρητή προγράµµατος, δείκτη στοίβας, καταχωρητές, περιγραφείς αρχείων κλπ. Ένα νήµα διαθέτει λιγότερα χαρακτηριστικά Μετρητή προγράµµατος, στοίβα, σύνολο καταχωρητών E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων 10

Τα νήµατα µοιράζονται Νήµατα Εντολές διεργασίες, τα περισσότερα δεδοµένα, τα ανοιχτά αρχεία, χειριστές σηµάτων, τρέχων κατάλογος εργασίας, ταυτότητα χρήστη και οµάδας εν µοιράζονται Ταυτότητα νήµατος, σύνολο καταχωρητών (που περιλαµβάνει τον µετρητή προγράµµατος (pc) και τον δείκτη στοίβας (sp)), στοίβα, errno, µάσκα σηµάτων, προτεραιότητα Πρότυπο POSIX: pthreads Καθορίζει τη διεπαφή και τον τρόπο µε τον οποίο άλλες διεπαφής του προτύπου POSIX σχετίζονται µε τα νήµατα E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων 11

ιεργασίεςκαι Νήµατα Παραδοσιακή ιεργασία Νήµατα Εκτέλεσης Πολυνηµατική ιεργασία Μιαροή εκτέλεσης εντολών Πεδίο ιευθύνσεων Πολλαπλέςροές εκτέλεσης εντολών E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων 12

ιεργασίεςκαι Νήµατα Process ID Program Counter Signal Mask Registers Process Priority Pointer & Heap Memory Map File Descriptor Table Thread ID Program Counter Signal Mask Registers Thread Priority Pointer & Τανήµατα µοιράζονται την ίδια µνήµη, σωρό, χειριστές σηµάτων και περιγραφείς αρχείων E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων 13

ιεργασίεςκαι Νήµατα Βασικά πλεονεκτήµατα νηµάτων Μικρότερο κόστος δηµιουργίας και διαχείρισης Η επικοινωνία µεταξύ νηµάτων είναι απλούστερη και φτηνότερη σε σύγκριση µε τις διεργασίες Ο προγραµµατισµός νηµάτων µπορεί να είναι επικίνδυνος Είναι ευκολότερο να συµβεί κάποιο προγραµµατιστικό λάθος Μερικές ρουτίνες συστήµατος συµπεριφέρονται διαφορετικά µε τα νήµατα Υπάρχουν διαφορετικές προσεγγίσεις υλοποίησης νήµατα σε επίπεδο χρήστη (user level) νήµατα σε επίπεδο συστήµατος (system/kernel level) Η διαφορά βρίσκεται στο κατά πόσο το ίδιο το λειτουργικό γνωρίζει την ύπαρξη νηµάτων ή όχι E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων 14

ΝήµαταΕπιπέδου Πυρήνα Υλοποίηση σε επίπεδο λειτουργικού συστήµατος. Κάθε νήµα είναι ουσιαστικά µια (ελαφριά) διεργασία. Οι πράξεις νηµάτων είναι κλήσεις συστήµατος. Χρονοπρογραµµατισµός γίνεται από το λειτουργικό σύστηµα, όπως και για τις κανονικές διεργασίες. Εύκολη /αυτόµατη παράλληλη εκτέλεση νηµάτωνόταν το υλικό διαθέτει πολλούς επεξεργαστές. Αν ένα νήµα µπλοκάρει (σε κάποια κλήση συστήµατος) τότε τα υπόλοιπα νήµατα (της ίδιας διεργασίας) συνεχίζουν την εκτέλεση τους Όλες σχεδόν οι υλοποιήσεις των POSIX Threads χρησιµοποιούν το συγκεκριµένο µοντέλο E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων 15

ΝήµαταΕπιπέδου Πυρήνα Απεικόνιση ένα-προς-ένα (1:1) Νήµα 1 Οντότητα Πυρήνα 1 Registers Νήµα 2 Οντότητα Πυρήνα 2 CPU 1 Registers Registers Νήµα 3 Νήµα 4 Οντότητα Πυρήνα 3 Οντότητα Πυρήνα 4 CPU 2 Heap Data Code E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων 16

ΝήµαταΕπιπέδου Χρήστη Υλοποίηση σε επίπεδο χρήστη Στοίβα και καταχωρητές setjmp, ucontext, assembly, fibers Οι πράξεις σε επίπεδο νηµάτων είναι γρήγορες αφούδεν υλοποιούνται µέσω κλήσεων συστήµατος. Τα νήµατα χρονοπρογραµµατίζονταιστον χρόνο τηςδιεργασίας που τα δηµιουργεί, µε φροντίδα τηςυλοποίησης σε επίπεδο χρήστη. Μπορεί να υποστηριχθεί αυτόµατη (alarm) ή αποκλειστικά ελεγχόµενη (εθελοντική) εναλλαγή (yield). εν µπορεί να γίνει εκµετάλλευση πολυεπεξεργαστώνκαθώς το λειτουργικό σύστηµα δεν γνωρίζει τηνύπαρξη νηµάτων µέσα σε µια διεργασία. Αν ένα νήµα µπλοκάρει (π.χ. read) τότε µπλοκάρει όλη η διεργασία. E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων 17

ΝήµαταΕπιπέδου Χρήστη Απεικόνιση πολλά-προς-ένα (Μ:1) Νήµα 1 Νήµα 2 Νήµα 3 Νήµα 4 Οντότητα Πυρήνα 1 CPU 1 CPU 2 Heap Data Code Registers E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων 18

Νήµατα ύο Επιπέδων Συνδυασµός των δύο προηγούµενων προσεγγίσεων. Μια διεργασία µπορεί να δηµιουργήσει νήµατα σεεπίπεδο συστήµατος, σε κάθε ένα από τα οποίαµπορεί να απεικονίσει ένα ή περισσότερα νήµατα σε επίπεδο χρήστη. Το λειτουργικό σύστηµα χρονοπρογραµµατίζειτανήµατα συστήµατος, ενώ η διεργασία (σύστηµα χρόνου εκτέλεσης) είναι ελεύθερη να χρονοπρογραµµατίζει τα νήµατα χρήστη. Προχωρηµένη επικοινωνία εφαρµογής-συστήµατοςγια προσαρµοζόµενη λειτουργία, π.χ. δηµιουργίανηµάτων όταν υπάρχουν αρκετοί διαθέσιµοι πόροι. υνατότητα επέκτασης του αλγόριθµου που χρησιµοποιεί ο χρονοπρογραµµατιστής του συστήµατος. E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων 19

Νήµατα ύο Επιπέδων Απεικόνισηπολλά-προς-πολλά (Μ:Ν) Νήµα 1 Registers Νήµα 2 Οντότητα Πυρήνα 1 CPU 1 Registers Νήµα 3 Νήµα 4 Οντότητα Πυρήνα 2 CPU 2 Heap Data Code E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων 20

ΓενικήΑρχιτεκτονική Χρήστες Πυρήνας Δροµολογητής ΛΣ = Νήµα επιπέδου χρήστη = Νήµα επιπέδου πυρήνα = Επεξεργαστής E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων 21