Νήµατα Εκτέλεσης Συγχρονισµός ιεργασιών σε Κοινή Μνήµη

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

Download "Νήµατα Εκτέλεσης Συγχρονισµός ιεργασιών σε Κοινή Μνήµη"

Transcript

1 Νήµατα Εκτέλεσης Συγχρονισµός ιεργασιών σε Κοινή Μνήµη

2 Για τη δηµιουργία των διαφανειών έχει χρησιµοποιηθεί υλικό από τις διαφάνειες παραδόσεων που βασίζονται στο βιβλίο, Silberschatz, Galvin and Gagne, Operating Systems Concepts, 6 th Edition. Οι διαφάνειες αυτές βρίσκονται στο δικτυακό τόπο:

3 Νήµατα Εκτέλεσης (Threads)

4 Εισαγωγή Επισκόπηση Μοντέλα πολλαπλών νηµάτων (Multithreading Models) Θέµατα νηµάτων (Threading Issues) Pthreads και νήµατα σε µερικά δηµοφιλή ΛΣ Σελίδα 4

5 Η Έννοια της ιεργασίας (και) Γιατίοι ιεργασίεςδενείναιαρκετές Η διεργασία είναι κυρίως µια λογική έννοια, η οποίαστηνπράξη υλοποιείται µε τονµηχανισµό της διεργασίας σε επίπεδο ΛΣ. Μια λογική διεργασία µπορεί να αντιστοιχεί σε µια (ή περισσότερες) διεργασίες του ΛΣ Τι γίνεται όµως αν µια λογική διεργασία χρειάζεται να υποστηρίξει «ταυτόχρονη» εκτέλεση κώδικα; Μπορεί να δηµιουργηθούν πολλές διεργασίες (ΛΣ) που συνεργάζονται για τον κοινό σκοπό (της λογικής διεργασίας) Όµως ακόµα και αν οι διεργασίες δηµιουργηθούν έτσι ώστε να επικοινωνούν (αποδοτικά) µέσω κοινής µνήµης, το σύστηµα επιβαρύνεται λόγω των επιπρόσθετων εναλλαγών περιβάλλοντος λειτουργίας (context switch) που πραγµατοποιούνται Σελίδα 5

6 Νήµατα Τα νήµατα (νήµατα ελέγχου), ονοµάζονται και ελαφρές διεργασίες (lightweight processes LWPs), είναι ξεχωριστές ροές του ίδιου προγράµµατος που εκτελούνται µέσα σε µια λογική διεργασία Τα νήµατα µιας διεργασίας ανήκουν πάντα στον ίδιο χρήστη Λειτουργούν (στην ουσία) όπως και οι διεργασίες, δεν είναι όµως πραγµατικά ανεξάρτητες εκτελέσεις, καθώς: έχουν τα ίδια δικαιώµατα πρόσβασης σε πόρους µοιράζονται τους ίδιους πόρους (δεδοµένα, κώδικα, ανοικτά αρχεία, σήµατα, ακόµα και τον χρόνο της ΚΜΕ) µοιράζονται την ίδια µνήµη! Σελίδα 6

7 Thread Switch vs Context Switch Για κάθε νήµα διατηρείται ξεχωριστή κατάσταση εκτέλεσης, δηλαδή µετρητής προγράµµατος, τιµές των καταχωρητών και στοίβα Η εναλλαγή µεταξύ νηµάτων (thread switch) ισοδυναµεί στην πράξη µε απλή εναλλαγή κατάστασης ΚΜΕ (register set switch) και όχι µε πραγµατική εναλλαγή περιβάλλοντος λειτουργίας (context switch) Κατά το thread switch δεν πραγµατοποιούνται λειτουργίες διαχείρισης µνήµης και δικαιωµάτων πρόσβασης, µε αποτέλεσµα το thread switch να είναι πολύ πιο γρήγορο από το context switch Σελίδα 7

8 ιεργασίες και Νήµατα Σελίδα 8

9 Πλεονεκτήµατα Χρήσης Νηµάτων (αντί Συνεργαζοµένων ιεργασιών) Απόκριση / απόδοση συστήµατος ιαµοιρασµός πόρων (Resource Sharing) Οικονοµία πόρων Εκµετάλλευση αρχιτεκτονικών πολλαπλών επεξεργαστών Πρόβληµα: Έλεγχος συγχρονισµού (concurrency control problems) Σελίδα 9

10 Υλοποίηση Νηµάτων σε Επίπεδο Χρήστη (User Threads) Η διαχείριση των νηµάτων γίνεται από βιβλιοθήκες που εκτελούνται σε κατάσταση χρήστη (user mode). Αποφεύγεται η επικοινωνία µε το σύστηµα/πυρήνα (δεν πραγµατοποιούνται κλήσεις συστήµατος) Τα νήµατα εκτελούνται µέσα από µια κοινή διεργασία Ένα νήµα αφήνειτηνκμεµε κλήση της ρουτίνας εναλλαγής, µε λειτουργία που προκαλεί έµµεσα εναλλαγή ή µε την λήξη ενός µετρητή Συνήθως δεν υποστηρίζεται κατανοµή του χρόνου εκτέλεσης της διεργασίας στα διάφορα νήµατα που έχει µέσα της Παραδείγµατα: POSIX pthreads, Mach C-threads, Solaris threads Σελίδα 10

11 Νήµατα σε Επίπεδο Χρήστη (συνέχεια) Πλεονεκτήµατα: Τα νήµατα χρήστη εναλλάσσονται (θεωρητικά) γρηγορότερα από τα νήµατα πυρήνα. Ωστόσο, στην πράξη, καλές υλοποιήσεις νηµάτων σε επίπεδο πυρήνα [Linux] εναλλάσσονται µε συναφήαπόδοση Μειονεκτήµατα: Ένα νήµα µπορεί να µονοπωλήσει τον χρόνο εκτέλεσης µιας διεργασίας (λιµοκτονία (starvation) των υπολοίπων νηµάτων) εν γίνεται εκµετάλλευση της συµµετρικής πολυεπεξεργασίας Όταν µπλοκαριστεί ένα νήµα µέσα σε κάποια λειτουργία Ι/Ο τότε µπλοκάρονται όλα τα νήµατα που εκτελούνται µέσα στην ίδια διεργασία (γιατί το ΛΣ δεν «γνωρίζει» την ύπαρξη τους) Σελίδα 11

12 Υλοποίηση Νηµάτων σε Επίπεδο Συστήµατος/Πυρήνα (Kernel Threads) Τα νήµατα πυρήνα υλοποιούνται στον πυρήνα του ΛΣ, και οι αντίστοιχες βιβλιοθήκες χρησιµοποιούν κλήσεις συστήµατος Σε αυτή την περίπτωση ο πυρήνας χρονοδροµολογεί κάθε νήµα εντός της µονάδας χρόνου που αναλογεί στην διεργασία µέσα στην οποία εκτελούνται τα νήµατα Υπάρχει περισσότερος φόρτος στο σύστηµα λόγω της εναλλαγής κατάστασης χρήστη <-> σύστηµα (user mode <-> system mode) και την διαχείριση πιο πολύπλοκων περιβαλλόντων, αλλά οι αρχικές µετρήσεις απόδοσης δείχνουν αµελητέα αύξηση στο χρόνο Παραδείγµατα: Windows 95/98/NT/2000, Solaris,Tru64 UNIX, BeOS, Linux Σελίδα 12

13 Νήµατα σε Επίπεδο Πυρήνα (συνέχεια) Πλεονεκτήµατα: Αποτροπή της µονοπώλησης της µονάδας χρόνου µιας διεργασίας από ένα νήµα (ενώ υπάρχουν και άλλα προς εκτέλεση) Το µπλοκάρισµα ενόςνήµατος σε Ι/Ο δεν συνεπάγεται µπλοκάρισµα και των άλλων νηµάτων που εκτελούνται µέσα στην ίδια διεργασία Μια διεργασία µπορεί να εκµεταλλευτεί (πιο εύκολα) τη συµµετρική πολυεπεξεργασία του ΛΣ και να τρέχει γρηγορότερα µε κάθεκμε που προστίθεται στο σύστηµα Μειονεκτήµατα: Ταχύτητα εναλλαγής νηµάτων Σελίδα 13

14 Μοντέλα Πολλαπλών Νηµάτων (Multithreading Models) Ανάλογα µε τοαντολσυποστηρίζεινήµατα σε επίπεδο πυρήνα αλλά και το πως αυτά αντιστοιχίζονται σε νήµατα επιπέδου χρήστη, υπάρχουν διάφορες προσεγγίσεις υλοποίησης: Πολλά σε Ένα (Many-to-One) Ένα προς Ένα (One-to-One) Πολλά προς Πολλά (Many-to-Many) Σελίδα 14

15 Πολλά σε Ένα (Many-to-One) Πολλά νήµατα επιπέδου χρήστη αντιστοιχούν σε ένα νήµα πυρήνα Χρησιµοποιείται σε συστήµατα που δεν υποστηρίζουν νήµατα πυρήνα Σελίδα 15

16 Μοντέλο Πολλά σε Ένα Σελίδα 16

17 Ένα προς Ένα (One-to-One) Κάθε νήµα χρήστη αντιστοιχεί σε ένα νήµα πυρήνα Παραδείγµατα: - Windows 95/98/NT/2000 -OS/2 Σελίδα 17

18 Μοντέλο Ένα προς Ένα Σελίδα 18

19 Μοντέλο Πολλά προς Πολλά Επιτρέπει σε πολλά νήµατα χρήστη να αντιστοιχιστούν σε πολλά νήµατα πυρήνα Επιτρέπει στο ΛΣ να δηµιουργήσει επαρκή αριθµό νηµάτων πυρήνα Solaris 2 Windows NT/2000 µε το πακέτο ThreadFiber Σελίδα 19

20 Μοντέλο Πολλά προς Πολλά (συνέχεια) Σελίδα 20

21 Θέµατα Νηµάτων (Threading Issues) Σηµασιολογία των κλήσεων συστήµατος fork() και exec() εξαµενές νηµάτων (Thread pools) Ακύρωση νηµάτων (Thread cancellation) Χειρισµός σηµάτων (Signal handling) εδοµένα σχετικά µε τανήµατα (Thread specific data) Σελίδα 21

22 Pthreads (POSIX Threads) Μια τυποποίηση POSIX (IEEE c) API για δηµιουργία και συγχρονισµό νηµάτων σε περιβάλλον Unix To API προσδιορίζει τους τύπους (types), τις επικεφαλίδες των ρουτινών (interfaces), και την συµπεριφορά των ρουτινών της αντίστοιχης βιβλιοθήκης Η υλοποίηση της βιβλιοθήκης εναπόκειται στο ΛΣ Σελίδα 22

23 Νήµατα στο Solaris 2 Σελίδα 23

24 ιεργασίες στο Solaris 2 Σελίδα 24

25 Νήµατα στα Windows 2000 Υλοποιούν την αντιστοίχηση «Ένα προς Ένα» Κάθε νήµα περιέχει: ένα thread id ένα σύνολο από καταχωρητές (register set) ξεχωριστές στοίβες για το χρήστη και τον πυρήνα ιδιωτικό χώρο αποθήκευσης δεδοµένων Σελίδα 25

26 Νήµατα στο Linux (Linux Threads) To Linux αναφέρεται σε αυτά ως εργασίες (tasks) παρά ως νήµατα Ηδηµιουργία νηµάτων γίνεται µέσω της κλήσης συστήµατος clone() H Clone() επιτρέπει σε µια εργασία παιδί να µοιράζεται το χώρο διευθύνσεων της πατρικής εργασίας (διεργασίας) Σελίδα 26

27 Νήµατα στην Java Τα νήµατα στη Java µπορούν να δηµιουργηθούν µέσω: Επέκτασης του Thread class Υλοποίησης της διεπαφής Runnable Την διαχείριση των νηµάτων στη Java αναλαµβάνει η JVM Σελίδα 27

28 Κατάσταση Νηµάτων στην Java Σελίδα 28

29 Συγχρονισµός ιεργασιών σε Κοινή Μνήµη (Process Synchronization)

30 Εισαγωγή Θεωρητικό υπόβαθρο Το πρόβληµα τουκρίσιµου τµήµατος (the critical-section problem) Υλικό συγχρονισµού Σηµατοφορείς ή σηµαφόροι (semaphores) Κλασικά προβλήµατα συγχρονισµού Κρίσιµες περιοχές (critical regions) Ελεγκτές/παρακολουθητές (monitors) Σελίδα 30

31 Θεωρητικό Υπόβαθρο Η ταυτόχρονη πρόσβαση σε κοινά δεδοµένα µπορεί να οδηγήσει σε ασυνέπεια δεδοµένων (data inconsistency) Το πρόβληµα της συνέπειας υφίσταται στα νήµατα και στις διεργασίες(*) µε κοινήµνήµη που έχουν ταυτόχρονη πρόσβαση σε όλες τις καθολικές µεταβλητές και τα δυναµικά δεδοµένα ενός προγράµµατος Παρόµοιο πρόβληµα αντιµετωπίζει ο κώδικας του συστήµατος του οποίου η εκτέλεση µπορεί να διακοπεί από τις ρουτίνες χειρισµού διακοπών (interrupt handlers) που µε την σειρά τους µπορεί να κάνουν κλήσεις συστήµατος (που και αυτές µπορεί να διακοπούν...) (*) Σε αυτή την ενότητα χρησιµοποιούµε τον(γενικότερο) όρο διεργασία, ακόµα και όταν αναφερόµαστε σε νήµατα Σελίδα 31

32 Πρόσβαση σε Κοινή Μεταβλητή (Shared variable) Έστω πως δύο διεργασίες εκτελούν τον παρακάτω κώδικα: int i=0; /* κοινή µεταβλητή */ void body { i++; Ποιά η τιµή τηςµεταβλητής i αφού εκτελεσθούν οι διεργασίες; Μπορεί να είναι 1 ή 2, δεν το ξέρουµε εκ των προτέρων! Κάθε εκτέλεση µπορεί να δίνει διαφορετικό αποτέλεσµα! Σελίδα 32

33 Γιατί; Το πρόβληµα είναι πως η εκτέλεση της εντολής i++ δεν είναι (εγγυηµένα) ατοµική (atomic) δηλαδή χωρίς να υπάρχει πιθανότητα διακοπής της Ηεντολήi++ µεταφράζεται σε γλώσσα µηχανήςωςεξής: regx = mem[i_adr]; regx = regx+1; memy[i_adr] = regx; Η σειριακή εκτέλεση του κώδικα των διεργασιών δίνει διαφορετικό αποτέλεσµα από µια διαπλεκόµενη (interleaved) εκτέλεσή του Η εκτέλεση εξαρτάται από την (τυχαία) χρονοδροµολόγηση του ΛΣ Σελίδα 33

34 Σενάρια Εκτέλεσης Αρχικά η µεταβλητή i έχει την τιµή 0. Σενάριο Α thread 1: reg1 = mem[i_adr]; thread 1: reg1 = reg+1; thread 2: reg2 = mem[i_adr]; thread 2: reg2 = reg2+1; thread 2: mem[i_adr] = reg2; thread 1: mem[i_adr] = reg1; Η µεταβλητή i έχει την τιµή 1 Σενάριο B thread 1: reg1 = mem[i_adr]; thread 1: reg1 = reg+1; thread 1: mem[i_adr] = reg1; thread 2: reg2 = mem[i_adr]; thread 2: reg2 = reg2+1; thread 2: mem[i_adr] = reg2; Η µεταβλητή i έχει την τιµή 2 Σελίδα 34

35 Κατάσταση Συναγωνισµού (Race Condition) Κατάσταση Συναγωνισµού: Η κατάσταση όπου πολλές διεργασίες προσπελαύνουν και χειρίζονται ταυτόχρονα κοινά δεδοµένα Η τελική τιµή των κοινών δεδοµένων εξαρτάται από το πως θα δροµολογηθεί η επιµέρους εκτέλεσης του κώδικα των διεργασιών Για την αποτροπή καταστάσεων συναγωνισµού, οι διεργασίες µε κοινή µνήµη πρέπεινασυγχρονίζονται Σελίδα 35

36 Το Πρόβληµα τουκρίσιµου Τµήµατος (critical section problem) Ένας αριθµός από Ν διεργασίες εκτελούνται ταυτόχρονα µεταξύ τους και επιθυµούν να χρησιµοποιήσουν κάποια κοινά δεδοµένα Κάθε διεργασία έχει ένα τµήµα κώδικα που καλείται κρίσιµο τµήµα (critical section), στο οποίο προσπελαύνονται τα κοινά δεδοµένα Πρόβληµα: ιασφάλισε ότι όταν µια διεργασία εκτελεί κώδικα στο κρίσιµο τµήµα της, καµία άλλη διεργασία δεν θα να εκτελέσει στο κρίσιµο τµήµα της Σελίδα 36

37 Αφηρηµένη οµή των ιεργασιών while (1) { Κανονικός Κώδικας (δεν τίθεται θέµα συγχρονισµού) Κρίσιµο Τµήµα (critical section) Κανονικός Κώδικας (δεν τίθεται θέµα συγχρονισµού) Σελίδα 37

38 Οι 3 Απαιτήσεις της Λύσης του Κρίσιµου Τµήµατος 1. Αµοιβαίος αποκλεισµός (mutual exclusion): Αν η µια διεργασία εκτελεί κώδικα στο κρίσιµο τµήµα της, τότε καµία άλλη διεργασία δεν εκτελεί κώδικα στο κρίσιµο τµήµα της 2. Πρόοδος (progress): Αν δεν υπάρχει διεργασία που να βρίσκεται µέσα στο κρίσιµο τµήµα της και υπάρχουν διεργασίες που επιθυµούν να εισέλθουν στο κρίσιµο τµήµα τους, τότε η επιλογή της επόµενης διεργασίας που θα εισέλθει στο κρίσιµο τµήµα τηςδεν µπορεί να αναβάλλεται επ αόριστον Σελίδα 38

39 Οι 3 Απαιτήσεις της Λύσης του Κρίσιµου Τµήµατος (συνέχεια) 3. Πεπερασµένη Αναµονή (bounded waiting): Πρέπει να υπάρχει ένα όριο στο πλήθος των φορών που επιτρέπεται σε άλλες διεργασίες να εισέλθουν στο κρίσιµο τµήµα τους, αφότου µια διεργασία έχει εκδώσει αίτηση να εισέλθει στο κρίσιµο τµήµα τηςκαι µέχρι η αίτηση αυτή να ικανοποιηθεί Υποθέτουµε ότι κάθε διεργασία εκτελείται µε µη µηδενική ταχύτητα εν µπορεί να γίνει καµία υπόθεση η οποία να αφορά τη σχετική ταχύτητα των διαφόρων διεργασιών, ή το πλήθος των επεξεργαστών στους οποίους εκτελούνται οι διεργασίες Σελίδα 39

40 Πιο Λεπτοµερής οµή των ιεργασιών while (1) { Κανονικός Κώδικας (δεν τίθεται θέµα συγχρονισµού) Κρίσιµο Τµήµα (critical section) Κανονικός Κώδικας (δεν τίθεται θέµα συγχρονισµού) Κώδικας Εισόδου (entry code) Κώδικας Εξόδου (exit code) Σελίδα 40

41 Αλγόριθµος 1 (δύο ιεργασίες) Κοινή µεταβλητή turn (η διεργασίαp i εισέρχεται στο ΚΤ µόνο όταν turn=i): shared vars: int turn=0; process body: while (1) { while (turn!=i) { /* entry code */ do_critical_section(); turn=(i+1)%2; /* exit code */ Ικανοποιεί τον αµοιβαίο αποκλεισµό, αλλά όχι την πρόοδο (γιατί;) Σελίδα 41

42 Αλγόριθµος 2 (δύο ιεργασίες) Κοινή µεταβλητή boolean flag[2] (η διεργασία P i εισέρχεται στο ΚΤ µόνο όταν flag[i]= true): shared vars: boolean flag[2]={false,false; process body: while (1) { flag[i]=true; /* entry code */ while (flag[(i+1)%2]) { do_critical_section(); flag[i]=false; /* exit code */ Ικανοποιεί τον αµοιβαίο αποκλεισµό, αλλά όχι την πρόοδο (γιατί;) Σελίδα 42

43 Αλγόριθµος 3 (δύο ιεργασίες) Συνδυασµός των δύο προηγουµένων αλγορίθµων: shared vars: int turn=0; boolean flag[2]={false,false; process body: while (1) { flag[i]=true; turn=(i+1)%2; /* entry code */ while ( (flag[(i+1)%2]) && (turn=(i+1)%2) ) { do_critical_section(); flag[i]=false; /* exit code */ Ικανοποιεί και τις τρεις απαιτήσεις (γιατί;) Σελίδα 43

44 Αλγόριθµός για πολλές ιεργασίες Ο Αλγόριθµος Bakery Πριν την είσοδό της στο κρίσιµο τµήµα, µια διεργασία P i λαµβάνει έναν αριθµό σειράςt i. Το σύστηµα αριθµοδότησης δηµιουργεί αριθµούς σειράς µε αύξουσα σειρά αρίθµησης, π.χ., 1,2,3,3,3,4,5 Η διεργασία µε τονµικρότερο αριθµό σειράς εισέρχεται στο κρίσιµο τµήµα Αν οι διεργασίες P i και P j έχουν τον ίδιο αριθµό σειράς, αν i < j, τότε εξυπηρετείται πρώτα η P i, αλλιώς πρώτα η P j Συµβολισµοί: (a,b) before (c,d) <=> ((a < c) ((a = c) && (b < d)) max (a 0,, a n-1 ) = k, k a i για i =0,, n 1 Σελίδα 44

45 Ο Αλγόριθµος Bakery (συνέχεια) shared vars: boolean choosing[n]={false,,false; int t[n]={0,,0; process body: Παραλαβή while (1) { αριθµού σειράς choosing[i] = true; Έλεγχος t[i] = max(t[0],t[1],, t[n-1])+1; προτεραιότητας choosing[i] = false; for (j=0; j<n; j++) { while (choosing[j]) { while ((t[j]!=0) && (t[j],j) before (t[i],i)) { do_critical_section(); t[i] = 0; Σελίδα 45

46 Υλικό Συγχρονισµού (Synchronization Hardware) Μερικοί επεξεργαστές υποστηρίζουν την εξής εντολή TestAndSet για τον ατοµικό έλεγχο και αλλαγή µιας θέσης µνήµης (µεταβλητής) Ησυµβολική υλοποίηση της εντολής δίνεται ως εξής: boolean TestAndSet(boolean *target) { boolean value_read = *target; *target = true; return value_read; Η εντολή εκτελείται χωρίς διακοπή (εγγυηµένα) Σελίδα 46

47 Αλγόριθµος Κρίσιµου Τµήµατος µε Χρήση της TestandSet shared vars: boolean lock=false; process body: while (1) { while (TestAndSet(&lock)) { do_critical_section(); lock = false; Σελίδα 47

48 Υλικό Συγχρονισµού (συνέχεια) Εξατοµικευµένη εναλλαγή δύο µεταβλητών void Swap(boolean *a, boolean *b) { boolean tmp; tmp = *a; *a = *b; *b = tmp; Σελίδα 48

49 Αλγόριθµος Κρίσιµου Τµήµατος µε Χρήση της Swap shared vars: boolean lock=false; process body: boolean key; while (1) { key=true; do {Swap(&lock,&key); while (key); do_critical_section(); lock = false; Σελίδα 49

50 Σηµαφόροι ή Σηµατοφορείς (Semaphores) Εργαλείο συγχρονισµού που δεν απαιτεί ενεργό αναµονή (busy waiting) της διεργασίας, εκτελώντας κάποιες εντολές σε βρόγχο Μια µεταβλητή τύπου s σηµατοφορέα µπορεί να προσπελαστεί µέσω δύο ατοµικών πράξεων wait (ή down) και signal (ή up), που µπορεί να θεωρηθεί πως υλοποιούνται ως εξής: void wait(int *s) { while (*s<=0) { *s--; void signal(int *s) { *s++; Σελίδα 50

51 Υλοποίηση Κρίσιµου Τµήµατος για n ιεργασίες µε Σηµαφόρους shared vars: semaphore s=1; process body: while (1) { wait(s); do_critical_section(); signal(s); Σελίδα 51

52 Υλοποίηση Σηµαφόρου typedef struct { int sval; /* value of semaphore */ struct procq pq;/* queue of waiting processes */ semaphore; void init(semaphore *s, int val) { s->sval=val; initq(s->pq); Σελίδα 52

53 Υλοποίηση Σηµαφόρου (συνέχεια) void wait(semaphore *s) { s->sval--; if (s->sval<0) { addq(s->pq,thisprocess()); suspend(); void signal(semaphore *s) { s->sval++; if (s->sval<==0) { resume(rmvq(s->pq)); Σελίδα 53

54 ΗΣηµαφόρος ως ένα Γενικό Εργαλείο Συγχρονισµού ιεργασία P i A signal(flag) ιεργασία P j wait(flag) B Χρήση της σηµαφόρου flag µε αρχική τιµή 0 Εκτέλεση του B στην P j µόνο αφού εκτελεστεί το A στην P i Σελίδα 54

55 Τύποι Σηµαφόρων Γενική σηµαφόρος (ή σηµαφόρος µετρητής) (general or counting semaphore) µπορεί να έχει µια οποιαδήποτε ακέραια τιµή υαδική σηµαφόρος (binary semaphore) µπορεί να παίρνει τιµές µόνο µεταξύ 0 και 1, κάτι που µπορεί να σηµαίνει ευκολότερη υλοποίηση Μια γενική σηµαφόρος µπορεί να υλοποιηθεί µε χρήσηδυαδικών σηµαφόρων Σελίδα 55

56 Υλοποίηση Γενικής Σηµαφόρου µε υαδικές Σηµαφόρους typedef struct { bin_semaphore s1,s2; int cnt; semaphore; void init(semaphore *s, int val) { bin_init(&s->s1,1); bin_init(&s->s2,0); s->cnt=val; Σελίδα 56

57 Υλοποίηση Γενικής Σηµαφόρου µε υαδικές Σηµαφόρους (συνέχεια) void wait(semaphore *s) { bin_wait(&s->s1); s->cnt--; if (s->cnt<0) { bin_signal(&s->s1); bin_wait(&s->s2); bin_signal(&s->s1); void signal(semaphore *s) { bin_wait(&s->s1); s->cnt++; if (s->cnt<=0) {bin_singal(&s->s2); else {bin_signal(&s->s1); Σελίδα 57

58 Κλασικά Προβλήµατα Συγχρονισµού Το πρόβληµα της αποθήκης πεπερασµένης χωρητικότητας (bounded-buffer problem) Το πρόβληµα αναγνωστών και εγγραφέων (readers and writers problem) Το πρόβληµα τωνσυνδαιτυµόνων φιλοσόφων (dining philosophers problem) Σελίδα 58

59 Αποθήκη Πεπερασµένης Χωρητικότητας Κοινά δεδοµένα: semaphore mutex,full,empty; Αρχικοποίηση: init(&mutex,1); init(&empty,n); init(&full,0); Σελίδα 59

60 ιεργασία Παραγωγός (producer) while (1) { παραγωγή αντικειµένου item wait(&empty); wait(&mutex); προσθήκη αντικειµένου item στην αποθήκευση signal(&mutex); signal(&full); Σελίδα 60

61 ιεργασία Καταναλωτής (consumer) while (1) { wait(&full); wait(&mutex); αποµάκρυνση αντικειµένου item από την αποθήκευση signal(&mutex); signal(&empty); κατανάλωση αντικειµένου item Σελίδα 61

62 Αναγνώστες και Εγγραφείς Κοινά δεδοµένα: semaphore mutex,write; int readers; Αρχικοποίηση: init(&mutex,1); init(&write,1); readers=0; Σελίδα 62

63 ιεργασία Εγγραφέας while (1) { wait(&write); γράψιµο δεδοµένων signal(&write); Σελίδα 63

64 ιεργασία Αναγνώστης while (1) { wait(&mutex); readers++; if (readers==1) {wait(&write); signal(&mutex); διάβασµα δεδοµένων wait(&mutex); readers--; if (readers==0) {signal(&write); signal(&mutex); Σελίδα 64

65 Οι Συνδαιτυµόνες Φιλόσοφοι Κοινά δεδοµένα: semaphore fork[n]; Αρχικοποίηση: init(&fork[0],1); init(&fork[1],1); init(&fork[n-1],1); Σελίδα 65

66 Ο Φιλόσοφος i while (1) { wait(&fork[i]); wait(&fork[(i+1)%n); επιτέλους τρώµε! signal(&fork[i]); signal(&fork[(i+1)%n]); ας σκεφτούµε λιγάκι Υπάρχει περίπτωση ο ένας φιλόσοφος να περιµένει τον άλλο σε κύκλο; Σελίδα 66

67 Κρίσιµες Περιοχές (Critical Regions) οµή υψηλού επιπέδου για την υποστήριξη του συγχρονισµού κρίσιµων τµηµάτων, ως εξής: Μια κοινή µεταβλητή v τύπου T ορίζεται ως: T (shared) v; Η v µπορεί να προσπελαστεί µόνο µέσω της εντολής region: region v when B do S; όπου η διεργασία ελέγχει την συνθήκη B και αν είναι αληθής, τότε εκτελεί την οµάδα εντολών S, διαφορετικά ανατέλλεται µέχρι η συνθήκη B να γίνει αληθής. Τόσο ο έλεγχος της συνθήκης B όσοκαιηεκτέλεσητηςοµάδας εντολών S γίνεται ατοµικά (το σύστηµα εγγυάται πως δεν παρεµβάλλονται άλλες διεργασίες σε αυτή την περιοχή). Σελίδα 67

68 Αποθήκη Πεπερασµένης Χωρητικότητας µε Κρίσιµες Περιοχές typedef struct { item slots[n]; int in,out,cnt; buffer; buffer (shared) b; b.cnt=0; b.in=b.out=0; slots[n-1] slots[0] direction of in, out Σελίδα 68

69 Αποθήκη Πεπερασµένης Χωρητικότητας (συνέχεια) ιεργασία Παραγωγός while (1) { item=produce(); region b when (b.cnt<n) { b.slots[b.in]=item; b.in=(b.in+1)%n; b.cnt++; ιεργασία Καταναλωτής while (1) { region b when (b.cnt>0) { item=b.slots[b.out]; b.out=(b.out+1)%n; b.cnt--; consume(item); Σελίδα 69

70 Υλοποίηση της οµής region µε Σηµαφόρους Συσχετισµός µε τηνκρίσιµη περιοχή, των ακόλουθων µεταβλητών: semaphore mx, q1, q2; int n1, n2; Ηαµοιβαίως αποκλειόµενη πρόσβαση στο κρίσιµο τµήµα παρέχεται από τη mx Αν µια διεργασία δεν µπορεί να εισέλθει στην κρίσιµη περιοχή λόγω του ότι η συνθήκη B είναι ψευδής, αρχικά περιµένει στη σηµαφόρο q1, και µετά στη σηµαφόρο q2 πριν µπορέσει να επανεξετάσει την τιµή τηςβ. Καταγραφή του πλήθους των διεργασιών που περιµένουν στις q1 και q2, γίνεται µε τηn1 και τη n2 Υποθέτουµε διάταξηfifo στην αναµονή των διεργασιών για µια σηµαφόρο Σελίδα 70

71 Υλοποίηση οµής region (συνέχεια) typedef struct { semaphore mx,q1,q2; int n1,n2; region; void init(region *r) { init(&r->mx,1); init(&r->q1,0); init(&r->q2,0); n1=n2=0; Σελίδα 71

72 Υλοποίηση οµής region (συνέχεια) void enter(region *r, Condition B, Code S) { wait(&r->mx); while (!B) { r->n1++; if (r->n2>0) {signal(&r->q2); else {signal(&r->mx); wait(&r->q1); r->n1--; r->n2++; if (r->n1>0){signal(&r->q1); else {signal(&r->q2); wait(&r->q2); r->n2--; S; if (r->n1>0) {signal(&r->q1); else if (r->n2>0) {signal(&r->q2); else {signal(&r->mx); Σελίδα 72

73 Ελεγκτές/Παρακολουθητές (Monitors) οµή υψηλού επιπέδου που επιτρέπει την ασφαλή πρόσβαση ενός αφηρηµένου τύπου δεδοµένων µεταξύ ταυτόχρονων διεργασιών monitor monitor-name { δηλώσεις κοινών µεταβλητών procedure P1 ( ) { procedure P2 ( ) { procedure Pn ( ) { { κώδικας αρχικοποίησης Οι ρουτίνες πρόσβασης Pi εκτελούνται συγχρονισµένα, µε εγγυηµένο τον αµοιβαίο αποκλεισµό ανάµεσα σε διεργασίες Σελίδα 73

74 Ελεγκτές/Παρακολουθητές (συνέχεια) Για να επιτραπεί σε µια διεργασία να περιµένει µέσα σε έναν ελεγκτή, πρέπει να δηλωθεί αντίστοιχη µεταβλητή συνθήκης (condition variable): condition x; Μπορεί να χρησιµοποιηθεί µόνο µε τις λειτουργίες wait και signal Ηλειτουργίαx.wait() σηµαίνει ότι η διεργασία αναστέλλεται Ηλειτουργίαx.signal() εκκινεί (µόνο) µια από τις διεργασίες που έχουν ανασταλεί, αν υπάρχει (διαφορετικά δεν κάνει τίποτα) Ηλειτουργίαx.signalAll() εκκινεί όλες τις διεργασίες (αν υπάρχουν) που έχουν ανασταλεί µέσω της µεταβλητής x Σελίδα 74

75 Αναµονή µε Προτεραιότητες Αναµονή υπό συνθήκη (conditional-wait): x.wait(c); c ακέραιος που ελέγχεται όταν εκτελείται η λειτουργία wait Ητιµή τουc (αριθµός προτεραιότητας) αποθηκεύεται µε το όνοµα της διεργασίας που ανεστάλη Ηεκτέλεσητηςx.signal, ενεργοποιεί τη διεργασία µε τη µικρότερη προτεραιότητα Σελίδα 75

76 Σχηµατική Θεώρηση ενός Ελεγκτή Σελίδα 76

77 Ελεγκτής µε ΜεταβλητέςΣυνθήκης Σελίδα 77

78 Συνδαιτυµόνες Φιλόσοφοι µε Ελεγκτή monitor dining_phils { enum {thinking,hungry,eating state[n]; condition self[n]; void pickup(int i); void putdown(int i); void test(int i); void init() { int i; for (i=0; i<5; i++) {state[i] = thinking; Σελίδα 78

79 Συνδαιτυµόνες Φιλόσοφοι (συνέχεια) void pickup(int i) { state[i] = hungry; test[i]; if (state[i]!= eating) { self[i].wait(); void putdown(int i) { state[i] = thinking; test((i+n-1)%n); /* test left */ test((i+1)%n); /* test right */ Σελίδα 79

80 Συνδαιτυµόνες Φιλόσοφοι (συνέχεια) void test(int i) { if ( (state[i] == hungry) && (state[(i+n-1)%5]!= eating) && (state[(i+1)%n]!= eating) ) { state[i] = eating; self[i].signal(); Σελίδα 80

81 Υλοποίηση Ελεγκτών µε Σηµαφόρους Για κάθε ελεγκτή, καθολικές µεταβλητές: semaphore mutex,next; int next-count; Επιπλέον, για κάθε µεταβλητή συνθήκης, µεταβλητές: semaphore x-sem; int x-count; Αρχικοποίηση του ελεγκτή: init(&mutex,1); init(&next,0); next-count=0; Και αρχικοποίηση για κάθε µεταβλητή συνθήκης: init(&x-sem); x-count=0; Σελίδα 81

82 Υλοποίηση Ελεγκτών µε Σηµαφόρους (συνέχεια) Για κάθε ρουτίνα πρόσβασης Pi, το σώµα της αντικαθίσταται µε : procedure Pi ( ) { wait(&mutex); κυρίως σώµα τηςpi if (next-count > 0) {signal(&next); else {signal(&mutex); Σελίδα 82

83 Υλοποίηση Ελεγκτών µε Σηµαφόρους (συνέχεια) Ηλειτουργίαx.wait() µπορεί να υλοποιηθεί ως εξής: x-count++; if (next-count > 0) { signal(&next); else { signal(&mutex); wait(&x-sem); x-count--; Σελίδα 83

84 Υλοποίηση Ελεγκτών µε Σηµαφόρους (συνέχεια) Ηλειτουργίαx.signal() µπορεί να υλοποιηθεί ως εξής: if (x-count > 0) { next-count++; signal(&x-sem); wait(&next); next-count--; Σελίδα 84

85 Υλοποίηση Ελεγκτών µε Σηµαφόρους (συνέχεια) Ηλειτουργίαx.signalAll() µπορεί να υλοποιηθεί ως εξής: if (x-count > 0) { next-count++; for (c=x-count; c > 0; c--) { signal(&x-sem); wait(&next); next-count--; Σελίδα 85

86 Αδιέξοδο και Λιµοκτονία (Deadlock and Starvation) Αδιέξοδο δύο ή περισσότερες διεργασίες περιµένουν απεριόριστα για ένα γεγονός που µπορεί να προκληθεί µόνο από µια από τις δυο Έστω S και Q δύο σηµαφόροι µε αρχικήτιµή 1 P 0 P 1 wait(s); wait(q); wait(q); M signal(s); signal(q) wait(s); M signal(q); signal(s); Λιµοκτονία απεριόριστη αναµονή. Μια διεργασία µπορεί να µην φύγει από την ουρά της σηµαφόρου στην οποία έχει ανασταλεί Σελίδα 86

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΑΔΙΕΡΓΑΣΙΑΚΗ ΕΠΙΚΟΙΝΩΝΙΑ ΣΥΓΧΡΟΝΙΣΜΟΣ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διάλεξη 4 ΔΙΑΔΙΕΡΓΑΣΙΑΚΗ ΕΠΙΚΟΙΝΩΝΙΑ ΣΥΓΧΡΟΝΙΣΜΟΣ Οι διαφάνειες έχουν καθαρά επικουρικό χαρακτήρα στην παρουσίαση των διαλέξεων του μαθήματος. Δεν αντικαθιστούν σε καμία περίπτωση

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

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Μηχανισμοί και προγραμματιστικές δομές συγχρονισμού. Προβλήματα συγχρονισμού (και λύσεις)

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

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

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

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

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

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

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

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

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

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

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

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

Λειτουργικά Συστήματα Η/Υ Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 4 «Αρχιτεκτονικές ΛΣ» Διδάσκων: Δ Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας 1 1. Μονολιθικά συστήματα Αρχιτεκτονικές ΛΣ 2. Στρωματοποιημένη αρχιτεκτονική 3. Αρχιτεκτονική

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

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

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

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

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

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

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

CSLab National Technical University of Athens

CSLab National Technical University of Athens http://www.cslab.ece.ntua.gr/courses/os CSLab National Technical University of Athens #define NEXT(x) ((x + 1) % N) item_t buffer[n]; int in=0, out=0, count=0; #define NEXT(x) ((x + 1) % N) item_t buffer[n];

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

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

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

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Μάθηµα 1 Ο ρόλος του ΛΣ Υλικό Υπολογιστικό σύστηµα Λειτουργικό σύστηµα Λογισµικό Προγράµµατα εφαρµογής Στόχοι του ΛΣ Χρήστες ιευκόλυνση των χρηστών ιευκόλυνση

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

Κρίσιμη Περιοχή Υπό Συνθήκη (Conditional Critical Regions) Ταυτόχρονος Προγραμματισμός 1

Κρίσιμη Περιοχή Υπό Συνθήκη (Conditional Critical Regions) Ταυτόχρονος Προγραμματισμός 1 Κρίσιμη Περιοχή Υπό Συνθήκη (onditional ritical Regions) Ταυτόχρονος Προγραμματισμός 1 lalis@inf.uth.gr Πέρα από ελεγκτές Ο ελεγκτής είναι χρήσιμο εργαλείο συγχρονισμού παρέχει στον προγραμματιστή εγγυημένο

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

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

Διεργασίες και Νήματα (2/2) Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Διεργασίες και Νήματα (2/2) Λειτουργικά Συστήματα Υπολογιστών 7ο Εξάμηνο, 2016-2017 Νήματα

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

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

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

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

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

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

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

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

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

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

Αμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1

Αμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1 Αμοιβαίος αποκλεισμός με κοινή μνήμη 1 lalis@inf.uth.gr Το πρόβλημα Έστω ότι δύο η περισσότερα νήματα επιθυμούν να προσπελάσουν έναν κοινό πόρο, που όμως δεν μπορεί να χρησιμοποιηθεί ταυτόχρονα Η χρήση

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

Υλοποίηση Σηματοφόρων

Υλοποίηση Σηματοφόρων Υλοποίηση Σηματοφόρων 1 lalis@inf.uth.gr Υλοποίηση σε επίπεδο συστήματος Εσωτερική κατάσταση: Ένας ακέραιος για την αποθήκευση της τιμής του σηματοφόρου Μια ουρά αναμονής που τοποθετείται ένα νήμα όταν

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

Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation)

Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation) Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation) Για τη δηµιουργία των διαφανειών έχει χρησιµοποιηθεί υλικό από τις διαφάνειες παραδόσεων που βασίζονται στο βιβλίο, Silberschatz, Galvin and Gagne,

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

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

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

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

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

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

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΝΗΜΑΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διάλεξη 3 ΝΗΜΑΤΑ Οι διαφάνειες έχουν καθαρά επικουρικό χαρακτήρα στην παρουσίαση των διαλέξεων του μαθήματος. Δεν αντικαθιστούν σε καμία περίπτωση την παρακάτω βιβλιογραφία που αποτελεί

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

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

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

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

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

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

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

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

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

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

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

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

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

Αδιέξοδα (Deadlocks)

Αδιέξοδα (Deadlocks) Αδιέξοδα (Deadlocks) Περίληψη Αδιέξοδα (deadlocks) Τύποι πόρων (preemptable non preemptable) Μοντελοποίηση αδιεξόδων Στρατηγικές Στρουθοκαµηλισµός (ostrich algorithm) Ανίχνευση και αποκατάσταση (detection

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

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

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

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

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

Κλασικά Προβλήματα Συγχρονισμού (με σηματοφόρους) Ταυτόχρονος Προγραμματισμός 1 Κλασικά Προβλήματα Συγχρονισμού (με σηματοφόρους) 1 lalis@inf.uth.gr Παραγωγός-Καταναλωτής (με σηματοφόρους) 2 lalis@inf.uth.gr Παραγωγός-καταναλωτής Νήματα που παράγουν / καταναλώνουν δεδομένα τα οποία

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

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

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

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

Αμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1

Αμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1 Αμοιβαίος αποκλεισμός με κοινή μνήμη 1 lalis@inf.uth.gr Το πρόβλημα Έστω ότι δύο η περισσότερα νήματα επιθυμούν να προσπελάσουν έναν κοινό πόρο, που όμως δεν μπορεί να χρησιμοποιηθεί ταυτόχρονα Η χρήση

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

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

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

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

Συγχρονισμός & σηματοφόροι. Προγραμματισμός II 1

Συγχρονισμός & σηματοφόροι. Προγραμματισμός II 1 Συγχρονισμός & σηματοφόροι Προγραμματισμός II 1 lalis@inf.uth.gr Ταυτόχρονη εκτέλεση Οι διεργασίες εκτελούνται ταυτόχρονα μεταξύ τους Ο προγραμματιστής δεν ελέγχει την εναλλαγή Τι γίνεται αν δύο ή περισσότερες

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

Αμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1

Αμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1 Αμοιβαίος αποκλεισμός με κοινή μνήμη 1 lalis@inf.uth.gr Το πρόβλημα Έστω ότι δύο η περισσότερα νήματα επιθυμούν να προσπελάσουν έναν κοινό πόρο, που όμως δεν μπορεί να χρησιμοποιηθεί ταυτόχρονα Η χρήση

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

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

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

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

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

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

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

Νήµαταστην Java. Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων. Κατανεµηµένα Συστήµατα 11-1

Νήµαταστην Java. Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων. Κατανεµηµένα Συστήµατα 11-1 Νήµαταστην Java Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων Κατανεµηµένα Συστήµατα 11-1 Νήµαταστην Java γεννηθείσα notify notifyall έτοιµη start εκπνοή

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

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

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

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

Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation)

Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation) Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation) Εισαγωγή Μοντέλο συστήματος Χαρακτηρισμός και ορισμός κατάστασης αδιεξόδου Μέθοδοι χειρισμού αδιεξόδων Αποτροπή αδιεξόδου (Deadlock Prevention) Αποφυγή

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Νήµατα. Πολύ σηµαντικό

Νήµατα. Πολύ σηµαντικό Νήµατα Πολύ σηµαντικό 1 Νήµατα (συν.) Σηµαντικό 2 Νήµατα vs ιεργασίες Νήµατα ιεργασίες Χώρος εδοµένων Περιγραφητές Αρχείων fork exit exec Σήµατα Κοινός. Ότι αλλάζει το 1 νήµα το βλέπουν/ αλλάζουν και τα

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

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

Συγχρονισµός: Αδιέξοδο & Παρατεταµένη Στέρηση Συγχρονισµός: Αδιέξοδο & Παρατεταµένη Στέρηση Κεφάλαιο 6 Αδιέξοδο Μόνιµη αναµονή ενός συνόλου διεργασιών οι οποίες ανταγωνίζονται για πόρους του συστήµατος ή για να επικοινωνήσουν µεταξύ τους εν υπάρχει

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

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

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

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

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

Ενότητα 2 (Κεφάλαιο 3) Περιγραφή και Έλεγχος Διεργασιών. Περιεχόμενα. Ανάγκη ύπαρξης διεργασιών 1 ΕΠΛ222: Λειτουργικά Συστήματα (μετάφραση στα ελληνικά των διαφανειών του βιβλίου Operating Systems: Internals and Design Principles, 8/E, William Stallings) Ενότητα 2 (Κεφάλαιο 3) Περιγραφή και Έλεγχος

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

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

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

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

Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation)

Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation) Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation) Το Πρόβλημα του Αδιεξόδου Ένα σύνολο από διεργασίες σε αναμονή, όπου η κάθε μια κατέχει έναν αριθμό από πόρους και περιμένει να αποκτήσει και έναν

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

Συγχρονισμός. Συστήματα Παράλληλης Επεξεργασίας 9ο εξάμηνο ΣΗΜΜΥ ακ. έτος CSLab. Κορνήλιος Κούρτης

Συγχρονισμός. Συστήματα Παράλληλης Επεξεργασίας 9ο εξάμηνο ΣΗΜΜΥ ακ. έτος CSLab. Κορνήλιος Κούρτης Συγχρονισμός Συστήματα Παράλληλης Επεξεργασίας 9ο εξάμηνο ΣΗΜΜΥ ακ. έτος 2009-2010 CSLab National Technical University of Athens Κορνήλιος Κούρτης kkourt@cslab.ece.ntua.gr Εργαστήριο Υπολογιστικών Συστημάτων

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

Ασύγχρονο Σύστηµα ιαµοιραζόµενης Μνήµης Το σύστηµα περιέχει n διεργασίες p 0,, p n-1 και m καταχωρητές R 0,, R m-1. Κάθε διεργασία µοντελοποιείται ως

Ασύγχρονο Σύστηµα ιαµοιραζόµενης Μνήµης Το σύστηµα περιέχει n διεργασίες p 0,, p n-1 και m καταχωρητές R 0,, R m-1. Κάθε διεργασία µοντελοποιείται ως Αµοιβαίος Αϖοκλεισµός Παναγιώτα Φατούρου Κατανεµηµένα Συστήµατα 1 Ασύγχρονο Σύστηµα ιαµοιραζόµενης Μνήµης Το σύστηµα περιέχει n διεργασίες p 0,, p n-1 και m καταχωρητές R 0,, R m-1. Κάθε διεργασία µοντελοποιείται

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη Εισαγωγή στη Java, Μέρος Γ Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού για Δίκτυα και Τηλεπικοινωνίες Χειμερινό Εξάμηνο 2017-2018 Διάλεξη Εισαγωγή στη Java, Μέρος Γ Νήματα (Threads) στην Java Συγχρονισμός Producer-Consumer

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

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

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

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

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

Λειτουργικά Συστήματα Η/Υ Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 6 «Αδιέξοδο» Διδάσκων: Δ. Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας 1 Αδιέξοδο 1. Ορισμοί είδη πόρων 2. Γράφοι εκχώρησης πόρων 3. Συνθήκες αδιεξόδου 4. Προσεγγίσεις αδιεξόδου

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δομές ελέγχου ροής προγράμματος

Δομές ελέγχου ροής προγράμματος Δομές ελέγχου ροής προγράμματος Υπάρχουν δύο είδη δομών ελέγχου ροής (control flow): Οι δομές επιλογής και Οι δομές επανάληψης Δομές ελέγχου ροής προγράμματος Είδος δομής Δομές επιλογής Δομή ελέγχου ροής

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

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

Το λειτουργικό σύστημα. Προγραμματισμός II 1 Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή η εφαρμογή είναι γνωστή εκ των προτέρων περιορισμένοι υπολογιστικοί

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

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

ιεργασίες και Επεξεργαστές στα Κατανεµηµένων Συστηµάτων ιεργασίες και Επεξεργαστές στα Κατανεµηµένων Συστηµάτων Μαρία Ι. Ανδρέου ΗΜΥ417, ΗΜΥ 663 Κατανεµηµένα Συστήµατα Χειµερινό Εξάµηνο 2006-2007 Τµήµα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήµιο

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

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

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

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

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

Λειτουργικά συστήματα πραγματικού χρόνου Λειτουργικά συστήματα πραγματικού χρόνου Τι είναι λειτουργικό σύστημα πραγματικού χρόνου; Λειτουργικό Σύστημα Πραγματικού Χρόνου (ΛΣΠΧ) είναι ένα λειτουργικό σύστημα που προορίζεται για εφαρμογές πραγματικού

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 9. Ταυτόχρονος προγραμματισμός και νήματα. 9.1 Εισαγωγή

ΚΕΦΑΛΑΙΟ 9. Ταυτόχρονος προγραμματισμός και νήματα. 9.1 Εισαγωγή ΚΕΦΑΛΑΙΟ 9 Ταυτόχρονος προγραμματισμός και νήματα Σύνοψη Σε αυτό το κεφάλαιο πραγματευόμαστε τον ταυτόχρονο προγραμματισμό με τη χρήση νημάτων. Η έμφαση είναι στην κατανόηση βασικών λειτουργιών των νημάτων

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

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

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

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

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

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

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

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

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

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

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

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

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

Ποια ιδιότητα αϖό τις δύο τελευταίες είναι ϖιο ισχυρή;

Ποια ιδιότητα αϖό τις δύο τελευταίες είναι ϖιο ισχυρή; Το Πρόβληµα του Αµοιβαίου Αϖοκλεισµού Τµήµατα Κώδικα Ο χρήστης που την τρέχουσα χρονική στιγµή προσβαίνει τον πόρο βρίσκεται στο κρίσιµο τµήµα του. Χρήστες που την τρέχουσα χρονική στιγµή δεν ενδιαφέρονται

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

Ενότητα 4 (Κεφάλαιο 5) Συντρέχων Προγραμματισμός

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

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

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

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

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

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

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

ΣυγχρονισµόςσεΣυστήµατα ΠολλαπλώνΝηµάτων

ΣυγχρονισµόςσεΣυστήµατα ΠολλαπλώνΝηµάτων ΣυγχρονισµόςσεΣυστήµατα ΠολλαπλώνΝηµάτων Συστήµατα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστηµάτων ΕΜΠ Κορνήλιος Κούρτης kkourt@cslab.ece.ntua.gr p. 1 Περιβάλλον Πολλαπλών Νηµάτων Threads T0

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

Κεφάλαιο 4 Διεργασίες Β Τάξη ΕΠΑΛ

Κεφάλαιο 4 Διεργασίες Β Τάξη ΕΠΑΛ Κεφάλαιο 4 Διεργασίες Β Τάξη ΕΠΑΛ Καθ. Παπαδάκη Αν. Λειτουργικά Συστήματα 1 Περιγραφή Διεργασίας Στους υπολογιστές που έχουν μια μόνο ΚΜΕ, σε κάθε χρονική στιγμή μπορεί να εκτελείται μια μόνο εντολή γλώσσας

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