ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Κεφάλαιο 2ο: Διεργασίες

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Κεφάλαιο 2ο: Διεργασίες"

Transcript

1 ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Κεφάλαιο 2ο: Διεργασίες 1

2 2.1 Εισαγωγή Διεργασία: Μία από τις δύο κεντρικές έννοιες και abstractions ενός Λ.Σ. Αποτελεί ένα μοντέλο για ένα πρόγραμμα που εκτελείται Οι διεργασίες εκτελούνται "παράλληλα": δηλ. όχι σειριακά. Υπάρχουν δύο τρόποι: Όσο μια περιφερειακή συσκευή (π.χ. δίσκος) εκτελεί μια εντολή, το Λ.Σ. "δίνει" (dispatches) τη CPU σ' ένα άλλο "έτοιμο" (ready) πρόγραμμα. Όταν η CPU "δίνεται" σ' ένα process, το process συνήθως δεν κρατάει τη CPU μέχρι να τελειώσει, ακόμα και όταν το process δεν κάνει I/O. Κάθε λίγο (π.χ. 100ms) το CPU δίνεται σ' άλλο process. Αυτός ο χρόνος = time slice / quantum. σε κάθε «στιγμή» σ' έναν υπολογιστή εκτελούνται πολλές παράλληλες ενέργειες. Για ν' αντιμετωπίσουν τις δυσκολίες που προκύπτουν, τα Λ.Σ. χρησιμοποιούν την έννοια του process. Προσέξτε: και οι 2 τρόποι δεν είναι δεδομένοι απαιτείται υποστήριξη από υλικό (Direct mem access, 1 ος τρόπος) και 2 από τον αλγόριθμο χρονοπρογραμματισμού!

3 2.1 Εισαγωγή multiprogramming: αφορά στο γεγονός ότι πολλές διεργασίες τρέχουν ανά πάσα στιγμή. Ποια η διαφορά μεταξύ «διεργασίας» & "προγράμματος"; Μια διεργασία αντιπροσωπεύει ένα πρόγραμμα που εκτελείται έχει input/output και έχει και μια κατάσταση (state - δηλ. οι τιμές των μεταβλητών του προγράμματος, CPU registers, PC, SP, stack,...) Η διεργασία που αντιστοιχίζεται σε ένα πρόγραμμα, είναι μια δομή του ΛΣ όπου αποθηκεύονται όλες οι πληροφορίες που χρειάζεται το ΛΣ για να τρέξει το πρόγραμμα σε ένα περιβάλλον πολυπρογραμματισμού. Οι διεργασίες σχηματίζουν μια ιεραρχία πατέρα-παιδιού (ή πρόγονου-απόγονου) (π.χ. Στο UNIX μέσω του fork system call). 3

4 2.1 Εισαγωγή Κατάσταση μιας διεργασίας (ως προς την εκτελεσή της) τρέχει (running): έχει τη CPU έτοιμο (ready): μπορεί να τρέξει, αλλά η CPU δόθηκε αλλού. μπλοκαρισμένη (blocked): περιμένει «εξωτερικό» γεγονός. 1. περιμένει I/O 2. CPU δίνεται σ' άλλο process 3. CPU δίνεται σ' αυτό το process 4. I/O έγινε Για την μετάβαση (1) υπάρχει συνήθως ένα block system call. Οι μεταβάσεις (2) και (3) προκύπτουν από παρεμβάσεις του scheduler (δρομολογητή/χρονοπρογραμματιστή) του Λ.Σ. Η μετάβαση (4) προκύπτει μετά από διακοπή περιφερειακής συσκευής. 4

5 2.1 Εισαγωγή Πώς και πότε τρέχει ο χρονοπρογραμματιστής; (ποιός τον χρονοπρογραμματίζει;) clock interrupts: αν το time slice του process έχει παρέλθει. block: όταν το τωρινό process μπλοκάρει. Χρησιμοποιώντας το μοντέλο των διεργασιών μπορούμε ευκολότερα ν' αναπαριστούμε τις ενέργειες που εκτελούνται κάθε στιγμή σ' ένα σύστημα. Σ' αυτό το μοντέλο ο χρονοπρογραμματιστής είναι το κατώτερο επίπεδο του Λ.Σ. και κρύβει λεπτομέρειες που αφορούν το σταμάτημα και τρέξιμο διεργασιών και διαχείριση διακοπών (interrupts). 5

6 2.2 Υλοποίηση του PROCESS Περίληψη πληροφορίας για κάθε process: PC, SP, CPU registers, PSW, signals Πίνακες σελίδων (Page Tables) και άλλες πληροφορίες που αφορούν μνήμη (π.χ. swap space), pointers στα text, data τμήματα της διεργασίας... pid, parent pid, uid, gid, κατάσταση εκτελεσιμότητας root dir, file descriptors για open files. Υπάρχει ένας πίνακας (process table) που συνήθως (στα συστήματα UNIX) υλοποιείται σαν ένας πίνακας (ή μια συνδεδεμένη λίστα) (of structs). Υπάρχει ένα struct για το κάθε process και καθένα έχει τις παραπάνω πληροφορίες σε διάφορα πεδία του. 6

7 2.2 Υλοποίηση του PROCESS Πώς επιτυγχάνεται ο παραλληλισμός (concurrency - δηλ. ότι υπάρχουν πολλές διεργασίες που τρέχουν) όταν υπάρχει ένα και μοναδικό CPU ; Λόγω του (πιθανού) διαμοιρασμού CPU μέσω των time slices (δηλ. Του χρονομερισμού (timesharing) -- αν εξετάσουμε το σύστημα για μια χρονική στιγμή μεγαλύτερη ενός time slice θα δούμε ότι σ' αυτή τη χρονική στιγμή "τρέχουν" > 1 διεργασίες. Πολλές συσκευές περιφέρειας (peripheral devices) (συνήθως) έχουν δικούς τους επεξεργαστές. Eτσι, όσο ένα I/O (π.χ. σε δίσκο) εκτελείται εκ μέρους μιας διεργασίας, μια άλλη εκτελείται από τη CPU 7

8 2.2 Υλοποίηση του PROCESS Διαχείριση Διακοπών (interrupts): Interrupt Vector: Καλύπτει τις "χαμηλότερες" διευθύνσεις της μνήμης. Αποτελείται από μια σειρά διευθύνσεων, μια για κάθε συσκευή, που "δείχνουν" στις ρουτίνες που πρέπει να κληθούν για να εξυπηρετηθεί το interrupt της κάθε συσκευής ( δηλ. μια ρουτίνα για δίσκο, άλλη για τερματικό, άλλη για το ρολόι, κ.λπ). Αυτές οι ρουτίνες λέγονται interrupt service routines (ISR). 8

9 2.2 Υλοποίηση του PROCESS Αλγόριθμος για μεταχείριση interrupt: 1. Hardware: τοποθέτησε (push) στο stack τις τιμές των PC, SP, PSW, και κάποιων CPU registers βρες την κατάλληλη διεύθυνση στο interupt vector και "φόρτωσε" την στο PC. Έτσι, εκτελείται η ISR. 9

10 2.2 Υλοποίηση του PROCESS Αλγόριθμος για μεταχείριση interrupt: 2. Software: Η ISR σώζει/αποθηκεύει τα CPU registers στο κατάλληλο struct του Process Table (assembly lang). Μετά, το SP ενημερώνεται να "δείχνει" σ' ένα άλλο προσωρινό stack (assembly lang) Μετά, καλείται μια C ρουτίνα που βρίσκει σε ποιο process αφορά αυτό το interrupt. Αυτό το process τώρα γίνεται "έτοιμο" (δηλ. το process struct φεύγει από την Sleep λίστα και πηγαίνει στην Ready λίστα). Καλείται ο scheduler να διαλέξει ένα Process Η C ρουτίνα επιστρέφει στην assembly lang. ρουτίνα που φορτώνει τα CPU Register και Page Tables του process που διάλεξε ο scheduler. 10

11 2.3 Επικοινωνία Διεργασιών Συνθήκες Ανταγωνισμού (Race Conditions): περιγράφει καταστάσεις όπου >1 διεργασίες διαβάζουν ή γράφουν σε κοινά δεδομένα και το τελικό αποτέλεσμα εξαρτάται από το πότε τρέχει η κάθε διεργασία. Το πρόβλημα είναι: έλεγχος πρόσβασης σε κοινή μνήμη. Παράδειγμα: Δύο διεργασίες (P1, P2) κάνουν και οι δύο αναλήψεις από ένα τραπεζικό λογαριασμό (κοινό) - η μία ανήκει π.χ. στο σύζυγο και η άλλη αντίστοιχα στη σύζυγο. Η ρουτίνα ΑΝΑΛΗΨΗ καλείται και από τις δύο διεργασίες. ΑΝΑΛΗΨΗ: read (υπολοιπο); if υπολοιπο > ποσό_ανάληψης write (υπολοιπο υπολοιπο ποσό_ανάληψης); 11

12 2.3 Επικοινωνία Διεργασιών Το P1 εκτελεί το read() και μετά η CPU δίνεται στο P2 το οποίο εκτελεί read() και write(). Μετά, η CPU δίνεται στο P1 που εκτελεί το write(). μόνο η μία ανάληψη φαίνεται - η άλλη "χάθηκε". Αυτό είναι ένα "τυπικό" race condition. Κρίσιμες περιοχές (Critical Sections): Πώς μπορούμε ν' αποφύγουμε τα race conditions; Πρέπει να βρούμε ένα τρόπο ούτως ώστε μόνο ένα process να έχει πρόσβαση στα κοινά δεδομένα σε κάθε στιγμή. Αυτή η ιδιότητα λέγεται και mutual exclusion (αμοιβαίος αποκλεισμός). ν' απομονώσουμε/κλειδώσουμε το τμήμα του κώδικα το οποίο γράφει/διαβάζει κοινή μνήμη. Αυτό το τμήμα ονομάζεται critical section. 12

13 2.3 Επικοινωνία Διεργασιών Απενεργοποίηση (Disabling) Διακοπών (Interrupts) Παρατήρηση 1: Ας υποθέσουμε ότι ένα process δεν μπορεί να μπλοκάρει μέσα στο critical section. Τότε ο μόνος τρόπος για να δοθεί το CPU σ' ένα άλλο process είναι μέσω ενός clock interrupt που θα σημάνει το τέλος του time slice του process. Παρατήρηση 2: Αν απενεργοποιήσουμε τις διακοπές μόλις μπούμε στο critical section και ενεργοποιήσουμε (enabling) μόλις πριν βγούμε, τότε κανένα άλλο process δεν θα βρεθεί ταυτόχρονα στο critical section του. Γιατί; Αλλά: δίνοντας τη δυνατότητα σε user process να κάνει interrupt disabling είναι επικίνδυνο (π.χ. Σφάλματα => interrupts μένουν disabled...) => αυτή η λύση στο mutual exclusion δεν είναι αποδεκτή. 13

14 2.3 Επικοινωνία Διεργασιών Μεταβλητές κλειδώματος (Locks) Μια άλλη λύση μπορεί να βασισθεί σε lock vars. Πριν ένα process μπει στο critical section, εξετάζει/διαβάζει ένα lock var. Αν η τιμή της είναι 1, τότε περιμένει [μπλοκάρει;] μέχρι να γίνει 0. Αν η τιμή είναι 0, τότε την κάνει 1 και μετά εισβάλλει στο critical section του. Το πρόβλημα όμως δεν λύθηκε, απλώς "μετατέθηκε". Τι γίνεται αν 2 process διαβάσουν την τιμή του lock var «την ίδια στιγμή» ; 14

15 2.3 Επικοινωνία Διεργασιών Η λύση του Peterson. (για 2 διεργασίες) Το σενάριο περιλαμβάνει 2 διεργασίες. Υπάρχουν 2 ρουτίνες που καλούνται για να μπούν και να βγούν οι διεργασίες σε/από critical section: enter_region (process) και leave_region(process). Υπάρχει επίσης μια μεταβλητή (flag), "turn", που χρησιμοποιείται για να δώσει την σειρά σε ένα μόνο ενδιαφερόμενο process, και ένας πίνακας από flags, "interested[]" που δείχνει την επιθυμία ενός process να μπεί στο critical section του. enter_region (process) leave_region (process) { { other = 1 - process; interested[process] = TRUE; } interested[process]=false; turn = process; while (turn == process && interested[other] == TRUE) ; } 15

16 2.3 Επικοινωνία Διεργασιών Αν η P1 εκτελέσει enter_region() πρώτη, μιας και το interested [other] δεν είναι TRUE δεν θα περιμένει (με busy waiting) και θα συνεχίσει. Οταν μετά ενδιαφερθεί η P2, το interested[p1] = TRUE και το P2 θα συνεχίζει να εκτελεί το while loop. Αν και οι δύο διεργασίες καλέσουν enter_region() (σχεδόν) ταυτόχρονα, τότε, μιας και έχουμε ένα CPU, κάποια από τις 2 θα εκτελέσει τελευταία την εντολή turn=process. Αυτή δε θα μπορέσει να μπεί στο critical section και θα κάνει busy wait στο βρόχο (loop) while. Ετσι, μόνο η άλλη process θα μπορέσει να μπεί στο critical section της. 16

17 2.3 Επικοινωνία Διεργασιών Λύση με Test και Set Lock (TSL) Πολλοί Η/Υ παρέχουν εντολές TSL (instructions) οι οποίες Ανακτούν (read) ένα memory word το οποίο μετά φορτώνουν σε έναν καταχωρητή (register) Γράφουν (write) μια τιμή = 1 σε αυτό το memory word. Οι πράξεις read & write είναι ατομικές (atomic) (δηλ. κανείς άλλος δεν μπορεί να εκτελεστεί μέχρι το TSL (read & write) να έχει εκτελεστεί). Η TSL μπορεί, λοιπόν να εκτελεστεί σε μια κοινή μεταβλητή «flag». Όταν flag = 0, ένα process μπορεί να εκτελέσει TSL στο flag και να το κάνει 1. Επειδή η TSL είναι atomic, έτσι διασφαλίζεται ο αμοιβαίος αποκλεισμός. 17

18 2.3 Επικοινωνία Διεργασιών enter_region: TSL reg, flag /* reg flag && flag = 1 */ cmp reg, 0 /* reg = 0 ; */ jnz enter_region /* try again */ ret leave_region: mov flag, 0 /* flag = 0 */ ret Ένα process που καλεί enter_region θα μπεί μόνο αν flag = 0. Αλλοιώς θα κάνει συνέχεια "jump" μέχρι flag = 0. Η λύση είναι η ίδια με την lock variables; Γιατί δεν έχουμε τα ίδια προβλήματα; Το πρόβλημα της λύσης με τα lock variables δεν υφίσταται εδώ επειδή το hardware δεν επιτρέπει σε δύο process να διαβάσουν την τιμή του flag πριν κανένα από τα δυο την κάνει 1. 18

19 2.3 Επικοινωνία Διεργασιών Προσέξτε ότι: 1. οι δύο τελευταίες λύσεις απαιτούν busy waiting (αναμονή με απασχόληση)!!! 2. Αν ένα process προσπαθήσει να προσπελάσει το flag χωρίς να χρησιμοποιήσει το enter_region ή δεν χρησιμοποιήσει το leave_region τότε η λύση καταρρέει. [π.χ. ένα process μπορεί να εκτελέσει "mov flag, #0" πριν καλέσει enter_region...] To busy waiting έχει δύο αρνητικές επιπτώσεις: (Κυρίως) σπατάλη CPU κύκλων. Priority inversion (αντιστροφή προτεραιότητας). π.χ. Ο scheduler ενός Λ.Σ. προσπαθεί να τρέχει πάντα διεργασίες υψηλής προτεραιότητας, ας πούμε P1. Αν υπάρχει κάποιο P2, χαμηλής προτεραιότητας, και μπει στο critical section μπορεί να προκύψει πρόβλημα αν και το P1 θέλει να μπει στο critical section. To P1 θα κάνει busy wait και δεν θα δώσει ποτέ την ευκαιρία στο P2 να τρέξει ώστε να βγει από το critical section => το P1 θα κάνει busy wait για πολύ. 19

20 2.3 Επικοινωνία Διεργασιών Λύσεις χωρίς BUSY WAIT Βασική Ιδέα: Διεργασίες μπλοκάρουν αντί για busy wait. Όταν μπλοκάρει ένα process, ο scheduler του Λ.Σ. δρομολογεί άλλα processes και έτσι αποφεύγονται τα προβλήματα του busy wait. Υπάρχουν 2 systems calls: SLEEP & WAKEUP (καμία φορά αποκαλούνται και WAIT & SIGNAL, αντίστοιχα). Όταν ένα process P καλεί SLEEP τότε από την κατάσταση "RUNNING" περνάει στη κατάσταση "BLOCKED". Όταν κάποιο άλλο process καλέσει WAKEUP(P) τότε το process P, θα περάσει στη κατάσταση "READY". 20

21 2.3.5 Το Πρόβλημα Παραγωγού-Καταναλωτή Κλασσικό παράδειγμα προβλήματος IPC, με αμοιβαίο αποκλεισμό, συνθήκες ανταγωνισμού κ.λπ. Υπάρχουν 2 διεργασίες: ο παραγωγός P και ο καταναλωτής C. O P παράγει πληροφορία και την αποθηκεύει σ' ένα buffer B. Ο C προσπελαύνει τον B καταναλώνοντας την πληροφορία. Προβλήματα προς λύση: Ο Β αποτελεί κοινή μνήμη μεταξύ P και C. πρέπει να αποφευχθούν συνθήκες ανταγωνισμού! Τι γίνεται όταν ο Β είναι γεμάτος: πού θα βάλει τα δεδομένα ο P ; Τι γίνεται όταν ο Β είναι άδειος και ο C επιχειρεί να καταναλώσει πληροφορία ; Σημείωση: Πέρα της διαχείρισης/ελέγχου της κοινής μνήμης, εδώ απαιτείται και συγχρονισμός (synchronization). 21

22 2.3.5 Το Πρόβλημα Παραγωγού-Καταναλωτή Οι λύσεις βασίζονται στα εξής: Ο P "κοιμάται" όταν ο Β είναι γεμάτος. Τον ξυπνάει ο C. Ο C "κοιμάται" όταν ο Β είναι άδειος. Τον ξυπνάει ο P. Υπάρχει μια μεταβλητή Ν που δείχνει το μέγεθος του Β. Υπάρχει μια μεταβλητή count που δείχνει τον αριθμό πληροφοριακών μονάδων στον Β (πόσες θέσεις του Β είναι γεμάτες). Count = 0 αρχικά. 22

23 2.3.5 Το Πρόβλημα Παραγωγού-Καταναλωτή Μία Λύση: Producer Consumer while (1) { while (1) { prod_item(); if (count==0) if (count==n) sleep(); sleep(); remove_item(); put_item(); count = count - 1 count ++ ; if (count==n-1) if (count==1) wakeup(producer); wakeup(consumer) cons_item() } } 23

24 2.3.5 Το Πρόβλημα Παραγωγού-Καταναλωτή Eτσι ο P κοιμάται όταν ο Β είναι γεμάτος και ξυπνάει τον C μόλις ο Β παύει να είναι άδειος. Ενώ, ο C κοιμάται όταν ο Β είναι άδειος και ξυπνάει τον P όταν ο Β παύει να είναι γεμάτος. Μπορεί να προκύψει πρόβλημα, όμως, λόγω του ότι P & C προσπελαύνουν το count χωρίς περιορισμό. Ειδικότερα: είναι δυνατόν ο C να δει ότι count = 0, και πριν προλάβει να καλέσει sleep() το CPU να δοθεί στο P ο οποίος παράγει, κάνει count = 1 και καλεί wakeup. Όμως ο C δεν κοιμάται ακόμα το wakeup "χάνεται". Αργότερα, το CPU θα δοθεί στο C ο οποίος θα καλέσει sleep() και θα κοιμηθεί. Τώρα, όταν ο P γεμίσει το Β, θα καλέσει sleep() και αυτός P & C κοιμούνται τον αιώνιο ύπνο... 24

25 2.3.5 Το Πρόβλημα Παραγωγού-Καταναλωτή Το πρόβλημα προκύπτει διότι το "wakeup χάθηκε". Θα μπορούσαμε να χρησιμοποιήσουμε ένα ψηφίο αφύπνισης (wakeup bit), w. Oταν επιχειρείται ένα wakeup για κάποιο process που δεν κοιμάται, τότε το w = 1 δεν χάνεται η πληροφορία του wakeup. Oταν αργότερα ένα process πρόκειται να καλέσει sleep(), αν w = 1, τότε το process δεν καλεί sleep() και ξανακάνει το bit 0. Είναι σωστή αυτή η λύση ; (με το wakeup bit) 25

26 2.3.6 Σηματοφόροι-Semaphores Eνας τύπος μεταβλητών. Στην ουσία "μετράει" όλες τις κλήσεις αφύπνισης για ένα process. Δύο πράξεις: UP & DOWN (σαν τα WAKEUP & SLEEP). DOWN(s) : 1 ατομική ενέργεια (atomic action) { if s = 0 then sleep() else s = s - 1 } UP(s): s: = s + 1 Αν μετά την εκτέλεση του UP(s), s = 1 και υπάρχει κάποιο process που κοιμάται γιατί το s ήταν 0, τότε το σύστημα διαλέγει κάποιο απ' τα μπλοκαρισμένα process και το ξυπνάει. Oλα αυτά που εκτελούνται στο UP() είναι επίσης atomic. 26

27 2.3.6 Σημαφόροι (Semaphores) Πώς λοιπόν, μπορούμε να λύσουμε το Prod-Cons πρόβλημα; Τα UP & DOWN υλοποιούνται σαν system calls. Το atomicity υλοποιείται ως εξής: Με 1 CPU : interrupt disabling. Με N CPUs: ;;; Θα χρησιμοποιήσουμε 3 semaphores: #full: μετράει πόσα αντικείμενα έχει ο Β #empty: μετράει πόσες θέσεις του Β είναι άδειες mutex: διασφαλίζει ότι μόνο ο P ή μόνο ο C προσπελαύνουν το B. Ο mutex είναι δυαδική σημαφόρος (binary semaphore): παίρνει τιμές = 0 και 1 μόνο. Οι αρχικές τιμές τους είναι: 0, N, και 1, αντίστοιχα. 27

28 2.3.6 Σηματοφόροι και Παραγωγός/Καταναλωτής Σημαφόροι προσφέρουν συγχρονισμό (#full, #empty) και αμοιβαίο αποκλεισμό (mutual exclusion): semaphore mutex = 1 ; #full = 0; #empty = N producer () consumer () while (1) { while (1) { prod_item () ; down (#full) ; down (#empty); down (mutex) ; down (mutex) ; put_item () ; cons_item () ; up (mutex) ; up (mutex) ; up (#full) ; } up (#empty) } Τι θα συνέβαινε αν ο P άλλαζε τη σειρά των 2 DOWN ; Τι θα συνέβαινε αν ο C άλλαζε τη σειρά των 2 DOWN ; 28

29 2.3.7 Ελεγκτές - Μonitors Αν και φαινομενικά εύκολη, η χρήση των semaphores συνήθως κρύβει δυσκολίες (π.χ. η σειρά με την οποία κλήθηκαν τα DOWN στο Prod_Cons πρόβλημα). Τα monitors δημιουργήθηκαν για συγχρονισμό σε υψηλότερο επίπεδο - οι προγραμματιστές δεν ασχολούνται πλέον με τέτοια χαμηλού επιπέδου θέματα όπως η σειρά των DOWN, κ.λπ. Eνα monitor είναι ένα ειδικό module: διαδικασίες, μεταβλητές, δομές δεδομένων. Οι διαδικασίες του monitor είναι οι μόνες που επηρεάζουν την κατάσταση των μεταβλητών και των δεδομένων ένα process για να προσπελάσει τα δεδομένα ενός monitor πρέπει να καλέσει τις διαδικασίες του. 29

30 2.3.7 Ελεγκτές - Μonitors Η πιο σημαντική ιδιότητα του monitor είναι ότι μόνο ένα process μπορεί να ενεργεί στο monitor σε κάθε στιγμή. Το monitor είναι ένας μηχανισμός που προσφέρεται από μια γλώσσα προγραμματισμού. Ο compiler αναγνωρίζει κλήσεις σε monitor διαδικασίες. Οι πρώτες εντολές σε μια monitor διαδικασία, ελέγχουν αν βρίσκεται κάποιο άλλο process ενεργά μέσα στο monitor. Αν ναι, το process που καλεί το monitor θα ανασταλεί (suspended). Αλλιώς το process θα «μπει» στο monitor. 30

31 2.3.7 Ελεγκτές - Μonitors Ο compiler, λοιπόν, υλοποιεί τον αμοιβαίο αποκλεισμό (συνήθως χρησιμοποιώντας ένα binary semaphore). Oμως, όπως είδαμε πιο πάνω, απαιτείται και συγχρονισμός. Τα προβλήματα συγχρονισμού λύνονται από τον ελεγκτή μέσω μεταβλητών συνθήκης (condition variables). Cond. vars δέχονται εντολές WAIT & SIGNAL Oταν ένα monitor procedure δεν μπορεί να συνεχίσει (π.χ. ο P όταν ο Β είναι γεμάτος) τότε καλεί WAIT(c), όπου c είναι ένα cond. var. Eτσι η process Δ1 που καλεί WAIT μπλοκάρει. 31

32 2.3.7 Ελεγκτές - Μonitors Επίσης, επιτρέπει σε κάποιο άλλο process, Δ2, που είχε επιχειρήσει να μπει στο monitor και απέτυχε, να μπει τώρα στο monitor. Προσέξτε ότι μόνο ένα ενεργό process είναι στο monitor. Αυτό το άλλο process (Δ2) μπορεί να "ξυπνήσει" το process που έκανε WAIT (Δ1) μέσω του SIGNAL(c). Τώρα όμως πρέπει ν' αποφύγουμε την πιθανότητα να είναι και τα 2, πλέον ενεργά, processes στο monitor. συνήθως το SIGNAL() επιτρέπεται μόνο σαν η τελευταία εντολή σ' ένα monitor procedure. 32

33 2.3.7 Ελεγκτές - Μonitors Αν πολλά processes έχουν εκτελέσει WAIT(c), τότε η εντολή SIGNAL(c) θα ξυπνήσει μόνο ένα εξ' αυτών. Το SIGNAL(c) "χάνεται" αν κανείς δεν έχει καλέσει WAIT(c). Τα WAIT & SIGNAL είναι όμοια με τα SLEEP & WAKEUP που είδαμε πριν. Πώς αποφεύγεται το πρόβλημα που εξετάσαμε με το SLEEP & WAKEUP (όπου «χάνονται» οι αφυπνίσεις); Τα monitors απλοποιούν πολύ το έργο των προγραμματιστών! Το μόνο που κάνουν οι προγραμματιστές είναι να περικλείσουν σ' ενα monitor procedure τα critical section τους. 33

34 2.3.7 Ελεγκτές Π/Κ monitor Prod_Cons condition full, empty; integer count ; procedure enter { if count == N then wait (full) ; enter_item ; count ++ ; if count == 1 then signal (empty) } count = 0 ; End monitor ; procedure remove { if count == 0 then wait (empty); remove_item ; count -- ; if count == N - 1 then signal (full) } procedure producer procedure consumer while (1) do { while (1) do { prod_item() ; Prod_Cons.remove ; Prod_Cons.enter consume_item() ; } } 34

35 2.3.8 Μεταβίβαση Μηνυμάτων (Message Passing) Οι διεργασίες επικοινωνούν μ' ανταλλαγή μηνυμάτων: system calls SEND και RECEIVE: send (dest, &msg); recv (source, &msg). Γενικά για msg-passing συστήματα: Μηνύματα χάνονται: Γι αυτό συνήθως ο αποδέκτης μετά την λήψη, στέλνει ένα ειδικό μήνυμα που λέγεται επιβεβαίωση (acknowledgement). Oταν ο αποστολέας λαμβάνει το ACK τότε ξέρει ότι όλα πήγαν καλά. Αλλιώς, ξαναστέλνει το μήνυμα. Αν χαθεί το αck τότε το ίδιο μήνυμα θα σταλεί > 1 φορές πρέπει ο αποδέκτης να μπορεί να ξεχωρίζει τ' αντίγραφα. [αυτό γίνεται έχοντας τον αποστολέα να χρησιμοποιεί έναν counter στο msg και αν έχει λάβει ένα μήνυμα από τον ίδιο αποστολέα με την ίδια τιμή στον counter τότε ξέρει ότι είναι αντίγραφο]. 35

36 2.3.8 Μεταβίβαση Μηνυμάτων (Message Passing) Ονόματα των processes: πρέπει να είναι μοναδικά, αλλιώς το μήνυμά μας μπορεί να σταλεί σ' άλλο process. Αυτό είναι δύσκολο πρόβλημα. Συνήθως: Πιστοποίηση ταυτότητας (Authentication): Πώς ξέρω ότι αυτός που επικοινωνώ είναι πράγματι αυτός που ισχυρίζεται ότι είναι ; Encryption και κλειδιά λύνουν το πρόβλημα αυτό: το κλειδί για το μήνυμα το χει μόνο o σωστός αποδέκτης - κανείς άλλος δεν μπορεί να κάνει decrypt. Πώς στέλνω μηνύματα στην ίδια μηχανή ; (δηλ. αποστολέας και αποδέκτης τρέχουν στην ίδια μηχανή). Παραδοσιακές λύσεις βασίζονται στην αντιγραφή του μηνύματος από το address space του αποστολέα στο address space του αποδέκτη. Αυτό κοστίζει πολύ (ιδιαίτερα για μεγάλα μηνύματα). 36

37 2.3.9 Παραγωγός-Καταναλωτής και msg passing Βασική ιδέα: Τώρα δεν έχουμε κοινούς buffer. Οι Ν buffers αντικαθίστανται από Ν μηνύματα (msgs). Στην αρχή, ο καταναλωτής στέλνει N "άδεια" μηνύματα στον παραγωγό. Κάθε φορά που ο παραγωγός παράγει ένα αντικείμενο, παίρνει ένα "άδειο" μήνυμα, το γεμίζει, και το στέλνει πίσω στον καταναλωτή. Ο παραγωγός μπλοκάρει μέχρι να λάβει άδεια μηνύματα από τον καταναλωτή. Ο καταναλωτής μπλοκάρει μέχρι να λάβει γεμάτα μηνύματα απ' τον producer. 37

38 2.3.9 Παραγωγός-Καταναλωτής και msg passing producer consumer while (1) { For i:= 1 to N send (producer,&msg); prod_item (& item); while (1) { recv (consumer, &msg); recv (producer, &msg); make_msg (&msg, &item); get_item (&item); send (consumer, &msg) send (producer, &msg); } consume_item (item) } Προσέξτε, ότι τα send()/recv() είναι blocking system calls. Δηλαδή προκαλουν την αναστολή εκτέλεσης του process. Πότε ακριβώς μπλοκάρουν εξαρτάται από την υλοποίηση του msg passing. 38

39 Υλοποίηση Μεταβίβασης Μηνυμάτων (Message Passing) Υλοποίηση με Mailboxes. Αντί τα μηνύματα να στέλνονται σε ονόματα διεργασιών, μπορούμε να δημιουργήσουμε ένα mailbox για κάθε process, όπου στέλνονται τα μηνύματα. Το κάθε process τότε εκτελεί recv από το δικό του mailbox. Το mailbox ενός process περιέχει όλα τα μηνύματα που στάλθηκαν στο process και δεν έχουν παραληφθεί (received) από το process. Processes μπλοκάρουν όταν προσπαθούν να διαβάσουν/λάβουν από άδειο mbox ή να στείλουν σε γεμάτο mbox. Η λύση με mbox απαιτεί φυσικά buffering (χώρο στη Κ.Μ.). Μία εναλλακτική λύση βασίζεται στην έννοια του ραντεβού (rendezvous). 39

40 Υλοποίηση Μεταβίβασης Μηνυμάτων (Message Passing) Υλοποίηση με Ραντεβού (Rendezvous) Το send() μπλοκάρει μέχρι να γίνει το αντίστοιχο recv() από το άλλο process. Επίσης, το recv() μπλοκάρει μέχρι να γίνει το αντίστοιχο send(). Αυτή η λύση δεν απαιτεί καθόλου buffering: το μήνυμα μεταφέρεται κατ' ευθείαν από τον αποστολέα στον αποδέκτη. Η λύση με rendezvous είναι πιο απλή, αλλά όχι ευέλικτη. π.χ. τι γίνεται αν ο producer είναι πολύ πιο γρήγορος από τον consumer, ή αντίστροφα ; 40

41 2.4 Κλασσικά Προβλήματα IPC Οι φιλόσοφοι που γευματίζουν - Dining Philosophers N φιλόσοφοι κάθονται σ' ένα τραπέζι με N πιάτα φαγητό (σούσι). Για να φάει ένας φιλόσοφος χρειάζεται 2 ξυλάκια (chopsticks) -- δεξιά και αριστερά κάθε πιάτου βρίσκεται από ένα ξυλάκι. Ο κάθε φιλόσοφος περνάει την ζωή του σκεπτόμενος και τρώγοντας, εναλλάξ. Το πρόβλημα είναι να βρεθεί ένας αλγόριθμος για την ζωή των φιλοσόφων που να επιτρέπει τα παραπάνω χωρίς «προβλήματα». 41

42 2.4 Κλασσικά Προβλήματα IPC 42

43 Οι φιλόσοφοι που γευματίζουν - Dining Philosophers Μια πρώτη λύση για Ν φιλοσόφους: philosopher (i) while (1) { } think; take_fork(i); /* πάρε αριστερό ξυλάκι */ take_fork(i+1 mod Ν); /* πάρε δεξί ξυλάκι */ eat; put_fork(i); put_fork(i+1 mod Ν); 43

44 Οι φιλόσοφοι που γευματίζουν - Dining Philosophers Ο παραπάνω αλγόριθμος δεν ικανοποιεί! Αν όλοι οι φιλόσοφοι πεινάσουν την ίδια στιγμή και εκτελέσουν τον αλγόριθμο τότε όλοι θα πάρουν το πηρούνι στα αριστερά τους. Όμως κανείς δεν θα καταφέρει να πάρει το δεξί πηρούνι όλοι θα... πεθάνουν της πείνας. Αυτό είναι ένα γενικότερο και πολύ σημαντικό πρόβλημα για την δημιουργία συστημάτων λογισμικού και λέγεται αδιέξοδο (deadlock). 44

45 Οι φιλόσοφοι που γευματίζουν - Dining Philosophers Αδιέξοδο προκύπτει όταν >1 processes δημιουργούν μια κυκλική αλυσίδα: όπου το κάθε process για να συνεχίσει χρειάζεται έναν πόρο που τον κατέχει το επόμενο process... Κοκ Πρα Κιτρ Μπλε Πορτ Μωβ Κοκ 45

46 Οι φιλόσοφοι που γευματίζουν - Dining Philosophers Μια 2 η λύση είναι ν' αναγκάσουμε τον κάθε φιλόσοφο, μόλις πάρει το αριστερό ξυλάκι να εξετάσει αν το δεξί είναι διαθέσιμο. Αν ναι, εντάξει. Αλλιώς, αφήνει το αριστερό ξυλάκι και δοκιμάζει πάλι μετά από κάποιο χρονικό διάστημα. Το πρόβλημα μ' αυτή τη λύση είναι λίγο διαφορετικό. Αν όλοι οι φιλόσοφοι αρχίσουν την ίδια στιγμή, ενδέχεται να πάρουν το αριστερό την ίδια στιγμή, να τ' αφήσουν την ίδια στιγμή κ.ο.κ. Αυτό το φαινόμενο ονομάζεται επ αόριστον αναβολή (indefinite postponement) ή λιμοκτονία (starvation): οι διεργασίες συνεχίζουν να τρέχουν αλλά 46 δεν σημειώνουν καμία πρόοδο...

47 Οι φιλόσοφοι που γευματίζουν - Dining Philosophers Μια 3 η λύση: να δημιουργήσουμε ένα critical section στον αλγόριθμο των φιλοσόφων (μετά το "think") ο οποίος να προστατεύεται από ένα semaphore (mutex = 1). Πριν μπεί στο critical section ο κάθε φιλόσοφος καλεί DOWN(mutex) και μόλις βγει καλεί UP(mutex). 47

48 Οι φιλόσοφοι που γευματίζουν - Dining Philosophers mutex = 1; philosopher (i) while (1) {think; down(mutex); take_fork(i); /* πάρε αριστερό ξυλάκι */ take_fork(i+1 mod Ν); /* πάρε δεξί ξυλάκι */ eat; put_fork(i); put_fork(i+1 mod Ν); up(mutex); } Η λύση αυτή είναι σωστή; Είναι καλή λύση ; 48

49 Οι φιλόσοφοι που γευματίζουν - Dining Philosophers Μια καλύτερη λύση: Χρησιμοποιείται ένα semaphore (mutex = 1) για προστασία critical section. Χρησιμοποιείται ένα semaphore για κάθε φιλόσοφο π.χ. s[1..ν], για Ν φιλόσοφους. Αρχικά s[i] = 0, i= 1,...,Ν. Τέλος υπάρχει και μία μεταβλητή που αντιπροσωπεύει την κατάσταση ενός φιλόσοφου state[i] (με τιμές : ΣΚΕΦΤΕΤΑΙ, ΠΕΙΝΑΕΙ, ΤΡΩΕΙ). Απαίτηση: Για να φάει ένας φιλόσοφος, κανείς από τους 2 γείτονές του δεν μπορεί να βρίσκεται στην κατάσταση ΤΡΩΕΙ. 49

50 Οι φιλόσοφοι που γευματίζουν - Dining Philosophers Η βασική ιδέα: Για να μην μπλοκάρουν όλοι χωρίς λόγο, κάθε φιλόσοφος i θα μπλοκάρει στη δική του σημαφόρο s[i]. Επειδή παράλληλα κάποιοι φιλόσοφοι θα εξετάζουν την κατάσταση (state) των άλλων και θα αλλάζουν την κατάστασή τους, θα χρησιμοποιηθεί μια σημαφόρος για αυτό (mutex). 50

51 Οι φιλόσοφοι που γευματίζουν - Dining Philosophers philosopher (i) while (1) { think; take_forks(i); eat; put_forks(i); } test (i) if (state[i] == hungry && state[pred]!= eating && state[succ]!= eating) { state[i] = eating; up (s[i]); } take_forks(i) { put_forks(i) down (mutex); down (mutex); state[i]: = hungry; state[i]: = thinking; test (i); test (PRED); up (mutex); test (SUCC); down (s[i]); up (mutex); } } 51

52 Το Πρόβλημα Αναγνωστών/Συγγραφέων (Readers & Writers) Χρησιμοποιείται κυρίως για την μοντελοποίηση προβλημάτων ταυτόχρονης πρόσβασης διαφορετικού τύπου. Πολλοί αναγνώστες (readers) μπορούν ταυτόχρονα να προσπελαύνουν ένα αντικείμενο. Αν όμως το αντικείμενο προσπελαύνεται από έναν συγγραφέα, τότε κανείς άλλος (reader ή writer) δεν μπορεί να προσπελάσει το αντικείμενο. π.χ. τραπεζικοί λογαριασμοί = data items ερωτήσεις για ύψος υπολοίπου = readers αναλήψεις, καταθέσεις = writers 52

53 Το Πρόβλημα Αναγνωστών/Συγγραφέων (Readers & Writers) 2 σηματοφόροι: ένας (mutex) να προστατεύει το read_count και ένας (item) για τη read-write και write-write σύγκρουση. reader writer while (1) { while (1) { down (mutex); create_data(); read_count ++; down (item) ; if (read_count==1) write_item(); down (item); up (item) up (mutex) ; } read_item(); down (mutex); read_count --; if (read_count == 0) up (item); up (mutex); } Αρχικά, mutex = 1 και item = 1 και read_count = 0. Υπάρχει κάποιο πρόβλημα μ' αυτή την λύση; 53

54 2.5 Χρονοπρογραμματισμός CPU - SCHEDULING Όταν πολλές διεργασίες βρίσκονται στην κατάσταση RUNNABLE / READY, ποιο process θα πάρει τη CPU; Αυτό το αποφασίζει εκείνο το τμήμα του Λ.Σ. που λέγεται scheduler (scheduling algorithm). Ποιός χρονοπρογραμματίζει τον χρονοπρογραμματιστή; Ο scheduler καλείται: από τη ρουτίνα εξυπηρέτησης της διακοπής του ρολογιού (clock interrupt service routine)... (αφαίρεση) και από τη ρουτίνα block() του kernel (που καλείται όταν το τρέχον process μπλοκάρει)... εθελοντικά... 54

55 2.5 Χρονοπρογραμματισμός CPU - SCHEDULING Πότε ένας αλγόριθμος δρομολόγησης είναι "καλός"; Δίκαιος: ισοκατανομή CPU κύκλων στις διεργασίες Αποδοτικός: Συνήθεις μετρικές για να ορισθεί το «αποδοτικός»: CPU utilization (υψηλό ποσοστό χρήσης του CPU) response time: μικρός χρόνος απόκρισης αλληλεπιδραστικές εφαρμογές - interactive) για turnaround time (χρόνος απόκρισης συστήματα δέσμης) throughput (# μονάδας χρόνου) διεκπεραιωμένων διεργασιών / Συνήθως, δεν μπορούμε να ικανοποιήσουμε όλα αυτά ταυτόχρονα! 55

56 2.5 Χρονοπρογραμματισμός CPU - SCHEDULING Τύπος Διεργασίας: Φραγμένη από I/0 ή CPU; (I/O ή CPU bound) ; Τί μάθαμε μέχρι τώρα: Σε κάθε "τικ" το clock interrupt service routine καλεί το scheduler ο οποίος εξετάζει αν το τρέχον process έχει χρησιμοποιήσει τη CPU αρκετά. Αν ναί, τότε κάποιο άλλο process (αυτό που θα διαλέξει ο αλγόριθμος δρομολόγησης) θα τρέξει. Αυτό ισχύει για τις CPU bound διεργασίες. ==> αυτές εξαντλούν το χρόνο που τους δίνει ο scheduler τη CPU. Αν το τρέχον process είναι I/O-bound, τότε συνήθως θα μπλοκάρει συχνά, και έτσι θα χρησιμοποιεί λιγότερο το CPU απ' ότι ένα CPU-bound process. Στόχος: πρέπει να υπάρχει ένα καλό μείγμα από τους 2 τύπους διεργασιών προς εκτέλεση κάθε στιγμή. Γιατί; 56

57 2.5 Χρονοπρογραμματισμός CPU - SCHEDULING Προεκτοπιστικός χρονοπρογραμματισμός: [Preemptive Scheduling]: Οταν ο αλγόριθμος επιτρέπει η CPU να δοθεί σ' άλλο process πριν το τρέχον process να έχει τελειώσει. «Non-preemptive» αλγόριθμοι δίνουν τη CPU σ' ένα process μέχρι να τελειώσει, μετά διαλέγουν άλλο process... κ.ο.κ. To «preemptive scheduling» δημιουργεί τα προβλήματα που είδαμε σχετικά με ταυτόχρονη πρόσβαση σε κοινή μνήμη. Απ' την άλλη μεριά, το «non-preemptive scheduling» φαίνεται μη εφαρμόσιμο για τις πιο πολλές εφαρμογές (που έχουν πολλά processes στο σύστημα ταυτόχρονα). 57

58 Χρονοπρογραμματισμός εκ περιτροπής (Round Robin) Απλός, δίκαιος, και πολυ-χρησιμοποιημένος αλγόριθμος. Το κάθε process έχει ένα κβάντο χρόνου (time quantum ή time slice). Έτσι θα τρέξει για ένα διάστημα ίσο με το time slice, μετά η CPU θα δοθεί σε κάποιο άλλο process, κ.ο.κ. Αν το process μπλοκάρει πριν το time slice παρέλθει, τότε πάλι η CPU θα δοθεί σ' άλλο process. Απλή υλοποίηση! context switch: εναλλαγή διεργασιών Η διαδικασία κατά την οποία δίνεται η CPU σ' άλλο process αποκαλείται CPU switch, process switch, & context switch. 58

59 Χρονοπρογραμματισμός εκ περιτροπής Ο χρόνος που απαιτείται για το context switch είναι σημαντικός: Συντελείται εναλλαγή "περιβάλλοντος": σώσιμο regs, PC, SP,... στη δομή για το τρέχον process στο Process Table, φόρτωμα των regs, PC, SP από τη δομή για το επόμενο process στο Process Table, αλλαγή Page Tables,...κ.ο.κ. Η αποδοτικότητα του Round-Robin αλγόριθμου εξαρτάται από την διάρκεια του quantum (σε σχέση και με τον χρόνο που απαιτείται για context switch). Μεγάλο quantum μεγάλος χρόνος απόκρισης για interactive χρήστες. Μικρό quantum για μεγάλα ποσοστά του χρόνου η CPU χρησιμοποιείται για context switch. 59

60 Χρονοπρογραμματισμός Με Προτεραιότητες Ο αλγόριθμος Round-Robin είναι χρήσιμος όταν όλα τα process έχουν την ίδια σπουδαιότητα. Αυτό όμως δεν ισχύει συχνά! Σε μερικές εφαρμογές, τα process κάποιων χρηστών έχουν μεγαλύτερη προτεραιότητα (π.χ. Διεργασίες ασφάλειας, στρατηγών, καλών «πελατών»). Γενικά, ο αλγόριθμος διαλέγει το process με την μεγαλύτερη προτεραιότητα. H προτεραιότητα ενός process μπορεί να μεταβάλλεται με το χρόνο και να εξαρτάται π.χ. από το πόσα CPU cycles έχει ήδη χρησιμοποιήσει. Σε πολλά συστήματα υπάρχουν αρκετά I/O-bound jobs. Αυτά πρέπει να χουν μεγαλύτερη προτεραιότητα! Eτσι, θα πάρουν το CPU και πολύ σύντομα θα ζητήσουν I/O. Τότε το I/O process και τ' άλλα CPU-bound process τρέχουν παράλληλα. Αυτός ο παραλληλισμός μειώνει τον μέσο χρόνο απόκρισης και αυξάνει το throughput του συστήματος. 60

61 Χρονοπρογραμματισμός Με Προτεραιότητες Ένας απλός τρόπος υπολογισμού προτεραιότητας: 1/p, όπου p είναι το ποσοστό του time slice που χρησιμοποίησε το process την τελευταία φορά που έτρεξε. I/O-bound process έχουν χαμηλό p => υψηλή προτεραιότητα. Υβριδικός αλγόριθμος: Round-Robin και προτεραιότητες Το σύστημα παρέχει Ν προτεραιότητες οι οποίες σχηματίζουν Μ ομάδες, καθεμιά με Ν/Μ προτεραιότητες. Ο αλγόριθμος διαλέγει πάντα ένα process από την ομάδα με τις μεγαλύτερες προτεραιότητες. Σε κάθε ομάδα χρησιμοποιείται Round-Robin scheduling 61

62 Χρονοπρογραμματισμός Με Προτεραιότητες Αν υπάρχει κάποιο process με προτεραιότητα 1 τότε αυτό τρέχει, αλλιώς κάποιο process με προτεραιότητα 2, κ.λπ. Όλα τα processes με προτεραιότητα 1 τρέχουν με Round- Robin κ.λπ. Με το πέρασμα του χρόνου οι προτεραιότητες πρέπει να αλλάζουν. Αλλιώς μερικά processes δεν θα τρέξουν ποτέ (λιμοκτονία). Ο υβριδικός αλγόριθμος υλοποιείται συνήθως με μια δομή «multi-level queue». Το ν-οστό queue έχει process της ν- οστής ομάδας, κ.λπ. Ο αλγόριθμος βρίσκει το πρώτο μη άδειο queue, διαλέγει το process στην κορυφή του και όταν τελειώσει το quantum του process το τοποθετεί στο τέλος του. Το Λ.Σ. UNIX χρησιμοποιεί αυτήν την προσέγγιση (με Ν=128, Μ=32, quantum=100 Msec). 62

63 Χρονοπρογραμματισμός Με Προτεραιότητες Είναι δυνατόν κάθε ομάδα να σχετίζεται με διαφορετικό quantum. Δηλ. η κατώτερη ομάδα να χει 1 quantum, η αμέσως επόμενη να χει 2 quanta, κ.λπ. Έτσι ένα process με προτεραιότητα Π τρέχει για Π x quanta χρόνο. Είναι επίσης δυνατόν οι προτεραιότητες των processes να απορρέουν από τον τύπο του processes. π.χ. processes που περιμένουν για terminal I/O <-> 1 processes που περιμένουν για disk I/O <-> 2 processes των οποίων το quantum τελείωσε <-> 3 processes που έχουν χρησιμοποιήσει πολλά quanta <- > 4. 63

64 Χρονοπρογραμματισμός Με Προτεραιότητες Σ' αυτά τα συστήματα υπάρχουν 4 queues ένα για κάθε προτεραιότητα. Ο αλγόριθμος διαλέγει πάντα το process στην κορυφή του queue με την μεγαλύτερη προτεραιότητα. Έτσι, interactive χρήστες/processes και disk I/O processes προτιμούνται. 64

65 Χρονοπρογραμματισμός Oλοι οι παραπάνω αλγόριθμοι σχεδιάστηκαν για συστήματα με πολλά «interactive process». Αν το σύστημά μας δέχεται δέσμες διεργασιών (batch jobs), χωρίς διάδραση με το περιβάλλον, τότε κάτι άλλο χρειάζεται. Σε αυτά τα περιβάλλοντα τα πλεονεκτήματα του RR δεν είναι τόσο σημαντικά. Μας ενδιαφέρει ο συνολικός χρόνος απόκρισης για κάθε διεργασία της δέσμης να είναι μικρός. 65

66 Η Μικρότερη Δουλειά Πρώτη (SHORTEST JOB FIRST) (SJF) SJF είναι χρήσιμος όταν ο χρόνος CPU που χρειάζεται το κάθε process είναι γνωστός από πριν (π.χ. εφαρμογές όπως ασφαλιστικές, αεροπορικές εταιρείες, κ.λπ). SJF διαλέγει πάντα το process που χρειάζεται λιγότερο τη CPU. Tο παράδειγμα δείχνει ότι το SJF είναι προτιμητέο (μπορεί ν' αποδειχθεί εύκολα). 66

67 Η Μικρότερη Δουλειά Πρώτη σε Αλληλεπιδραστικά Περιβάλλοντα Μιας και to SJF ελαχιστοποιεί το χρόνο απόκρισης είναι επιθυμητό να το χρησιμοποιήσουμε και για αλληλεπιδραστκά συστήματα. Για να γίνει όμως αυτό πρέπει να μπορούμε να υπολογίσουμε πόσο CPU χρόνο απαιτεί κάθε process (ή μάλλον κάθε εντολή που ένας χρήστης πληκτρολόγησε στο τερματικό του). Έστω ότι εκτιμήθηκε ότι μια διεργασία χρειάζεται χρόνο T0. Oταν τρέχει σημειώνεται ότι χρησιμοποίησε τη CPU για χρόνο T1. Τότε ενημερώνουμε την εκτίμηση μας με βάση τα Τ0 & Τ1. π.χ. Τ0 = ατ0 + (1-α)Τ1 αποτελεί την καινούργια εκτίμηση. Την επόμενη φορά που τρέχει το ίδιο job σημειώνουμε ότι πήρε χρόνο T2. Τότε ενημερώνουμε την εκτίμησή μας με βάση Τ0 & T2. π.χ. Τ0 = α Τ0 + (1-α) T2 67

68 Η Μικρότερη Δουλειά Πρώτη σε Αλληλεπιδραστικά Περιβάλλοντα Αν α=1/2 Τ0 = (Τ0 / 2) + (Τ1 / 2), Τ0 = (Τ0 / 4) + (Τ1 / 4) + (Τ2 / 2),... Όσο πιο μικρή η τιμή του α, τόσο πιο γρήγορα ξεχνιούνται οι παλιές εκτιμήσεις... Δυστυχώς το SJF δεν είναι βέλτιστο όταν όλα τα jobs που θα δρομολογηθούν δεν είναι γνωστά εκ προοιμίου. Φτιάξτε ένα δικό σας παράδειγμα που να δείχνει αυτό. 68

69 Χρονοπρογραμματισμός με εγγυήσεις - Guaranteed Sched. Βασική ιδέα: Δώσε εγγυήσεις σε κάθε χρήστη αναφορικά με το πόσα CPU cycles θα δοθούν στο process του. π.χ. Αν υπάρχουν Ν χρήστες, τότε όλοι θα πάρουν 1/Ν των CPU cycles. Ο αλγόριθμος: 1. Το Λ.Σ. υπολογίζει πόσο CPU χρόνο έχει πάρει το κάθε process. 2. Επίσης, υπολογίζει πόσο χρόνο έπρεπε να είχε πάρει (process_life_time / N). 3. Μετά υπολογίζει τον λόγο των (1) και (2). 4. Ο αλγόριθμος διαλέγει το process με τον μικρότερο λόγο, το οποίο τρέχει μέχρι ο λόγος του να γίνει μεγαλύτερος κάποιου άλλου process. 69

70 Διαχωρισμός Πολιτικής & Μηχανισμού Χρονοπρογραμματισμού Ο διαχωρισμός αυτός είναι καλή ιδέα γενικά και όχι μόνο για scheduling. Η πολιτική αναφέρεται στην "φιλοσοφία" του αλγόριθμου. Ο μηχανισμός αναφέρεται κυρίως στην "υλοποίηση" του αλγορίθμου. Παράδειγμα: Πολιτική: προτεραιότητες Μηχανισμός: ποιός αποφασίζει για προτεραιότητες Eνας χρήστης μπορεί ν' αποφασίζει για τις σχετικές προτεραιότητες των διεργασιών του. Ο kernel τις δρομολογεί ανάλογα μ' αυτές τις προτεραιότητες. Παρομοίως, ένα parent process δίνει προτεραιότητες στα παιδιά του. ο αλγόριθμος που εκτελείται από το Λ.Σ. έχει παραμέτρους που τις δίνουν user processes. 70

71 Πολυ-Επίπεδος Χρονοπρογραμματισμός (2-Level Scheduling) Μοντέρνα συστήματα συνήθως έχουν πολλά (πολλές φορές) μεγάλα process που θέλουν να τρέξουν. Eπειδή η Κ.Μ. κοστίζει πολύ, είναι συνήθως «μικρή» δεν χωράνε όλα τα process στην κύρια μνήμη. Η δρομολόγηση των process σ' αυτά τα συστήματα γίνεται ως εξής: short-term scheduling: Αφορά την δρομολόγηση που έχουμε δει μέχρι τώρα. Δηλ. διαλέγει ποίο από τα processes που βρίσκονται στην Κ.Μ. θα τρέξει Long-term scheduling: Υπεύθυνο για να καθορίζει ποια από όλα τα process που θέλουν να τρέξουν θα εισέλθουν στην κύρια μνήμη. 71

72 Πολυ-Επίπεδος Χρονοπρογραμματισμός (2-Level Scheduling) Eτσι, αντί να έχουμε έναν μονολιθικό αλγόριθμο που λαμβάνει υπ' όψιν του το κόστος για context switch ενός process που βρίσκεται στο δίσκο, υπάρχει ο παραπάνω διαχωρισμός ευθυνών. Συνήθως ο LTS χρησιμοποιεί (μερικά από) τα εξής κριτήρια: χρόνος παραμονής στο δίσκο ή Κ.Μ. χρόνος CPU που δόθηκε στο process προτεραιότητα του process μέγεθος του process (συνήθως τα μεγάλα processes στέλνονται στο δίσκο για να ρθουν πολλά μικρά...). 72

73 2.6 Νήματα και Πολυνηματικές Διεργασίες Η παραδοσιακή έννοια του process: ένας χώρος διευθύνσεων (address space) και ένα νήμα ελέγχου (thread of control) που εκτελεί τις εντολές του προγράμματος, προσπελαύνει δεδομένα, κ.λπ. Το κάθε process μπορεί να κάνει ΕΝΑ πράγμα κάθε φορά! Ισχυρισμός: Χρειαζόμαστε: πολλά νήματα, που μοιράζονται ένα address space, και που τρέχουν παράλληλα. Στην ουσία όλα αυτά τα νήματα πρόσπελάσουν τον ίδιο κώδικα και δεδομένα. Δηλαδή μπορούν να προσφέρουν ίδιες υπηρεσίες και να μοιράζονται πληροφορία (δεδομένα). 73

74 Νήματα και Πολυνηματικές Διεργασίες Παράδειγμα File Server (FS): Έστω η κλήση: read (fd, &buf, count ) Όταν ο FS λαμβάνει την αίτηση read() εξετάζει πρώτα ένα αποταμιευτή (buffer cache -- BC) στην κύρια μνήμη. Αν η ζητούμενη πληροφορία είναι εκεί, την ανακτά και την επιστρέφει. Αλλιώς, εκδίδει μια αίτηση στο δίσκο (disk controller) να φέρει την πληροφορία στην BC. Ο FS μπλοκάρει μέχρι να ανακτηθεί η πληροφορία από τον δίσκο και να τοποθετηθεί στη BC. Όσο ο FS περιμένει για το disk I/O, καμία άλλη αίτηση δεν εξυπηρετείται σπατάλη CPU κύκλων και κακή/αργή απόκριση στους πελάτες. Θυμηθείτε τις καταστάσεις των διεργασιών! 74

75 Νήματα και Πολυνηματικές Διεργασίες Η εστία του προβλήματος είναι: ανασταλτικές κλήσεις (blocking system calls) (για I/O, IPC, κ.λπ.). Οι ανασταλτικές κλήσεις είναι επιθυμητές!!! Απλοποιούν σημαντικά τον προγραμματισμό. Οταν ξεμπλοκάρω, το ΙΟ έχει γίνει...! Σκεφθείτε πως θα γράφατε ένα F.S. χωρίς blocking system calls... Ασύγχρονη συμπεριφορά... «μηχανή καταστάσεων» (state machine δύσκολο!) Στόχος: Συνέχιση παροχής υπηρεσιών ακόμα και με blocking system calls από το ίδιο process. 75

76 Νήματα και Πολυνηματικές Διεργασίες Μια άλλη εναλλακτική λύση θα μπορούσε να είναι η χρήση πολλών διεργασιών που να προσφέρουν τις υπηρεσίες διαχείρισης αρχείων. Αυτά οι διεργασίες θα τρέχουν τον ίδιο κώδικα (του F.S.). Το πρόβλημα έγκειται ακριβώς στον ορισμό του process: το κάθε process έχει to δικό του ξεχωριστό address space αυτά τα process δεν έχουν ένα κοινό BC. 76

77 Νήματα και Πολυνηματικές Διεργασίες Αλλά, ακόμα και αν ξεπεράσουμε το παραπάνω πρόβλημα, (τα UNIX/LINUX π.χ. το ξεπερνά), επειδή το κάθε process έχει δικό του address space, context switching & process creation/termination είναι πολύ χρονοβόρες διαδικασίες. Απαιτείται λοιπόν άλλη λύση! Η σωστή λύση είναι η πολυνημάτωση πολυνηματικές διεργασίες (multi-threaded processes). 77

78 Νήματα και Πολυνηματικές Διεργασίες Για το παραπάνω παράδειγμα, ο F.S. θα μπορούσε να δομηθεί ως εξής: 78

79 Νήματα και Πολυνηματικές Διεργασίες Γεγονός 1: Τα threads μοιράζονται address space ένα thread μπορεί να "πειράξει" πληροφορία που χρειάζεται ένα άλλο thread απαιτείται έλεγχος ταυτόχρονης πρόσβασης (αμοιβαίος αποκλεισμός -- mutual exclusion). Γεγονός 2: Χρειαζόμαστε ένα scheduler (χρονοπρογραμματιστή) ο οποίος καλείται κάθε φορά που ένα thread μπλοκάρει και διαλέγει ένα άλλο "έτοιμο" thread να τρέξει. Αυτός ο scheduler δεν είναι ο ίδιος που δρομολογεί τις διεργασίες; 79

80 Δομή Πολυνηματικών Διεργασιών Το ομαδικό μοντέλο (team ): Ένας αριθμός ισόβαθμων threads που συνεργάζονται, λαμβάνοντας αιτήσεις από μια ουρά αιτήσεων (work Q) και εξυπηρετώντας αυτές. 80

81 Δομή Πολυνηματικών Διεργασιών Το dispatcher μοντέλο: Ένα νήμα διαχειρίζεται την ουρά αιτήσεων και διανέμει αιτήσεις στους κατάλληλους «εργάτες» (worker threads). Δεν μπλοκάρει!!! 81

82 Δομή Πολυνηματικών Διεργασιών Το pipe μοντέλο: το κάθε νήμα επεξεργάζεται πληροφορίες και δίνει την έξοδό του στο επόμενο νήμα για επεξεργασία κ.λπ. Πότε χρησιμοποιούμε κάποιο μοντέλο; Πόσους «εργάτες» ; μπορεί να μεταβληθεί ο αριθμός τους δυναμικά; Με ένα μεταβλητό αριθμό νημάτων, μπορούμε να δημιουργούμε ένα νήμα με κάθε αίτηση, για παράδειγμα. Αυτό το σχήμα είναι πιο ευέλικτο, αλλά λιγότερο αποδοτικό (κόστος createthread(), terminate-thread()). 82

83 Ταυτόχρονη Πρόσβαση σε Διαμοιραζόμενη Μνήμη Τα εργαλεία που χρησιμοποιούνται είναι όμοια με αυτά για παραδοσιακές διεργασίες (semaphores, monitors, critical sections). Ένα εργαλείο που χρησιμοποιείται σε πακέτα νημάτων (threads packages) είναι το mutex. Το mutex, στην ουσία του, είναι μια δυαδική σημαφόρος (binary semaphore). Εντολές: lock (mutex), unlock (mutex), try lock (mutex). 83

84 Ταυτόχρονη Πρόσβαση σε Διαμοιραζόμενη Μνήμη Χρήση: Κάθε κρίσιμη περιοχή συνδέεται με ένα mutex Πριν ένα νήμα μπει σε μια κρίσιμη περιοχή, καλεί lock (mutex). Αν το κλειδί (lock) του mutex το έχει πάρει κάποιο άλλο νήμα, τότε το νήμα μπλοκάρει. Όταν ένα νήμα βγει από την κρίσιμη περιοχή τότε καλεί unlock (mutex). Έτσι αν κάποιο άλλο νήμα περιμένει, θα του δοθεί το κλειδί και θα μπει στη δική του κρίσιμη περιοχή. 84

85 Ταυτόχρονη Πρόσβαση σε Διαμοιραζόμενη Μνήμη Δηλαδή, μόνο ένα thread μπορεί να έχει το lock ενός mutex σε κάθε χρονική στιγμή. Τι γίνεται όμως αν υπάρχουν πολλά νήματα που περιμένουν; Σε μερικές εφαρμογές θέλουμε να ξυπνήσουμε όλα αυτά τα νήματα. Σε άλλες μόνο ένα νήμα πρέπει να ξυπνήσει. Τα πιο πολλά πακέτα νημάτων προσφέρουν και τις δύο συμπεριφορές και ο προγραμματιστής της εφαρμογής επιλέγει. Η εντολή trylock (mutex) είναι παρόμοια με την lock (mutex). Η διαφορά τους έγκειται στο ότι αν το lock δεν είναι διαθέσιμο (δηλ. κάποιο άλλο νήμα το έχει πάρει) τότε το νήμα δεν μπλοκάρει, αλλά 85 συνεχίζει.

86 Ταυτόχρονη Πρόσβαση σε Διαμοιραζόμενη Μνήμη Ένα δεύτερο χρήσιμο εργαλείο είναι οι μεταβλητές συνθήκης (condition variables). Χρησιμοποιούνται κυρίως για συγχρονισμό. κάποιο νήμα περιμένει να συμβεί κάποιο γεγονός, για το οποίο ευθύνεται κάποιο άλλο νήμα. Για παράδειγμα, σκεφτείτε το πρόβλημα παραγωγού-καταναλωτή: Ένα νήμα «καταναλωτής» περιμένει για ένα buffer από ένα νήμα «παραγωγού». Κάθε condition variable συνδέεται με ένα mutex. Εντολές: wait(cond-var) και wakeup(cond-var). 86

87 Ταυτόχρονη Πρόσβαση σε Διαμοιραζόμενη Μνήμη Χρήση: Σαν έννοιες cond. vars και mutexes είναι όμοιες. (αναστέλλουν και επανακινούν διεργασίες/νήματα) Γενικά, το mutex χρησιμοποιείται για κρίσιμες περιοχές (δηλ. βραχυπρόθεσμο κλείδωμα -- locking). Condition variables χρησιμοποιούνται για πρόσβαση σε πόρους - μακρoπρόθεσμο κλείδωμα/αναμονή και συγχρονισμό. 87

88 Ταυτόχρονη Πρόσβαση σε Διαμοιραζόμενη Μνήμη Κάθε condition variable C συσχετίζεται με ένα mutex. Όταν καλείται από το νήμα Ν1 η wait(c), τότε το νήμα Ν1 «περιμένει» αν κάποιο άλλο νήμα Ν2 έχει τον πόρο, μέχρι το Ν2 να καλέσει wakeup(c). Επίσης, αυτόματα όταν καλείται το wait(c), το mutex που συνδέεται με το C ξεκλειδώνεται (αν ήταν πριν κλειδωμένο). (***) 88

89 Ταυτόχρονη Πρόσβαση σε Διαμοιραζόμενη Μνήμη Παράδειγμα: Ένα νήμα Ν1 θέλει πρόσβαση σε έναν πόρο R ο οποίος είναι "κλειδωμένος" από ένα άλλο νήμα Ν2. lock(mutex); lock(mutex); while R is busy; wait(c); mark R as busy; unlock(mutex); mark R free; unlock(mutex); wakeup (c); Βλέπουμε ότι ο πόρος R γίνεται "busy" και "free" μόνο στην κρίσιμη περιοχή των νημάτων που φυλάγεται με ένα mutex. Τώρα δες (***) παραπάνω: χωρίς αυτή τη συμπεριφορά, θα είχαμε deadlock (αδιέξοδο). Προσοχή: το wakeup μπορεί να ξυπνήσει πολλά threads. 89

90 Πρόσβαση σε Global Μεταβλητές Πρόβλημα: global vars που αφορούν στη διαχείριση διεργασιών συνολικά. Όταν πολλά threads προσπελάυνουν την τιμή ενός global var τότε προβλήματα μπορούν να προκύψουν. π.χ. το errno στο UNIX: δείχνει την επιτυχή ή μη εκτέλεση ενός system call. Tο Τ1 καλεί access() (...για να δεί αν δικαιούται πρόσβαση σε ένα αρχείο). Ο kernel επιστρέφει μια τιμή στην errno. Πριν όμως το Τ1 ξαναρχίσει, o scheduler δίνει τη CPU στο T2 που καλεί ένα άλλο system call που αποτυγχάνει και ο kernel ενημερώνει το errno. Όταν το Τ1 αρχίσει πάλι θα συμπεριφερθεί λανθασμένα...το errno περιέχει μια τιμή που δεν το αφορά! 90

91 Πρόσβαση σε Global Μεταβλητές Η λύση που προτιμάται είναι η δημιουργία ενός καινούργιου scope: per-thread global variables. Π.χ., κάθε thread έχει το δικό του errno. Αλλά πως χρησιμοποιούμε/υλοποιούμε ένα τέτοιο καινούργιο scope; Πολλές γλώσσες προγραμματισμού δεν υποστηρίζουν per-thread vars. Μια λύση είναι να δημιουργηθούν library routines όπως: create-global(v), read-global (v), writeglobal(v), όπου v είναι ένα per-thread global var (ή μάλλον η διεύθυνσή του). Για κάθε thread, διαφορετικές διευθύνσεις στο heap χρησιμοποιούνται για τα global var τους. 91

92 Νήματα: το... δάσος Στην ουσία επιθυμούμε να έχουμε πολυ-προγραμματισμό μέσα στο περιβάλλον μιας διεργασίας! Σκεφτείτε: Τί πληροφορία χρειαζόμαστε για να χειριστούμε κάθε νήμα (βλέπετε αντίστοιχη πληροφορία για τις διεργασίες και την εναλλαγή τους). 92

93 Υλοποίηση των Νημάτων Η υποστήριξη για νήματα μπορεί να υλοποιηθεί είτε σε επίπεδο πυρήνα (kernel) είτε σε επίπεδο χρήστη (user level). Η θεμελιώδης ερώτηση εδώ είναι: Πρέπει ο πυρήνας να έχει γνώση; (και συνεπώς να διαχειρίζεται νήματα) ή πρέπει να ξέρει μόνο για παραδοσιακές διεργασίες (και να μην μπορεί να διακρίνει αν οι διεργασίες είναι πολυ-νηματικές); Στην τελευταία περίπτωση τα νήματα υλοποιούνται στο user-level (δηλ. το λογισμικό που εκτελεί create(), delete(), και το scheduling για threads κλπ., δεν είναι τμήμα του πυρήνα του Λ.Σ.). Αλλά ενός συνοδευτικού «πακέτου» λογισμικού. 93

94 Υλοποίηση των Νημάτων: επίπεδο χρήστη Το πρώτο βασικό πλεονέκτημα είναι ότι μπορούν να χρησιμοποιηθούν ακόμα και σε παραδοσιακά Λ.Σ. που δεν υποστηρίζουν νήματα. Αλλά, αν καλέσουν κλήσεις αναστολής (blocking), τί γίνεται; Η λειτουργία τους συνοψίζεται ως εξής: Όταν ένα νήμα πρόκειται να κάνει κάτι που μπορεί να το μπλοκάρει (π.χ. recv_msg(), read(fd,...), write(...), down(s), ) τότε καλεί ένα ειδικό system call με το οποίο καθορίζεται αν το νήμα πρόκειται πράγματι να μπλοκάρει. Αν ΟΧΙ, τότε το νήμα συνεχίζει. 94

95 Υλοποίηση των Νημάτων: επίπεδο χρήστη Αν η απάντηση είναι ΝΑΙ, τότε το blocking system call δεν καλείται. Το πακέτο νημάτων (threads package) καλεί τον Scheduler ο οποίος βρίσκει ένα άλλο "έτοιμο" νήμα του ίδιου process και το τρέχει. Αυτός ο Scheduler μιμείται τον scheduler του Λ.Σ. Επίσης, το πακέτο νημάτων κρατά πληροφορίες για τις τιμές των stack, PC, SP, κ.λπ. καταχωρητών του κάθε νήματος. Το νέο νήμα τρέχει μόλις το PC, SP, και οι άλλες τιμές καταχωρητών φορτωθούν. 95

96 Υλοποίηση των Νημάτων: επίπεδο χρήστη ΣΗΜΕΙΩΣΗ: οι πιο πολλές μηχανές έχουν εντολές για "φόρτωμα" "ξεφόρτωμα" πολλών registers μαζί thread switching είναι πολύ γρήγορο!!! (1 τάξη μεγέθους γρηγορότερο). Αυτό είναι και το βασικότερο πλεονέκτημα των user-level threads: αποφεύγουν το κόστος των παγίδων στον πυρήνα -- kernel traps π.χ. για αναστολή και το κόστος εναλλαγής περιβάλλοντος (context) διεργασιών Επίσης, τώρα εφαρμογές μπορούν να χρησιμοποιήσουν το δικό τους αλγόριθμο χρονοπρογραμματισμμού. 96

97 Υλοποίηση των Νημάτων: επίπεδο χρήστη Το δάσος: Το Λ.Σ. δίνει τη CPU σε κάθε διεργασία (π.χ. για ένα κβάντο χρόνου) Το πακέτο νημάτων διαχειρίζεται αυτό το κβάντο χρόνου στη διάρκεια του οποίου τρέχουν διάφορα νήματα της ίδιας διεργασίας. Όσο υπάρχει κάποιο "έτοιμο" thread στο process και το time slice του process δεν έχει παρέλθει, το πακέτο νημάτων συνεχίζει να δρομολογεί νήματα από αυτό το process. 97

98 Υλοποίηση των Νημάτων: επίπεδο πυρήνα Ο kernel του Λ.Σ. κρατάει πληροφορίες για κάθε νήμα μιας διεργασίας, παρόμοιες με αυτές που κρατούσε παραδοσιακά (δηλ. έχει δομές για κάθε νήμα όπου σημειώνονται οι τιμές των registers, PC, SP, κ.λπ). Αυτή είναι η φυσική υπόσταση του νήματος! Για κάθε πολυ-νηματική διεργασία συνεχίζει να κρατάει πληροφορίες παρόμοιες με μονο-νηματικές διεργασίες, όπως δείκτες στα Page Tables, swap space, κ.λπ. Όταν ένα νήμα μπλοκάρεται, ο kernel μπορεί να επιλέξει ένα άλλο νήμα από το ίδιο ή άλλο process (σε αντίθεση με το Scheduler για user-level threads). Οι λόγοι για τους οποίους user-level threads συγκριτικά μειονεκτούν είναι: Yλοποίηση blocking system calls Ισοκατανομή χρόνου scheduling στα threads ενός process. 98

99 Υλοποίηση των Νημάτων: Blocking system Calls Με νήματα-πυρήνα επιτρέπεται να κληθούν blocking system calls. Μετά το kernel trap το Λ.Σ. αρχίζει ένα καινούργιο thread. Με νήματα-χρήστη αυτό δεν πρέπει να γίνει. Διότι τότε ο kernel θα ανέστειλε όλο το (multi-threaded) process και έτσι θα έτρεχε κάποιο άλλο νήμα από κάποια άλλη διεργασία κανένα ώφελος από νημάτωση!!! Μια λύση είναι ν' αλλάξουν όλα τα blocking system calls σε non-blocking. Αλλά αυτό απαιτεί αλλαγή του Λ.Σ., πέρα από το ανεπιθύμητο των ασύγχρονων κλήσεων. 99

100 Υλοποίηση των Νημάτων : Blocking system Calls Μια άλλη λύση εστιάζει στην χρησιμοποίηση «jacket» κώδικα γύρω από system calls που μπορούν να μπλοκάρουν. π.χ. στο UNIX υπάρχει το SELECT system call το οποίο σε πολλές περιπτώσεις προειδοποιεί αν ένα system call (e.g. read()) θα μπλοκάρει. Π.χ., ο jacket κώδικας καλεί SELECT και αν δεν πρόκειται να μπλοκάρει τότε καλεί read(), αλλιώς ο «scheduler» καλείται να τρέξει ένα άλλο thread. Κάθε φορά που ξανακαλείται ο «scheduler» εξετάζει αν κάποιο από τα SELECT έχει επιστρέψει την ένδειξη ότι πλέον δεν θα μπλοκάρει, και έτσι εκτελείται τότε το read()....αλλά έτσι απαιτείται αλλαγή στο system call library και δεν είναι υλοποιήσιμη απ' όλα τα Λ.Σ. 100

2.4 Κλασσικά Προβλήματα IPC

2.4 Κλασσικά Προβλήματα IPC 2.4 Κλασσικά Προβλήματα IPC 1 Οι φιλόσοφοι που γευματίζουν - Dining Philosophers Μια πρώτη λύση για Ν φιλοσόφους: philosopher (i) while (1) { think; take_fork(i);/* πάρε αριστερό ξυλάκι */ take_fork(i+1

Διαβάστε περισσότερα

2.3 Επικοινωνία Διεργασιών

2.3 Επικοινωνία Διεργασιών 2.3 Επικοινωνία Διεργασιών 2.3.3 Η λύση του Peterson. (για 2 διεργασίες) Το σενάριο περιλαμβάνει 2 διεργασίες. Υπάρχουν 2 ρουτίνες που καλούνται για να μπούν και να βγούν οι διεργασίες σε/από critical

Διαβάστε περισσότερα

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

Εισαγωγή στα Λειτουργικά Συστήματα Εισαγωγή στα Λειτουργικά Συστήματα Ενότητα 5: Διεργασίες ΙΙΙ Γεώργιος Φ. Φραγκούλης Τμήμα Ηλεκτρολόγων Μηχανικών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για

Διαβάστε περισσότερα

Πανεπιστηµιακές Παραδόσεις. «Εργαστήριο Λειτουργικών Συστηµάτων» Καθ. Π. Τριανταφύλλου

Πανεπιστηµιακές Παραδόσεις. «Εργαστήριο Λειτουργικών Συστηµάτων» Καθ. Π. Τριανταφύλλου Πανεπιστηµιακές Παραδόσεις «Εργαστήριο Λειτουργικών Συστηµάτων» Καθ. Π. Τριανταφύλλου 2003 Μέρος 1 ο Παραδοσιακά Λειτουργικά Συστήµατα Κεφάλαιο 1. Εισαγωγή σε Λειτουργικά Συστήµατα 1.1 Γενικά Συστήµατα

Διαβάστε περισσότερα

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

Εισαγωγή στα Λειτουργικά Συστήματα Εισαγωγή στα Λειτουργικά Συστήματα Ενότητα 4: Διεργασίες ΙΙ Γεώργιος Φ. Φραγκούλης Τμήμα Ηλεκτρολόγων Μηχανικών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για

Διαβάστε περισσότερα

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

Λιβανός Γιώργος Εξάμηνο 2017Β Λιβανός Γιώργος Εξάμηνο 2017Β Το Λ.Σ. είναι υπεύθυνο για την κατανομή των πόρων του συστήματος (επεξεργαστές, μνήμη, αποθηκευτικά μέσα και συσκευές εισόδου/εξόδου) στα διάφορα ανταγωνιζόμενα προγράμματα

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα Η/Υ Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 5 «Αμοιβαίος Αποκλεισμός» Διδάσκων: Δ Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας 1 Αμοιβαίος Αποκλεισμός 1. Εισαγωγή 2. Κρίσιμα τμήματα (Critical Sections) 3. Υλοποίηση του

Διαβάστε περισσότερα

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 lalis@inf.uth.gr Ο κώδικας δεν εκτελείται «μόνος του» Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Διαχείριση Κεντρικής Μονάδας Επεξεργασίας (CPU) Βασίλης Σακκάς 4/12/2013 1 Xρονοδρομολόγηση Διεργασιών 1 Η χρονοδρομολόγηση σε ένα Λ/Σ αποφασίζει ποια διεργασία θα χρησιμοποιεί

Διαβάστε περισσότερα

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Χρονοπρογραμματισμός Εργαστηριακές Ασκήσεις ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Χρονοπρογραμματισμός Εργαστηριακές Ασκήσεις Υλικό από: Κ Διαμαντάρας, Λειτουργικά Συστήματα, Τμήμα Πληροφορικής ΤΕΙΘ Σύνθεση Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Βασικές Έννοιες Λειτουργικών Συστημάτων Βασίλης Σακκάς 13/11/2013 1 ΒασικέςΈννοιεςΛ/Σ Η επικοινωνία μεταξύ Λ/Σ και των προγραμμάτων του χρήστη γίνεται μέσω του συνόλου των «εκτεταμένων

Διαβάστε περισσότερα

2.5 Χρονοπρογραμματισμός CPU - SCHEDULING

2.5 Χρονοπρογραμματισμός CPU - SCHEDULING 2.5 Χρονοπρογραμματισμός CPU - SCHEDULING Όταν πολλές διεργασίες βρίσκονται στην κατάσταση RUNNABLE / READY, ποιο process θα πάρει τη CPU; Αυτό το αποφασίζει εκείνο το τμήμα του Λ.Σ. που λέγεται scheduler

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Ενότητα 3: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Δημοσθένης Πασχαλίδης Τμήμα Ιερατικών Σπουδών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

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

ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα 3.1 Η εξέλιξη των λειτουργικών συστηµάτων 3.2 Αρχιτεκτονική λειτουργικών συστηµάτων 3.3 Συντονισµός των δραστηριοτήτων του υπολογιστή 3.4 Χειρισµός ανταγωνισµού µεταξύ

Διαβάστε περισσότερα

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

Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου ΣΥΣΤΗΜΑΤΑ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ Μάθημα Επιλογής Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου Δρ. Γεώργιος Κεραμίδας e-mail: gkeramidas@teimes.gr 1 Διεργασίες: Κατάσταση Εκτέλεσης (3-σταδίων) Κατάσταση

Διαβάστε περισσότερα

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

1. Εισαγωγή. Λειτουργικά Συστήματα Η/Υ. Διεργασίες. Ορισμός ΚΕΦΑΛΑΙΟ 3 - ΔΙΕΡΓΑΣΙΕΣ. Κεφάλαιο 3 «Διεργασίες» 1. Εισαγωγή Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 3 «Διεργασίες» Διδάσκων: Δ Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας Η έννοια της διεργασίας (process) είναι θεμελιώδης για την κατανόηση του τρόπου με τον οποίο

Διαβάστε περισσότερα

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

Εισαγωγή στην Πληροφορική Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 8: Λειτουργικά Συστήματα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΔΙΕΡΓΑΣΙΕΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΔΙΕΡΓΑΣΙΕΣ Διδάσκων: Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΔΙΕΡΓΑΣΙΕΣ Διεργασία (Process) είναι η αφαιρετική θεώρηση ενός προγράμματος

Διαβάστε περισσότερα

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

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Μάθημα: ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης (clam@unipi.gr) Δρ. Α. Γαλάνη (agalani@unipi.gr) 1 Συμβαίνει συχνά πολλές διεργασίες να ανταγωνίζονται για τον έλεγχο

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Λειτουργικά Συστήματα Ενότητα 4α: Σημαφόροι, Πρόβλημα Συνδαιτυμόνων Φιλοσόφων, Αδιέξοδα Αθηνά Βακάλη Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

Εισαγωγή στα Λειτουργικά Συστήματα Εισαγωγή στα Λειτουργικά Συστήματα Ενότητα 3: Διεργασίες Ι Γεώργιος Φ. Φραγκούλης Τμήμα Ηλεκτρολόγων Μηχανικών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για

Διαβάστε περισσότερα

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

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Διδάσκων: Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 Χρονοδρομολογητής ή χρονοπρογραμματιστής (scheduler) είναι το τμήμα του Λ.Σ.

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Λειτουργικά Συστήματα Ενότητα 5 : Αμοιβαίος Αποκλεισμός Δημήτριος Λιαροκάπης 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Μηχανικών

Διαβάστε περισσότερα

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

Εργαστήριο Λειτουργικών Συστημάτων - Αλγόριθμοι Χρονοπρογραμματισμού. Εργαστηριακή Άσκηση Εργαστηριακή Άσκηση Οι Αλγόριθμοι Χρονοπρογραμματισμού First Come First Serve (FCFS), Shortest Job First (SJF), Round Robin (RR), Priority Weighted (PRI) Επιμέλεια: Βασίλης Τσακανίκας Περιεχόμενα Αλγόριθμοι

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Λειτουργικά Συστήματα Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Λειτουργικά Συστήματα», 2015-2016 Κεφάλαιο 4: Διεργασίες Πρόγραμμα Πρόγραμμα 1 Πρόγραμμα

Διαβάστε περισσότερα

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi Προϋποθέσεις για Αµοιβαίο Αποκλεισµό Μόνο µία διεργασία σε κρίσιµο τµήµασεκοινό πόρο Μία διεργασία που σταµατά σε µη κρίσιµο σηµείο δεν πρέπει να επιρεάζει τις υπόλοιπες διεργασίες εν πρέπει να υπάρχει

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Επικοινωνία µεταξύ ιεργασιών και Σύνδροµες ιεργασίες

Επικοινωνία µεταξύ ιεργασιών και Σύνδροµες ιεργασίες Επικοινωνία µεταξύ ιεργασιών και Σύνδροµες ιεργασίες Interprocess Communication and Concurrent Processes Περίληψη Σύνδροµος Προγραµµατισµός Συνθήκη συναγωνισµού Συγχρονισµός διεργασιών Κρίσιµες περιοχές

Διαβάστε περισσότερα

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

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Διδάσκων: Επ. Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 Χρονοδρομολογητής ή χρονοπρογραμματιστής (scheduler) είναι το τμήμα του

Διαβάστε περισσότερα

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

Περιγραφή και Έλεγχος ιεργασιών Περιγραφή και Έλεγχος ιεργασιών Περίληψη ιεργασίες Πολυπρογραµµατισµός Καταστάσεις ιεργασιών Περιγραφή διεργασιών στο ΛΣ Έλεγχος διεργασιών Το ΛΣ Linux 1 ιεργασία (process) ιεργασία είναι κάθε πρόγραµµα

Διαβάστε περισσότερα

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

Σκελετός Παρουσίασης Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναφέρεται ρητώς. Σκελετός

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Λειτουργικά Συστήματα Ενότητα 4: Σήματα. Διαδιεργασιακή Επικοινωνία. Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

Διαβάστε περισσότερα

2. ΙΕΡΓΑΣΙΕΣ Στέφανος Γκρίτζαλης Αναπληρωτής Καθηγητής Κωνσταντίνος Καραφασούλης ιδάσκων (Π 407) 2.1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΙΕΡΓΑΣΙΕΣ (1/11) 2.1.1 Το µοντέλο διεργασίας Για την επίτευξη ψευδοπαραλληλισµού (pseudoparallelism)

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα Πραγματικού Χρόνου Λειτουργικά Συστήματα Πραγματικού Χρόνου 2006-07 Λειτουργικά Συστήματα Πραγματικού Χρόνου Βασικές Έννοιες Μ.Στεφανιδάκης Το μάθημα ΛΣ Πραγματικού Χρόνου Θεωρητικό υπόβαθρο Αρχές Προγραμματισμού Παραδείγματα

Διαβάστε περισσότερα

ΛΥΜΕΝΑ ΠΡΟΒΛΗΜΑΤΑ. Γράψτε τις επόμενες διαδικασίες σε όποια γλώσσα προγραμματισμού προτιμάτε:

ΛΥΜΕΝΑ ΠΡΟΒΛΗΜΑΤΑ. Γράψτε τις επόμενες διαδικασίες σε όποια γλώσσα προγραμματισμού προτιμάτε: ΛΥΜΕΝΑ ΠΡΟΒΛΗΜΑΤΑ Πρόβλημα 1: Το Πανεπιστήμιο Μακεδονίας, εφαρμόζοντας την αρχή της ισότητας μεταξύ των δύο φύλων μετέτρεψε τις τουαλέτες των φοιτητών σε κοινές τουαλέτες. Προς αποφυγή όμως παρεξηγήσεων

Διαβάστε περισσότερα

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 lalis@inf.uth.gr Πρόγραμμα και εκτέλεση προγράμματος Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα (ΗΥ222) Λειτουργικά Συστήματα (ΗΥ222) Ταυτοχρονισμός, Συγχρονισμός Πολλαπλές Διεργασίες/Νήματα σε 1 Κοινωνία: Προβλήματα; «Κοινωνικές Γιάννης διεργασίες/νήματα»: Διαβάζουν/γράφουν στον ίδιο χώρο. Αποτέλεσμα; Πιθανότατα

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, και Ε/Ε) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

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

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, και Ε/Ε) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

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

Θοδωρής Ανδρόνικος Τμήμα Πληροφορικής, Ιόνιο Πανεπιστήμιο Θοδωρής Ανδρόνικος Τμήμα Πληροφορικής, Ιόνιο Πανεπιστήμιο Για το μάθημα «Διαχείριση Λειτουργικών Συστημάτων» του ακαδημαϊκού έτους 2015 2016, το προτεινόμενο σύγγραμμα είναι το: Operating Systems: Internals

Διαβάστε περισσότερα

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

Μάθημα 7 ο. Αλγόριθμοι Χρονοδρομολόγησης Μάθημα 7 ο Αλγόριθμοι Χρονοδρομολόγησης Σκοπός του μαθήματος Στην ενότητα αυτή θα εξηγήσουμε το ρόλο και την αξιολόγηση των αλγορίθμων χρονοδρομολόγησης, και θα παρουσιάσουμε τους κυριότερους. Θα μάθουμε:

Διαβάστε περισσότερα

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

Λιβανός Γιώργος Εξάμηνο 2017Β Λιβανός Γιώργος Εξάμηνο 2017Β Υπολογιστικό σύστημα Υλικό (hardware) Λογισμικό (Software) Ολοκληρωμένα κυκλώματα, δίσκοι, οθόνη, κλπ. Λογισμικό συστήματος Προγράμματα εφαρμογών Χρειάζονται ένα συντονιστή!!!

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Κεφάλαιο 1ο: Εισαγωγή

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Κεφάλαιο 1ο: Εισαγωγή ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Κεφάλαιο 1ο: Εισαγωγή 1 - 2 - Κεφάλαιο 1ο Εισαγωγή σε Λειτουργικά Συστήματα τι είναι το Λειτουργικό σύστημα? Είναι μια επεκτεταμένη μηχανή (Αφαίρεση) Κρύβει πολύπλοκες λεπτομέρειες

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα (ΗΥ321) Λειτουργικά Συστήματα (ΗΥ321) Διάλεξη 2: Διεργασίες και Νήματα Διαδικαστικά 2 Γραφτήκατε στη λίστα; Σχηματίστε ομάδες (για το project)! Στο προηγούμενο επεισόδιο 3 Τι είναι λειτουργικό; Γενιές ΛΣ Βασικές

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα Η/Υ Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 9 «Δρομολόγηση Διεργασιών» Διδάσκων: Δ, Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας 1 Δρομολόγηση σε σύστημα ενός επεξεργαστή 1. Εισαγωγή 2. Κριτήρια αποτίμησης της απόδοσης

Διαβάστε περισσότερα

Διεργασίες (Processes)

Διεργασίες (Processes) Διεργασία (process) ή καθήκον (task) Διεργασίες (Processes) στοιχειώδης οντότητα/δραστηριότητα υπολογισμού (processing entity/activity) εκτέλεση ενός προγράμματος ένα (κύριο) νήμα (thread)/ρεύμα ελέγχου/εκτέλεσης

Διαβάστε περισσότερα

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

Κατανεμημένα Συστήματα Κατανεμημένα Συστήματα Σημειώσεις εργαστηρίου Lab#7 - Διεργασίες, Nήματα, Πολυνημάτωση στη Python Νεβράντζας Βάιος-Γερμανός Λάρισα, Φεβρουάριος 2013 Lab#7 - Διεργασιές, Νη ματα, Πολυνημα τωση στη Python,

Διαβάστε περισσότερα

Αμοιβαίος αποκλεισμός

Αμοιβαίος αποκλεισμός Αμοιβαίος αποκλεισμός 1. Εισαγωγή 2. Κρίσιμα τμήματα (Critical Sections) 3. Υλοποίηση του αμοιβαίου αποκλεισμού I. Προσεγγίσεις λογισμικού II. Υποστήριξη εκ μέρους του υλικού III. Σηματοφορείς 4. Κλασσικά

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα Λειτουργικά Συστήματα Κεφάλαιο 5ο Συστήματα Εισόδου - Εξόδου (INPUT/OUTPUT) 1 6.1 I/O Υλικό To Ι/Ο σύστημα αποτελεί ένα πολύ μεγάλο τμήμα ενός Λ.Σ. Συνήθως "διευθύνει" όλες τις συσκευές I/O (π.χ. δίσκους,

Διαβάστε περισσότερα

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

Λειτουργικά συστήµατα. Λογισμικό Συστήματος 1 Λειτουργικά συστήµατα Λογισμικό Συστήματος 1 Figure 3.1 Batch processing 0-2 Λογισμικό Συστήματος Figure 3.2 Interactive processing 0-3 Λογισμικό Συστήματος Figure 3.3 Software classification 0-4 Λογισμικό

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Δομή Λειτουργικών Συστημάτων Βασίλης Σακκάς 20/11/2013 1 Δομή ενός Λ/Σ -1 Μονολιθικά συστήματα (monolithic systems) Λειτουργικά συστήματα με ανυπαρξία δομής: "η μεγάλη ακαταστασία"

Διαβάστε περισσότερα

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

Επιτεύγµατα των Λ.Σ. Επιτεύγµατα των Λ.Σ. ιεργασίες ιαχείριση Μνήµης Ασφάλεια και προστασία δεδοµένων Χρονοπρογραµµατισµός & ιαχείρηση Πόρων οµή Συστήµατος ιεργασίες Ένα πρόγραµµα σε εκτέλεση Ένα στιγµιότυπο ενός προγράµµατος

Διαβάστε περισσότερα

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι ΙΕΡΓΑΣΙΕΣ ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΙΕΡΓΑΣΙΕΣ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθηµα: Λειτουργικά Συστήµατα Ι ΙΕΡΓΑΣΙΕΣ ιδάσκων: Αναπλ. Καθ. Κ. Λαµπρινουδάκης clam@unipi.gr 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΙΕΡΓΑΣΙΕΣ ιεργασία (Process) είναι η αφαιρετική θεώρηση ενός προγράµµατος

Διαβάστε περισσότερα

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

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 8: Νήματα και Παραλληλισμός Διεργασιών Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων

Διαβάστε περισσότερα

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

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών Οργάνωση Υπολογιστών Υπολογιστικό Σύστημα Λειτουργικό Σύστημα Αποτελεί τη διασύνδεση μεταξύ του υλικού ενός υπολογιστή και του χρήστη (προγραμμάτων ή ανθρώπων). Είναι ένα πρόγραμμα (ή ένα σύνολο προγραμμάτων)

Διαβάστε περισσότερα

Μάθημα 4 ο. Κρίσιμα Τμήματα και Αμοιβαίος Αποκλεισμός

Μάθημα 4 ο. Κρίσιμα Τμήματα και Αμοιβαίος Αποκλεισμός Μάθημα 4 ο Κρίσιμα Τμήματα και Αμοιβαίος Αποκλεισμός Εισαγωγή Σκοπός του μαθήματος αυτού είναι να εξηγήσει την έννοια του κρίσιμου τμήματος σε μία διεργασία και να δείξει τη λύση για ένα απλό πρόβλημα

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα (ΗΥ222) Λειτουργικά Συστήματα (ΗΥ222) Διάλεξη 5: Αδιέξοδα Συγχρονισμός στον Πραγματικό Κόσμο Χρειάζεται οποτεδήποτε > 1 χρήστης πόρου Λίγο πολύ οι ίδιες λύσεις με τον πραγματικό κόσμο: κλείδωμα (στo WC), χρονοπρογραμματισμός

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Λειτουργικά Συστήματα Ενότητα 11 : Δρομολόγηση Διεργασιών 1/3 Δημήτριος Λιαροκάπης 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Τμήμα Μηχανικών Πληροφορικής

Διαβάστε περισσότερα

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

Εργαστηριακή Άσκηση. Τμήμα Μηχανικών Πληροφορικής ΤΕ Εργαστηριακή Άσκηση Εργαστήριο Λειτουργικών Συστημάτων Οι First Come First Serve (FCFS), Shortest Job First (SJF), Round Robin (RR), Priority Weighted (PRI) Β. Τσακανίκας Β. Ταμπακάς Τμήμα Μηχανικών Πληροφορικής

Διαβάστε περισσότερα

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

Ελεγκτές/Παρακολουθητές (Monitors) Ταυτόχρονος Προγραμματισμός 1 Ελεγκτές/Παρακολουθητές (Monitors) 1 lalis@inf.uth.gr Ελεγκτές Αμοιβαίος αποκλεισμός στο πλαίσιο ενός τμήματος λογισμικού που προσπελάζεται με δομημένο τρόπο, μέσω προκαθορισμένης διασύνδεσης (API) Ο συγχρονισμός

Διαβάστε περισσότερα

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

ΛΟΓΙΣΜΙΚΟ (software) ΛΟΓΙΣΜΙΚΟ (software) Το Λογισµικό του Ηλεκτρονικού Υπολογιστή Περιεχόµενα Ορισµός Λογισµικού Κατηγορίες Λογισµικό Συστήµατος Λογισµικό Εφαρµογών Το λογισµικό είναι: Το λογισµικό Το σύνολο των προγραµµάτων

Διαβάστε περισσότερα

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

Μάθημα 7: Αλγόριθμοι Χρονοδρομολόγησης Μάθημα 7: Αλγόριθμοι Χρονοδρομολόγησης 7.1 Ορισμός Στόχοι Αλγόριθμο χρονοδρομολόγησης (scheduling algorithm) ονομάζουμε την μεθοδολογία την οποία χρησιμοποιεί ο κάθε χρονοδρομολογητής (βραχυχρόνιος, μεσοχρόνιος

Διαβάστε περισσότερα

Λειτουργικά Συστήματα. Ενότητα # 2: Διεργασίες και Νήματα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Λειτουργικά Συστήματα. Ενότητα # 2: Διεργασίες και Νήματα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Λειτουργικά Συστήματα Ενότητα # 2: Διεργασίες και Νήματα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του

Διαβάστε περισσότερα

Προβλήματα Συγχρονισμού (με ελεγκτή) Ταυτόχρονος Προγραμματισμός 1

Προβλήματα Συγχρονισμού (με ελεγκτή) Ταυτόχρονος Προγραμματισμός 1 Προβλήματα Συγχρονισμού (με ελεγκτή) Ταυτόχρονος Προγραμματισμός 1 lalis@inf.uth.gr Υλοποίηση σηματοφόρων Οι σηματοφόροι είναι ένας ΑΤΔ με συγκεκριμένες λειτουργίες πρόσβασης Μπορεί να υλοποιηθούν με «φυσικό»

Διαβάστε περισσότερα

Ενότητα 6 (Κεφάλαιο 9) Χρονοδρομολόγηση

Ενότητα 6 (Κεφάλαιο 9) Χρονοδρομολόγηση ΕΠΛ222: Λειτουργικά Συστήματα (μετάφραση στα ελληνικά των διαφανειών του βιβλίου Operating Systems: Internals and Design Principles, 8/E, William Stallings) Ενότητα 6 (Κεφάλαιο 9) Χρονοδρομολόγηση Οι διαφάνειες

Διαβάστε περισσότερα

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

ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr Η έννοια της διεργασίας ιεργασία (process) είναι ο µηχανισµός εκτέλεσης ενός προγράµµατος σε ένα λειτουργικό σύστηµα. Η διεργασία είναι µια ενεργή

Διαβάστε περισσότερα

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

Κεφάλαιο 3. Διδακτικοί Στόχοι Κεφάλαιο 3 Σε ένα υπολογιστικό σύστημα η Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) εκτελεί τις εντολές που βρίσκονται στην κύρια μνήμη του. Οι εντολές αυτές ανήκουν σε προγράμματα τα οποία, όταν εκτελούνται,

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία Λειτουργικά Συστήματα Ι Καθηγήτρια Παπαδάκη Αναστασία 2013 1 Ηλεκτρονικός Υπολογιστής αποτελείται: 1. Από Υλικό Hardware (CPUs, RAM, Δίσκοι), & 2. Λογισμικό - Software Και μπορεί να εκτελέσει διάφορες

Διαβάστε περισσότερα

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

Μάθημα 3 ο ΔΙΕΡΓΑΣΙΕΣ (PROCESSES) Μάθημα 3 ο ΔΙΕΡΓΑΣΙΕΣ (PROCESSES) Εισαγωγή H κεντρική μονάδα επεξεργασίας (ΚΜΕ) και η κύρια μνήμη αποτελούν τα βασικά δομικά στοιχεία ενός υπολογιστικού συστήματος. Η πρώτη εκτελεί εντολές χειρισμού δεδομένων

Διαβάστε περισσότερα

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

2. Σκοποί και Λειτουργίες των ΛΣ. Λειτουργικά Συστήματα Η/Υ. Περίληψη. Ι. Προστασία Υλικού ΚΕΦΑΛΑΙΟ 2 - ΕΞΕΛΙΞΗ ΚΑΙ ΣΚΟΠΟΙ ΛΣ 2. Σκοποί και Λειτουργίες των ΛΣ Λειτουργικά Συστήματα Η/Υ I. Προστασία του υλικού II. Επικοινωνία με τον χρήστη III. Διαχείριση, αξιοποίηση και έλεγχος πόρων IV. Ικανότητα και ευκολία εξέλιξης Κεφάλαιο

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Λειτουργικά Συστήματα Ενότητα 4: Σήματα. Διαδιεργασιακή Επικοινωνία. Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

Διαβάστε περισσότερα

Λειτουργικά Συστήματα. Ενότητα # 2: Διεργασίες και Νήματα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Λειτουργικά Συστήματα. Ενότητα # 2: Διεργασίες και Νήματα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Λειτουργικά Συστήματα Ενότητα # 2: Διεργασίες και Νήματα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Λειτουργικά Συστήματα Ενότητα 3 : Διεργασίες Δημήτριος Λιαροκάπης 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Μηχανικών Πληροφορικής

Διαβάστε περισσότερα

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

ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ Διδάσκων: Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 ΕΙΣΑΓΩΓΗ Μνήμη : Πόρος ζωτικής σημασίας του οποίου η διαχείριση απαιτεί ιδιαίτερη

Διαβάστε περισσότερα

Δρομολόγηση σε σύστημα ενός επεξεργαστή

Δρομολόγηση σε σύστημα ενός επεξεργαστή Δρομολόγηση σε σύστημα ενός επεξεργαστή 1. Εισαγωγή 2. Κριτήρια αποτίμησης της απόδοσης 3. Κριτήρια βελτιστοποίησης 4. Τύποι δρομολόγησης του επεξεργαστή 5. Ο κύκλος καταιγισμού CPU-I/O 6. Πολιτικές δρομολόγησης

Διαβάστε περισσότερα

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

Σηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1 Σηματοφόροι (Σηματοφορείς) 1 lalis@inf.uth.gr Αποφυγή ενεργής αναμονής if () { WAIT(); Μπορεί να γίνει εναλλαγή αφού το νήμα κάνει τον έλεγχο της συνθήκης αναμονής και την βρει αληθή, αλλά προτού αυτό

Διαβάστε περισσότερα

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΟΡΓΑΝΩΣΗ Η/Υ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΟΡΓΑΝΩΣΗ Η/Υ ΔΟΜΗ ΤΟΥ Η/Υ (PC compatibles) RAM CPU PCI Bridge PCI Bridges P2P Bridge RAM CPU PCI Bridge PCI2ISA Bridge Δομή της CPU Register file IP CPU TLB Level-1 cache RAM SP MMU

Διαβάστε περισσότερα

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

Εικονική Μνήμη (Virtual Μemory) ΗΥ 431 Αρχιτεκτονική Παραλλήλων Συστημάτων Διάλεξη 16 Εικονική Μνήμη (Virtual Μemory) Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Απλό πείραμα int *data = malloc((1

Διαβάστε περισσότερα

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

Ο βασικός παράγοντας είναι ο χρόνος αξιοποίησης του επεξεργαστή Ελάχιστος αριθµός πράξεων και όχι µακρόχρονες αιτήσεις Ε/Ε Εισαγωγή Ε-03: Λειτουργικά Συστήµατα ΙΙ Εαρινό Εξάµηνο 2005-06 «ροµολόγηση ιεργασιών (1/2)» ροµολόγηση σε συστήµατα µε έναν επεξεργαστή ροµολόγηση σε πολυεπεξεργαστικά συστήµατα ροµολόγηση σε κατανεµηµένα

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα Πραγματικού Χρόνου Λειτουργικά Συστήματα Πραγματικού Χρόνου 2006-07 Λειτουργικά Συστήματα Πραγματικού Χρόνου Η χρήση του χρόνου Μ.Στεφανιδάκης Συστήματα πραγματικού χρόνου: ελεγκτής και ελεγχόμενο σύστημα real-time system

Διαβάστε περισσότερα

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

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 8: Νήματα και Παραλληλισμός Διεργασιών Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων

Διαβάστε περισσότερα

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

Κεφάλαιο 3: Λειτουργικά Συστήµατα Κεφάλαιο 3: Λειτουργικά Συστήµατα B Μέρος Συντονισµός Δραστηριοτήτων Υπολογιστή Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Εισαγωγή Σήµερα θα περιγράψουµε πως ένα λειτουργικό

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα (ΗΥ321) Λειτουργικά Συστήματα (ΗΥ321) Διάλεξη 17: Χειρισμός Εισόδου - Εξόδου Συστήματα Εισόδου / Εξόδου: Το Υλικό Ε/Ε Μεγάλη ποικιλία συσκευών Ε/Ε Και μεγαλώνει Συνηθισμένες έννοιες: Πόρτα Δίαυλος Κοινό μέσο πρόσβασης

Διαβάστε περισσότερα

Εργαστήριο 14. Συγχρονισμός Νημάτων (χρήση pthread_mutex_t, pthread_cond_t)

Εργαστήριο 14. Συγχρονισμός Νημάτων (χρήση pthread_mutex_t, pthread_cond_t) Εργαστήριο 14 Συγχρονισμός Νημάτων (χρήση pthread_mutex_t, pthread_cond_t) Να γράψετε πρόγραμμα που να δημιουργεί 1 νήμα Έτσι στο πρόγραμμα σας θα υπάρχουν 2 νήματα (το ένα νήμα είναι το αρχικό νήμα που

Διαβάστε περισσότερα

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

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στα Πολυεπεξεργαστικά Συστήματα Διερασίες και Νήματα σε Πολυεπεξεργαστικά Συστήματα Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed

Διαβάστε περισσότερα

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

Εισαγωγή στην Πληροφορική Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Εισαγωγή στην Πληροφορική Αστροφυσικός Αναπλ. Καθηγητής ΕΜΠ romylos@survey.ntua.gr Λειτουργικά συστήµατα, διεργασίες και δροµολόγηση Σύνδεση

Διαβάστε περισσότερα

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

Εισαγωγή στα Λειτουργικά συστήματα Ι. Καθηγητής Κώστας Αναγνωστόπουλος Εισαγωγή στα Λειτουργικά συστήματα Ι Καθηγητής Κώστας Αναγνωστόπουλος Τι είναι Λειτουργικό Σύστημα Ένα πρόγραμμα ή συλλογή προγραμμάτων που ελέγχει και διαχειρίζεται το υλικό μιας υπολογιστικής μηχανής

Διαβάστε περισσότερα

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

Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ Εισαγωγή Σκοπός τόσο αυτού του εργαστηρίου, όσο και των εργαστηρίων που ακολουθούν, είναι να γνωρίσουμε τους τρόπους δημιουργίας και διαχείρισης των διεργασιών (processes)

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Λειτουργικά Συστήματα Ενότητα 2β: Αθηνά Βακάλη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

Σελίδα Φορτώθηκε Προσπελάστηκε Συχνότητα R Μ (dirty)

Σελίδα Φορτώθηκε Προσπελάστηκε Συχνότητα R Μ (dirty) Ιδεατή Μνήμη Άσκηση 1: Ένας υπολογιστής έχει τέσσερα πλαίσια σελίδων. Οι χρονικές στιγμές φόρτωσης, τελευταίας προσπέλασης, ο αριθμός αναφορών και τα bit αναφοράς (R) και μεταβολής (M ή dirty ) φαίνονται

Διαβάστε περισσότερα

Συγχρονισμός Μέρος Α : Κρίσιμο τμήμα και κλειδώματα

Συγχρονισμός Μέρος Α : Κρίσιμο τμήμα και κλειδώματα Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Συγχρονισμός Μέρος Α : Κρίσιμο τμήμα και κλειδώματα 9 ο Εξάμηνο Η ανάγκη για συγχρονισμό

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Λειτουργικά Συστήματα Ενότητα 3: Δρομολόγηση Κεντρικής Μονάδας Επεξεργασίας Αθηνά Βακάλη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα