Διεργαςίεσ και Νήματα

Σχετικά έγγραφα
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διεργασίες και Νήματα Εργαστηριακές Ασκήσεις

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

Βαςικέσ Έννοιεσ Λειτουργικών Συςτημάτων

Πανεπιςτήμιο Πελοποννήςου Τμήμα Επιςτήμησ και Τεχνολογίασ Τηλεπικοινωνιών. Λειτουργικά Συςτήματα Προγραμματιςμόσ Συςτήματοσ.

Βαγγϋλησ Οικονόμου Διϊλεξη 4. Δομ. Προγραμ. - Διϊλεξη 4

Πανεπιςτήμιο Πελοποννήςου Τμήμα Επιςτήμησ και Τεχνολογίασ Τηλεπικοινωνιών. Λειτουργικά Συςτήματα Προγραμματιςμόσ Συςτήματοσ. Μνήμη

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

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

NIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4

Βαγγϋλησ Οικονόμου Διϊλεξη 5 ΠΙΝΑΚΕΣ. Δομ. Προγραμ. - Διϊλεξη 5 1

ΑΡΧΗ 1Η ΕΛΙΔΑ ΘΕΜΑ A Α. Μονάδεσ 10 Μονάδεσ 5 Μονάδεσ 4 4 Ε. 1 Μονάδεσ 2 Ε. 2 Μονάδεσ 5 ΣΕΛΟ 1Η ΕΛΙΔA

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

«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφϊλαιο2: Βαςικϊ ςτοιχεύα τησ γλώςςασ

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ ΘΕΜΑ Α Α1 Μονάδες 10 Μονάδες 4 ΤΕΛΟΣ 1ΗΣ ΣΕΛΙΔΑΣ

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

Στο λογιςμικό (software) περιλαμβϊνονται όλα τα προγράμματα του υπολογιςτό. Το Λογιςμικό χωρύζετε ςε δύο μεγϊλεσ κατηγορύεσ:

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

19/10/2009. Γεωγραφικά Συςτήματα Πληροφοριϊν Spatial Operations. Σήμερα... Τφποι ερωτήςεων (Queries)

19/10/2009. Προηγοφμενη βδομάδα... Σήμερα Γεωγραφικά Συςτήματα Πληροφοριϊν Χωρικά Μοντζλα Δεδομζνων. Δομή του μαθήματοσ

Βαγγϋλησ Οικονόμου Διϊλεξη 6. Δομ. Προγραμ. - Συναρτόςεισ - Διϊλεξη 6

22/11/2009. Προηγοφμενη βδομάδα... Δεδομζνα απο Δευτερεφουςεσ πηγζσ. Αυτή την βδομάδα...

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

Εγχειρίδιο Χρήσης των Εργαλείων Αναγνώρισης Χαρισματικών Μαθητών στα Μαθηματικά

Εκφωνήσεις ασκήσεων εργαστηρίου 1

«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» ΚΕΦΑΛΑΙΟ 3: ΑΝΤΙΚΕΙΜΕΝΑ ΚΑΙ ΜΕΘΟΔΟΙ

Ειςαγωγή ςτη Διαχείριςη Δικτύων

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

NetMasterII ςύςτημα μόνιμησ εγκατϊςταςησ επιτόρηςη και καταγραφό ςημϊτων από αιςθητόρια και μετατροπεύσ κϊθε εύδουσ ςύςτημα ειδοπούηςησ βλϊβη

Τεχνικόσ Μαγειρικόσ Τϋχνησ Αρχιμϊγειρασ (Chef) Β Εξϊμηνο

Οδηγόσ πουδών

ΚΕΥΑΛΑΙΟ 2 Σο εςωτερικό του υπολογιςτό

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

Παθήςεισ του θυροειδή ςε άτομα με ςύνδρομο Down: Πληροφορίεσ για γονείσ και δαςκάλουσ. Τι είναι ο θυροειδήσ αδένασ;

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

Δίκτυα Η/Υ ςτην Επιχείρηςη

Εντολζς του Λειτουργικοφ Συστήματος UNIX

ή α α POSIX Threads ( έ ος 1 ο )

Εργαστήριο 5 fork(), exec(), signals

Υλοποίηςη Αλγορίθμου με υπολογιςτή - Προγραμματιςμόσ

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

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

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

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

Πίνακασ τεχνικών και λειτουργικών προδιαγραφών. Πλόρεσ ελληνικό περιβϊλλον (interface) για Διαχειριςτϋσ, Εκπαιδευτϋσ, Εκπαιδευόμενουσ

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

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

Ειςαγωγό ςτο Ιnternet. χολό Θετικών Επιςτημών, Σμόμα Βιολογύασ, Πανεπιςτόμιο Πατρών

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

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

Χρονοπρογραµµατισµός ΚΜΕ (CPU Scheduling)

Προγραμματισμός συστημάτων UNIX/POSIX. Διεργασίες (processes)

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διεργασίες και Νήματα

Φοιτητόσ : Κουκϊρασ Παραςκευϊσ ΑΜ : 06/3059 Ίδρυμα/Τμόμα : Αλεξϊνδρειο Τεχνολογικό Εκπαιδευτικό Ιδρυμα/Πληροφορικόσ

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διεργασίες και Νήματα

Μαθηματικϊ Γ' Ενιαύου Λυκεύου (μϊθημα κατεύθυνςησ)

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

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

Το τςάϊ ςυντροφιά ςτην δουλειά

Προγραμματισμός συστημάτων UNIX/POSIX. Διαδιεργασιακή επικοινωνία: αγωγοί (IPC inter-process communication: pipes)

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διεργασίες και Νήματα

Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα

Μαθηματικοπούηςη. Μαθηματικοπούηςη. Μαθηματικϋσ δεξιότητεσ. Κατακόρυφη

Αναφϋρεται ςτουσ μηχανιςμούσ ελϋγχου δϋςμευςησ των πόρων.

Χαϊδάρησ Δημήτρησ. Επιβλέπων καθηγητήσ: Ψαρράσ Νικόλαοσ

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ. Δωδϋκατη Διϊλεξη Έλεγχοσ Συςτόματοσ

Ο ΟΓΙΚΟΣ ΦΑΡΤΗΣ ΤΟΥ ΣΑΚΦΑΡΩΓΗ ΓΙΑΒΗΤΗ ΣΤΗΝ ΔΛΛΑΓΑ

ΕΚΠΑΙΔΕΤΣΙΚΟ ΕΝΑΡΙΟ ΓΙΑ ΣΗΝ ΑΞΙΟΠΟΙΗΗ ΚΑΙ ΕΥΑΡΜΟΓΗ ΣΩΝ ΣΠΕ ΣΗ ΔΙΔΑΚΣΙΚΗ ΠΡΑΞΗ

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

ενθαρρύνοντασ τη ςυνέχιςη των προβλημάτων

Τϋταρτη Διϊλεξη Μοντϋλα Διαδικαςύασ Λογιςμικού Μϋροσ Β

EETT Δημόςια Διαβούλευςη ςχετικά με την εκχώρηςη δικαιώματων χρήςησ ραδιοςυχνοτήτων ςτη Ζώνη 27,5 29,5 GHz

Αιτίεσ - Συνέπειεσ - Τρόποι αντιμετώπιςησ. Χριστίνα Μαυροϊδάκη Κωνσταντίνα Μαρκάκη

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

ημειώςεισ των αςκόςεων του μαθόματοσ Κεφαλαιαγορϋσ- Επενδύςεισ Ενότητα: Χρηματοοικονομικόσ Κύνδυνοσ Διδϊςκων : Αγγελϊκησ Γιώργοσ Εργαςτηριακόσ

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

Παρουςίαςη προςχεδίου π.δ. για την εναρμόνιςη τησ εθνικήσ νομοθεςίασ με την Ευρωπαΰκή Οδηγία 2013/59/ΕΤΡΑΣΟΜ του υμβουλίου

Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Σχολή Τεχνολογικών Εφαρμογών Ακαδημαϊκό έτος

Σημειώσεις Εργαστηρίου - Ασκήσεις. Διδάσκων: Κωνσταντίνος Αντωνής Επίκουρος Καθηγητής Δρ. Μηχανικός Η/Υ & Πληροφορικής Πανεπιστημίου Πατρών

Συςτιματα. Βαγγϋλησ Οικονόμου Διϊλεξη 4. Τηλεπικοινωνύεσ - Συςτόματα

Εργαστηριακή Άσκηση. Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΝΗΜΑΤΑ - ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

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

ΤΜΒΑΗ ΔΙΑΝΟΜΗ ΤΛΙΚΟΤ ΣΟ ΔΙΚΣΤΟ ΠΡΑΚΣΟΡΩΝ ΣΗ ΟΠΑΠ

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

Μαθηματικϊ. Β' Ενιαύου Λυκεύου. (μϊθημα κοινού κορμού) Υιλοςοφύα - κοπού

AΠΙΝΙΔΩΣΗ. Μημήκοσ τυλιανόσ*, Χαρούπα Στεργιανό** *Νοζηλεσηής ΚΧΜΕΘ ΠΓΝΘ ΑΧΕΠΑ **Προϊζηαμένη ΚΧΜΕΘ ΠΓΝΘ ΑΧΕΠΑ

Θεωρύεσ Μϊθηςησ και ΤΠΕ Εποικοδομιςμόσ

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

UNIX System Programming

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

ΕΛΕΓΦΟ ΕΜΠΟΡΕΤΜΑΣΨΝ ΣΕΦΝΙΚΟ ΜΑΓΕΙΡΙΚΗ ΣΕΦΝΗ ΑΡΦΙΜΑΓΕΙΡΑ (CHEF)

Μάθημα 7: Αλγόριθμοι Χρονοδρομολόγησης

Εργαστήριο 7 fork(), exec(), signals

Η πολυνηματική γλώσσα προγραμματισμού Cilk

ΗΛΕΚΣΡΟΝΙΚΗ ΕΠΙΚΟΙΝΩΝΙΑ ΣΟΤ ΦΟΛΕΙΟΤ ΠΡΟ ΣΟΤ ΓΟΝΕΙ. - Θέςη υπεύθυνου προςώπου για την ςυμπλήρωςη του ερωτηματολογίου: Ερωτηματολόγιο

Όγδοη Διϊλεξη Case Study

Πωσ αλλάζει τη Μεςόγειο το ενεργειακό παζλ

Transcript:

Πανεπιςτήμιο Πελοποννήςου Τμήμα Επιςτήμησ και Τεχνολογίασ Τηλεπικοινωνιών Λειτουργικά Συςτήματα Προγραμματιςμόσ Συςτήματοσ Διεργαςίεσ και Νήματα

Διεργαςίεσ Διεργαςία (process): ϋνα πρόγραμμα ςε κατϊςταςη εκτϋλεςησ Το διϊ ταύτα : Επικϊλυψη λειτουργύασ Πολυπρογραμματιςμόσ Ψευδοπαραλληλύα Βελτύωςη ταχύτητασ Διεργαςύεσ και Νόματα 2

Βελτίωςη Ταχύτητασ? Δύο διεργαςύεσ: Α: διϊρκεια εκτϋλεςησ 100 sec Β: διϊρκεια εκτϋλεςησ 10 sec Σειριακό εκτϋλεςη: Χρόνοσ ολοκλόρωςησ Α 100 sec Χρόνοσ ολοκλόρωςησ Β 110 sec Μϋςοσ χρόνοσ: 105 sec (Ψευδο)παρϊλληλη εκτϋλεςη: Χρόνοσ ολοκλόρωςησ Α 110 sec Χρόνοσ ολοκλόρωςησ Β 40 sec Μϋςοσ χρόνοσ: 75 sec Α Α Α Α B B B Διεργαςύεσ και Νόματα 3

Καταςτάςεισ Διεργαςίασ Νέα (new): η διεργαςύα δημιουργεύται Εκτέλεςη (running): η διεργαςύα εκτελεύται ςε κϊποιον επεξεργαςτό Αναμονή (waiting): η διεργαςύα αναμϋνει κϊποιο ςυμβϊν (απενεργοποιημϋνη) Ετοιμότητα (ready): η διεργαςύα αναμϋνει να τησ δοθεύ (από το λειτουργικό ςύςτημα) χρόνοσ ςε κϊποιον επεξεργαςτό για τη ςυνϋχιςη τησ εκτϋλεςόσ τησ Τερματιςμόσ (terminated): η διεργαςύα ϋχει ολοκληρώςει την εκτϋλεςό τησ Διεργαςύεσ και Νόματα 4

Διάγραμμα Καταςτάςεων Διεργαςίασ Σε κϊθε επεξεργαςτό, μόνο μύα διεργαςύα μπορεύ να βρύςκεται ςε κατϊςταςη εκτϋλεςησ κϊθε ςτιγμό! Πολλϋσ όμωσ ςε κατϊςταςη αναμονόσ ό ετοιμότητασ... Διεργαςύεσ και Νόματα 5

Πίνακασ Ελέγχου Διεργαςίασ Ι Ο Πύνακασ Ελϋγχου Διεργαςύασ (Process Control Block PCB) περιϋχει βαςικϋσ πληροφορύεσ που ςυςχετύζονται με την κϊθε διεργαςύα: Κατϊςταςη διεργαςύασ (process state) Μετρητόσ εντολών προγρϊμματοσ (program counter) Καταχωρητϋσ τησ ΚΜΕ (CPU registers) Πληροφορύεσ για το χρονοπρογραμματιςμό τησ ΚΜΕ (CPU scheduling information) Πληροφορύεσ διαχεύριςησ μνόμησ (memory-management information) Πληροφορύα διαχεύριςησ (accounting information) Πληροφορύεσ κατϊςταςησ ειςόδου/εξόδου (Ι/Ο status information) Διεργαςύεσ και Νόματα 6

Πίνακασ Ελέγχου Διεργαςίασ ΙΙ Διεργαςύεσ και Νόματα 7

Εναλλαγή CPU Μεταξύ Διεργαςιών Διεργαςύεσ και Νόματα 8

Ουρέσ Χρονοπρογραμματιςμού Διεργαςιών Ουρϊ εργαςιών (job queue) Ουρϊ ϋτοιμων διεργαςιών (ready queue) Ουρϋσ ςυςκευών (device queue) Συνόθησ αναπαρϊςταςη: διαγρϊμματα ουρών (queueing diagrams) Διεργαςύεσ και Νόματα 9

Ουρέσ Έτοιμων Διεργαςιών & Συςκευών Ουρϊ ϋτοιμων διεργαςιών Ουρϋσ ςυςκευών Διεργαςύεσ και Νόματα 10

Αναπαράςταςη Χρονοπρογραμματιςμού (Διάγραμμα Ουρών) Διεργαςύεσ και Νόματα 11

Δημιουργία Διεργαςίασ Ι Γονικό διεργαςύα (parent process) δημιουργεύ θυγατρικϋσ διεργαςύεσ (children processes) Περιπτώςεισ διαμοιραςμού πόρων: Γονικό και θυγατρικϋσ διεργαςύεσ μοιρϊζονται όλουσ τουσ πόρουσ Οι θυγατρικϋσ διεργαςύεσ διαθϋτουν μϋροσ των πόρων τησ γονικόσ διεργαςύασ Δεν υφύςταται διαμοιραςμόσ πόρων Περιπτώςεισ εκτϋλεςησ: Ταυτόχρονη εκτϋλεςη γονικόσ και θυγατρικών διεργαςιών Η γονικό διεργαςύα μπαύνει ςε κατϊςταςη αναμονόσ μϋχρι την ολοκλόρωςη των θυγατρικών διεργαςιών Διεργαςύεσ και Νόματα 12

Δημιουργία Διεργαςίασ ΙΙ Στο UNIX: fork() κλωνοπούηςη Αμϋςωσ μετϊ: exec() αντικατϊςταςη χώρου μνόμησ με νϋο πρόγραμμα Η fork() δεν απαιτεύ παραμϋτρουσ Στα Windows: CreateProcess() Απαιτεύ τουλϊχιςτον 10 παραμϋτρουσ! Διεργαςύεσ και Νόματα 13

Δημιουργία Διεργαςίασ ΙΙΙ Διεργαςύεσ και Νόματα 14

Παράδειγμα Δημιουργίασ Διεργαςίασ ςτο UNIX int main() { pid_t pid; } /* fork another process */ pid = fork(); if (pid < 0) { /* error occurred */ fprintf(stderr, "Fork Failed"); exit(-1); } else if (pid == 0) { /* child process */ execlp("/bin/ls", "ls", NULL); } else /* pid > 0 */ { /* parent process */ /* parent will wait for the child to complete */ printf( I created the process with PID = %d.\n", pid); wait(null); printf("child Complete"); exit(0); } Όπωσ εύπαμε, fork() κλωνοπούηςη Άρα, το if θα εκτελεςτεύ ΚΑΙ από τη γονικό διεργαςύα ΚΑΙ από τη θυγατρικό διεργαςύα! Η θυγατρικό διεργαςύα βλϋπει ότι η fork() επϋςτρεψε 0... ενώ η γονικό διεργαςύα λαμβϊνει ωσ αποτϋλεςμα τησ fork() το PID τησ θυγατρικόσ διεργαςύασ Διεργαςύεσ και Νόματα 15

Δέντρο Διεργαςιών ςτο UNIX Διεργαςύεσ και Νόματα 16

Τερματιςμόσ Διεργαςίασ Διαφορετικού λόγοι: Κανονικό ϋξοδοσ Η διεργαςύα ολοκλόρωςε το ϋργο τησ και τερματύζει Τερματιςμόσ λόγω λϊθουσ Τερματιςμόσ εξαιτύασ μοιραύου λϊθουσ Τερματιςμόσ ϋπειδό κϊποια ϊλλη διεργαςύα τη ςκότωςε Εντολό kill ςτο UNIX Εντολό TerminateProcess() ςτα Windows Διεργαςύεσ και Νόματα 17

Νήματα Εναλλακτικόσ όροσ (ενδεικτικόσ τησ λειτουργύασ τουσ...): ελαφρϋσ διεργαςύεσ (lightweight processes LWPs Σε πολλϋσ εφαρμογϋσ υπϊρχουν δραςτηριότητεσ οι οπούεσ εκτελούνται παρϊλληλα Παρϊδειγμα? Τα νόματα μιασ διεργαςύασ ανόκουν πϊντα ςτον ύδιο χρόςτη Λειτουργούν (περύπου) όπωσ οι διεργαςύεσ αλλϊ ςτερούνται ανεξαρτηςύασ: ϋχουν τα ύδια δικαιώματα πρόςβαςησ ςε πόρουσ μοιρϊζονται τουσ ύδιουσ πόρουσ (δεδομϋνα, κώδικα, ανοικτϊ αρχεύα, ςόματα, ακόμα και το χρόνο τησ CPU) μοιρϊζονται την ύδια μνόμη! Διεργαςύεσ και Νόματα 18

Νήματα Πλεονεκτόματα: Ικανότητα απόκριςησ Διαμοιραςμόσ πόρων Οικονομύα Κλιμϊκωςη Γιατύ νόματα και όχι διεργαςύεσ? Η δημιουργύα μύασ διεργαςύασ εύναι χρονοβόρα και απαιτεύ πόρουσ Διεργαςύεσ και Νόματα 19

Παράδειγμα Νόμα #2: Διαμόρφωςη κειμϋνου Νόμα #3: Αυτόματη αποθόκευςη αρχεύου αςφαλεύασ Διεργαςία: Επεξεργαςτήσ κειμένου Νόμα #1: Αλληλεπύδραςη με το χρόςτη Διεργαςύεσ και Νόματα 20

Μονονηματικέσ και Πολυνηματικέσ Διεργαςίεσ Διεργαςύεσ και Νόματα 21

Νήματα ςτο POSIX (δηλαδή στο UNIX ) Ακολουθούν το πρότυπο IEEE 1003.1c (1995) το οπούο ορύζει τη βιβλιοθόκη Pthreads για τη διαχεύριςη των νημϊτων Κϊθε νόμα του προτύπου Pthreads χαρακτηρύζεται από: Αριθμητικό αναγνωριςτικό (identifier) Καταχωρητϋσ Διϊφορα ϊλλα χαρακτηριςτικϊ μϋγεθοσ ςτούβασ, παρϊμετροι χρονοπρογραμματιςμού,... Βαςικϋσ κλόςεισ Pthreads: pthread_create: δημιουργύα pthread_exit: τερματιςμόσ pthread_join: αναμονό για ϋξοδο ϊλλου νόματοσ pthread_yield: ευγενικό παραχώρηςη τησ CPU Διεργαςύεσ και Νόματα 22

Παράδειγμα #include <pthread.h> #include <stdio.h> #include <stdlib.h> #define NUM_THREADS 5 void *PrintHello(void *tid) { printf("hello World! It's me, thread #%ld!\n", tid); pthread_exit(null); } Δεύκτησ προσ τη λειτουργύα που το νϋο νόμα θα εκτελϋςει int main(int argc, char *argv[]) { pthread_t threads[num_threads]; int rc; long t; for(t=0;t<num_threads;t++) { rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t); if(rc) { printf("error; return code from pthread_create() is %d\n", rc); exit(-1); } } pthread_exit(null); } Διεργαςύεσ και Νόματα 23

Νήματα Χρήςτη & Νήματα Πυρήνα Νόματα ςτο χώρο του χρόςτη Νόματα πυρόνα Διεργαςύεσ και Νόματα 24

Μοντέλα Πολυνημάτωςησ Ι Μοντϋλο πολλϊ-προσ-ϋνα Η βϊςη εύναι τα νόματα χρόςτη: πολλϊ νόματα επιπϋδου χρόςτη αντιςτοιχούν ςε ϋνα νόμα πυρόνα Χρηςιμοποιεύται ςε ςυςτόματα που δεν υποςτηρύζουν νόματα πυρόνα Μεγϊλο μειονϋκτημα: μύα λϊθοσ ενϋργεια μπορεύ να τα μπλοκϊρει όλα! Δεν υποςτηρύζονται πολλαπλού επεξεργαςτϋσ Διεργαςύεσ και Νόματα 25

Μοντέλα Πολυνημάτωςησ ΙΙ Μοντϋλο ϋνα-προσ-ϋνα Κϊθε νόμα χρόςτη αντιςτοιχεύ ςε ϋνα νόμα πυρόνα Δυνατότητα παρϊλληλησ εκτϋλεςησ ςε πολλϋσ CPU Χρηςιμοποιεύται ςε Linux, Windows Διεργαςύεσ και Νόματα 26

Μοντέλα Πολυνημάτωςησ ΙII Μοντϋλο πολλϊ-προσ-πολλϊ Πολυπλεξύα νημϊτων Επιτρϋπει ςε πολλϊ νόματα χρόςτη να αντιςτοιχιςτούν ςε πολλϊ νόματα πυρόνα Επιτρϋπει ςτο λειτουργικό ςύςτημα να δημιουργόςει επαρκό αριθμό νημϊτων πυρόνα Παραλλαγό: μοντϋλο δύο επιπϋδων Παρόμοιο, αλλϊ: επιτρϋπει ςε ϋνα νόμα χρόςτη να εύναι δεςμευμϋνο ςε κϊποιο νόμα πυρόνα π.χ., HPUX Διεργαςύεσ και Νόματα 27

Νήματα & Διεργαςίεσ: Παράδειγμα Αριθμού Fibonacci: η ςειρϊ αριθμών 0, 1, 1, 2, 3, 5,... Ο κϊθε αριθμόσ προκύπτει ωσ το ϊθροιςμα των δύο προηγούμενων τησ ςειρϊσ Τυπικϊ: Fib 0 = 0 Fib 0 = 1 Fib n = Fib n-1 + Fib n-2 Το ζητούμενο: πρόγραμμα που λαμβϊνει από τη γραμμό εντολών το επιθυμητό πλόθοσ των αριθμών Fibonacci, τουσ υπολογύζει και τουσ παρουςιϊζει ςτην ϋξοδο Επύλυςη με διεργαςύεσ & νόματα Διεργαςύεσ και Νόματα 28

Επίλυςη με Διεργαςίεσ Ι #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> int main(int argc, char *argv[]) { if (argc!= 2) exit(0); pid_t pid; int i, a, b, fib; int n = atoi(argv[1]); /* fork another process */ pid = fork(); if (pid < 0) { /* error occurred */ fprintf(stderr, "Fork Failed\n"); exit(-1); } Διεργαςύεσ και Νόματα 29

Επίλυςη με Διεργαςίεσ ΙΙ } else if (pid == 0) { /* child process */ if (n == 1) printf("0\n"); else if (n == 2) printf("0, 1\n"); else if (n > 2) { a = 0; b = 1; printf("0, 1,"); for (i = 3; i < n; i++) { fib = a + b; printf("%d,",fib); a = b; b = fib; } printf("%d\n",a+b); } } else /* parent process */ { wait(null); exit(0); } Η θυγατρικό διεργαςύα υπολογύζει τουσ αριθμούσ. Η γονικό διεργαςύα εύναι ουςιαςτικϊ διακοςμητικό! Απλώσ περιμϋνει τη θυγατρικό διεργαςύα να κϊνει όλη τη βρωμοδουλειϊ... Διεργαςύεσ και Νόματα 30

Επίλυςη με Νήματα POSIX Ι #include <pthread.h> #include <stdio.h> #define MAX_SIZE 256 int fibs[max_size]; void *runner(void *param) /* the thread */ { int i; int upper = atoi(param); Ο κώδικασ που θα εκτελϋςει το θυγατρικό νόμα μόλισ δημιουργηθεύ (βλ. επόμενη διαφϊνεια) if (upper== 0) pthread_exit(0); else if (upper == 1) fibs[0] = 0; else if (upper== 2) { fibs[0] = 0; fibs[1] = 1; } else { // sequence > 2 fibs[0] = 0; fibs[1] = 1; } for (i = 2; i < upper; i++) fibs[i] = fibs[i-1] + fibs[i-2]; } pthread_exit(0); Διεργαςύεσ και Νόματα 31

Επίλυςη με Νήματα POSIX ΙΙ int main(int argc, char *argv[]) { int i; pthread_t tid; /* the thread identifier */ pthread_attr_t attr; /* set of attributes for the thread */ if (argc!= 2) { fprintf(stderr,"usage: a.out <integer value>\n"); return -1; } if (atoi(argv[1]) < 0) { fprintf(stderr,"argument %d must be >= 0 \n",atoi(argv[1])); return -1; } pthread_attr_init(&attr); } pthread_create(&tid, &attr, runner, argv[1]); pthread_join(tid, NULL); for (i = 0; i < atoi(argv[1]); i++) printf("%d\n", fibs[i]); Δημιουργύα νόματοσ Το γονικό νόμα περιμϋνει τον υπολογιςμό των αριθμών από το θυγατρικό νόμα. Κατόπιν, τυπώνει το αποτϋλεςμα. Διεργαςύεσ και Νόματα 32

Χρονοπρογραμματιςμόσ Διεργαςιών Οι διεργαςύεσ ςε κατϊςταςη ετοιμότητασ ανταγωνύζονται για τον ϋλεγχο τησ CPU Χρονοπρογραμματιςτήσ (scheduler): το τμόμα του λειτουργικού ςυςτόματοσ που επιλϋγει τη διεργαςύα που θα εκτελεςτεύ ςε κϊποια CPU Αλγόριθμοσ χρονοπρογραμματιςμού: ο υποκεύμενοσ αλγόριθμοσ Παρόμοια περύπτωςη: χρονοπρογραμματιςμόσ νημϊτων Ενδιαφϋρουςα περύπτωςη: η ύπαρξη πολλών CPU Διεργαςύεσ και Νόματα 33

Συμπεριφορά Διεργαςιών Κατηγορύεσ διεργαςιών: Εξαρτημϋνεσ από τη CPU (compute-bound) Εξαρτημϋνεσ από εύςοδο-ϋξοδο (I/O-bound) Διεργαςύεσ και Νόματα 34

Ξεςπάςματα CPU (CPU burst) Διεργαςύεσ και Νόματα 35

Περιπτώςεισ Χρονοπρογραμματιςμού Χρονοπρογραμματιςμόσ CPU λαμβϊνει χώρα ςτισ εξόσ περιπτώςεισ: Μετϊβαςη διεργαςύασ από κατϊςταςη εκτϋλεςησ ςε κατϊςταςη αναμονόσ Μετϊβαςη διεργαςύασ από κατϊςταςη εκτϋλεςησ ςε κατϊςταςη ετοιμότητασ Μετϊβαςη διεργαςύασ από κατϊςταςη αναμονόσ ςε κατϊςταςη ετοιμότητασ Τερματιςμόσ διεργαςύασ Τύποι αλγορύθμων: Προεκτοπιςτικού αλγόριθμοι (preemptive): εκτϋλεςη μύασ διεργαςύασ μϋχρι κϊποιο προκαθοριςμϋνο χρονικό διϊςτημα Μη προεκτοπιςτικού αλγόριθμοι (non-preemptive): εκτϋλεςη μύασ διεργαςύασ όςο θϋλει ό μϋχρι να μπλοκαριςτεύ Διεργαςύεσ και Νόματα 36

Κριτήρια Βελτιςτοποίςησ Μεγιςτοπούηςη χρόνου χρόςησ CPU Μεγιςτοπούηςη ρυθμού διεκπεραύωςησ Πλόθοσ διεργαςιών που ολοκληρώνονται ςτη μονϊδα του χρόνου Ελαχιςτοπούηςη χρόνου ολοκλόρωςησ Η εγωιςτικό ϊποψη μύασ διεργαςύασ... Ελαχιςτοπούηςη χρόνου αναμονόσ Ελαχιςτοπούηςη χρόνου απόκριςησ Πόςο γρόγορα μύα διεργαςύα θα δώςει αποτελϋςματα (παρόλο που η εκτϋλεςό τησ ςυνεχύζεται...) Διεργαςύεσ και Νόματα 37

Χρονοπρογραμματιςμόσ με Βάςη τη Σειρά Άφιξησ (FCFS) First-Come First-Served (FCFS) ό αλλιώσ First-In First-Out (FIFO) Εκτϋλεςη διεργαςιών ανϊλογα με τη ςειρϊ ϊφιξόσ τουσ Μη προεκτοπιςτικό λειτουργύα: Μύα διεργαςύα: εκτϋλεςη μϋχρι τερματιςμού Περιςςότερεσ διεργαςύεσ: ϋκτϋλεςη τησ καθεμύασ μϋχρι να ζητόςει Ε/Ε ςτη ςυνϋχεια ειςαγωγό ςτο τϋλοσ τησ ουρϊσ Πλεονεκτόματα: Απλότητα Μειονεκτόματα: Η απόδοςη εξαρτϊται από τη ςειρϊ ϊφιξησ πρόβλημα όταν μύα μεγϊλη διεργαςύα καταφθϊςει νωρύσ Convoy effect... όπωσ ϋνα φορτηγό ςτην ανηφόρα... Διεργαςύεσ και Νόματα 38

Παράδειγμα FCFS Ι Θεωρούμε τισ διεργαςύεσ: Process Burst Time P 1 24 P 2 3 Εϊν η ςειρϊ ϊφιξησ εύναι P 1, P 2, P 3 : P 3 3 P 1 P 2 P 3 0 24 27 30 Χρόνοι αναμονόσ: P 1 = 0, P 2 = 24, P 3 = 27 Μϋςοσ χρόνοσ αναμονόσ: (0 + 24 + 27)/3 = 17 Διεργαςύεσ και Νόματα 39

Παράδειγμα FCFS ΙΙ Εϊν για τισ ύδιεσ διεργαςύεσ η ςειρϊ ϊφιξησ εύναι P 2, P 3, P 1 : P 2 P 3 P 1 0 3 6 30 Χρόνοι αναμονόσ: P 1 = 6, P 2 = 0, P 3 = 3 Μϋςοσ χρόνοσ αναμονόσ: (6 + 0 + 3)/3 = 3 Πολύ καλύτερα! Αποφυγό του convoy effect Διεργαςύεσ και Νόματα 40

Χρονοπρογραμματιςμόσ Πρώτα η Συντομότερη (SJF) Shortest Job First (SJF) ό αλλιώσ Shortest Time to Completion First (STCF) Σύνοψη λειτουργύασ: Συςχετιςμόσ κϊθε διεργαςύασ με το μϋγεθοσ του επόμενου ξεςπϊςματοσ CPU Προτεραιότητα ςτη ςυντομότερη διεργαςύα Ικανοποιητικό λειτουργύα! Ελϊχιςτοσ μϋςοσ χρόνοσ αναμονόσ για δεδομϋνεσ διεργαςύεσ Δυςκολύα: η γνώςη τησ διϊρκειασ του επόμενου ξεςπϊςματοσ Διεργαςύεσ και Νόματα 41

Παράδειγμα SJF Θεωρούμε τισ διεργαςύεσ: Process Arrival Time Burst Time P 1 0.0 6 P 2 2.0 8 Χρονοπρογραμματιςμόσ: P 3 4.0 P 4 5.0 7 3 P 4 P P 3 1 P 2 0 3 9 16 24 Μϋςοσ χρόνοσ αναμονόσ: (3 + 16 + 9 + 0) / 4 = 7 Διεργαςύεσ και Νόματα 42