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

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

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

Transcript

1 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) ; } 1

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

3 Filter algorithm: Peterson's algorithm for more than two processes ( The filter algorithm generalizes Peterson's algorithm to N > 2 processes level : array of N integers last_to_enter : array of N 1 integers The level variables take on values up to N 1, each representing a distinct "waiting room" before the critical section. Processes advance from one room to the next, finishing in room N 1 which is the critical section. Specifically, to acquire a lock, To enter critical region: for l from 0 to N 1 exclusive level[i] l last_to_enter[l] i while last_to_enter[l] = i and there exists k i, such that level[k] l wait To exit the critical section, process i sets level[i] to 1. 3

4 Λύση του Lamport (Bakery Algorithm) Στην ενότητα αυτή παρουσιάζεται µια δίκαιη λύση στο πρόβληµα του αµοιβαίου αποκλεισµού για n διεργασίες 0,..., n-1. Η λύση προτάθηκε από τον Lamport και ονοµάζεται Αλγόριθµος του Αρτοπωλείου (Bakery Algorithm). Yιοθετεί το σύστηµα εξυπηρέτησης πελατών σε ένα αρτοπωλείο. 4

5 Bakery Algorithm (συν.) Μια διεργασία που θέλει να εισέλθει στο κρίσιµο τµήµα της, επιλέγει ένα εισιτήριο. Στο κρίσιµο τµήµα εισέρχεται κάθε φορά η διεργασία µε το µικρότερο εισιτήριο ανάµεσα σε εκείνες που επιθυµούν να εισέλθουν στο κρίσιµο τµήµα τους. Το εισιτήριο µιας διεργασίας είναι ένα ζεύγος αριθµών. Ο πρώτος από τους αριθµούς είναι ένας ακέραιος που επιλέγεται από τη διεργασία και ο δεύτερος είναι το αναγνωριστικό της διεργασίας. Ορίζουµε τη σχέση < ανάµεσα σε δύο ζεύγη αριθµών ως εξής: (x,y) < (v,w) αν και µόνο αν( x < v) ή (x = v και y < w). 5

6 Bakery Algorithm (συν.) Κοινές Μεταβλητές boolean choosing[n]; int number[n]; Κώδικας για τη διεργασία i choosing[i] = TRUE; number[i] = max{number[1],..., number[n-1]} + 1; choosing[i] = FALSE; for j = 0 to n-1 do begin while (choosing[j] == TRUE) do noop; while ((number[j]!= 0) AND ((number[i], i) > (number[j], j))) do noop; end <κρίσιµο τµήµα>; number[i] = 0; <µη-κρίσιµο τµήµα>; 6

7 Bakery Algorithm (συν.) Κάθε διεργασία i, 0 i<n, επιλέγει αρχικά έναν αριθµό. Η διεργασία διαβάζει τους αριθµούς όλων των άλλων διεργασιών και επιλέγει ο αριθµός της να είναι το µέγιστο των αριθµών αυτών συν ένα. Προσέξτε ότι αυτό το κοµµάτι κώδικα µπορεί να εκτελεστεί ταυτόχρονα από περισσότερες της µιας διεργασίες και άρα είναι πιθανό περισσότερες από µια διεργασίες να πάρουν τον ίδιο αριθµό. Αφού τα εισιτήρια πρέπει να είναι µοναδικά, οι διεργασίες χρησιµοποιούν ως εισιτήριο το ζεύγος που αποτελείται από τον αριθµό που διάλεξαν (που δεν είναι µοναδικός) και το αναγνωριστικό τους (που είναι µοναδικό). Έτσι, το εισιτήριο κάθε διεργασίας είναι τελικά µοναδικό. Όσο κάθε διεργασία i επιλέγει τον αριθµό της, η µεταβλητή choosing[i] έχει την τιµή TRUE. 7

8 Bakery Algorithm (συν.) 8 Όταν µια διεργασία i επιλέξει εισιτήριο εκτελεί τα εξής. Για κάθε άλλη διεργασία j, αν η j έχει δηλώσει την πρόθεση της να επιλέξει αριθµό (έχοντας θέσει τη µεταβλητή choosing[j] στην τιµή TRUE), η i περιµένει την j να τελειώσει µε την επιλογή του αριθµού της. Στη συνέχεια, ελέγχει αν το εισιτήριο της j είναι µεγαλύτερο από εκείνο της i. Αν δεν ισχύει αυτό, η i θα πρέπει να περιµένει την j να εισέλθει πριν από αυτήν στο κρίσιµο τµήµα. Αν το εισιτήριο της i βρεθεί να είναι το µικρότερο από τα εισιτήρια των υπολοίπων διεργασιών που ενδιαφέρονται να εισέλθουν στο κρίσιµο τµήµα τους, η i αποφασίζει πως είναι η σειρά της να εισέλθει στο κρίσιµο τµήµα. Όταν η i εξέλθει από το κρίσιµο τµήµα µεταβάλλει την τιµή της number[i] σε 0 για να υποδηλώσει πως δεν εκτελεί πλέον το κρίσιµο τµήµα της.

9 2.3 Επικοινωνία Διεργασιών Λύση με Test και Set Lock (TSL) (καλύτερο απο απενεργοποίηση διακοπών για συστήματα με >1 επεξεργαστές) Πολλοί Η/Υ παρέχουν εντολές 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, έτσι διασφαλίζεται ο αμοιβαίος αποκλεισμός. 9

10 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. Συνεπώς πρώτα enter_region και μετά leave_region. Η λύση είναι η ίδια με την lock variables; Γιατί δεν έχουμε τα ίδια προβλήματα; Το πρόβλημα της λύσης με τα lock variables δεν υφίσταται εδώ επειδή το hardware δεν επιτρέπει σε δύο process να διαβάσουν την τιμή του flag πριν κανένα από τα δυο την κάνει 1. 10

11 XCHG instruction XCHG a,b exchanges a & b Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

12 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 για πολύ. 12

13 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". 13

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

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

16 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() } } 16

17 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 κοιμούνται χωρίς να υπάρχει η δυνατότητα αποστολής σήματος αφύπνισης. 17

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

19 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 και το ξυπνάει και το s ξαναγίνεται 0. Oλα αυτά που εκτελούνται στο UP() είναι επίσης atomic. Μπορούν να υλοποιηθούν ως κλήσεις συστήματος, απενεργοποίηση διακοπων, TSL, XCHG. 19

20 Σηματοφόροι Οι σηματοφόροι (semaphores) προσφέρονται ως εργαλεία συγχρονισμού αμοιβαίου αποκλεισμού από όλα τα σύγχρονα λειτουργικά συστήματα Ο χρήστης μπορεί να τους ενσωματώσει στα προγράμματά του ως συναρτήσεις βιβλιοθήκης συστήματος (system calls) Οι λεπτομέρειες της υλοποίησης/χρήσης τους μπορεί να διαφέρουν ανάλογα με το ΛΣ

21 Σημαφόροι Κάθε σημαφόρος s διαθέτει μια ουρά στην οποία συνδέονται οι διεργασίες που έχουν ανασταλεί λόγω της εκτέλεσης της down Μια «μπλοκαρισμένη στο σημαφόρο s διεργασία» που βρίσκεται συνδεδεμένη στη ουρά ενός σημαφόρου, μπορεί να αφυπνιστεί μετά από μια εντολή up πάνω στον σημαφόρο

22 ...Σημαφόροι... type semaphore = record count : integer; queue : ουρά διεργασιών; end; var s : semaphore; begin begin down(s) begin s.count:=s.count 1; if (s.count<0) begin τοποθέτησε τη διεργασία στην oυρά του σημαφόρου; μπλοκάρισε τη διεργασία; end; end; up(s) s.count:=s.count +1; if (s.count 0) begin πάρε μια διεργασία από την oυρά του σημαφόρου; τοποθέτησε τη διεργασία στην ουρά των έτοιμων διεργασιών ; end; end; end

23 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, αντίστοιχα. 23

24 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 ; 24

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

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

27 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 μπλοκάρει. 27

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

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

30 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() ; } } 30

31 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 τότε ξέρει ότι είναι αντίγραφο]. 31

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

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

34 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. 34

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

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

37 Barriers. Barriers are intended for synchronizing groups of processes Often used in scientific computations. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

38 Σηµαφόροι Λειτουργία up(semaphore S) Λειτουργία down(semaphore S) S = S + 1; If S==1 and there exist processes blocked unblocked and reassign 0. while (S <= 0) do noop; S = S -1; Η λειτουργία up() αυξάνει την τιµή του σηµαφόρου κατά 1. Η λειτουργία down() ελέγχει επαναληπτικά την τιµή του S µέχρι να ανακαλύψει ότι αυτή είναι µεγαλύτερη του µηδενός. Σε αυτή την περίπτωση την µειώνει κατά 1 και τερµατίζει. Τροποποιήσεις του S θα πρέπει να είναι εγγυηµένο πως εκτελούνται ατοµικά. Επίσης, ο έλεγχος της while στην down() και η ενδεχόµενη µείωση της τιµής του S που ακολουθεί θα πρέπει να εκτελούνται επίσης ατοµικά. 38

39 Σηµαφόροι Οι λειτουργίες up() και down() υλοποιούνται ως κλήσεις συστήµατος. Συνήθως, το ΛΣ χρησιµοποιεί µια λίστα για κάθε σηµαφόρο στην οποία τοποθετεί όλες τις διεργασίες που πρέπει να απενεργοποιηθούν πάνω στο σηµαφόρο. Αν αργότερα το ΛΣ αναλάβει την εκτέλεση µιας ή περισσότερων up() λειτουργιών και µετά το πέρας τους διαπιστώσει ότι ο σηµαφόρος έχει πλέον τιµή µεγαλύτερη του µηδενός, διαλέγει αυθαίρετα µια από τις διεργασίες της λίστας, µειώνει την τιµή του σηµαφόρου κατά 1 και επιστρέφει επιβεβαίωση περάτωσης της λειτουργίας down() στη διεργασία που επιλέχθηκε για να συνεχίσει την εκτέλεσή της. Αυτό γίνεται επαναληπτικά µέχρι η τιµή του σηµαφόρου να ξαναγίνει 0 ή η λίστα απενεργοποιηµένων διεργασιών να αδειάσει. 39

40 Αμοιβαίος Αποκλεισµός µε Σηµαφόρους Σηµαφόροι semaphore mutex; /* αρχική τιµή 1 */ Κώδικας που εκτελεί κάθε διεργασία repeat begin down(mutex); <κρίσιµο τµήµα>; up(mutex); <µη-κρίσιµο τµήµα>; end forever; 40

41 Αμοιβαίος Αποκλεισµός µε Σηµαφόρους Η λύση χρησιµοποιεί έναν σηµαφόρο mutex που έχει αρχική τιµή 1. Έστω ότι δύο ή περισσότερες διεργασίες επιθυµούν να εισέλθουν στο κρίσιµο τµήµα τους. Ας θυµηθούµε ότι η down() εκτελείται ατοµικά. Η πρώτη διεργασία, έστω Α, που θα την καλέσει, θα µειώσει την τιµή του σηµαφόρου σε 0 και θα εισέλθει στο κρίσιµο τµήµα της. Όλες οι υπόλοιπες διεργασίες που θα εκτελέσουν την down() όσο η Α βρίσκεται στο κρίσιµο τµήµα της, θα βρουν την τιµή του mutex ίση µε 0 και θα απενεργοποιηθούν. Μόνο όταν αργότερα η Α εξέλθει από το κρίσιµο τµήµα της και εκτελέσει την up(), η τιµή του σηµαφόρου θα αλλάξει σε 1 και έτσι θα επιτραπεί σε µια ακόµη διεργασία να εισέλθει στο κρίσιµο τµήµα της (οι υπόλοιπες θα βρουν και πάλι την τιµή του σηµαφόρου ίση µε 0 και θα απενεργοποιηθούν για άλλη µια φορά). Έτσι, µόνο µια διεργασία µπορεί να βρίσκεται κάθε χρονική στιγµή στο κρίσιµο τµήµα της. εν είναι δύσκολο να συµπεράνουµε ότι η λύση αυτή ικανοποιεί και τη συνθήκη προόδου. Εποµένως, η λύση είναι σωστή στο πρόβληµα του αµοιβαίου αποκλεισµού. Η απλότητα της λύσης αυτής οφείλεται στην υπόθεση ότι το 41 σύστηµα µας παρέχει ένα ισχυρό εργαλείο συγχρονισµού, όπως οι σηµαφόροι.

42 ΣΥΓΧΡΟΝΙΣΜΟΣ ΣΗΜΑΦΟΡΩΝ ΣΕ ΔΙΑΓΡΑΜΜΑ ΔΙΕΡΓΑΣΙΩΝ Χρησιμοποιώντας σημαφόρους, κατασκευάστε ένα πρόγραμμα που θα αποτελείται από τις διεργασίες P1, P2, P3 και P4. Αρχικά όλες οι διεργασίες, εκτός από την P1, είναι μπλοκαρισμένες. Η P1 εκτελείται πρώτη, αφυπνίζει την P2 και μπλοκάρεται. Η P2 αφυπνίζει την P3 και την P4, και έπειτα η P2 μπλοκάρεται. Όταν η P3 και ή P4 αφυπνιστεί, θα αφυπνίσουν την P1 και αμέσως μετά θα μπλοκαριστούν. Η παραπάνω διαδικασία θα επαναλαμβάνεται συνεχώς. Απάντηση: Διαγραμματικά η ακολουθία εναλλαγών που περιγράφεται φαίνεται στο ακόλουθο σχήμα συγχρονισμού: P1 P2 P3 P4

43 ...Σημα φόροι... Συγχρονισμός... Απάντηση: Για κάθε ακμή ορίζουμε και μία δυαδική σημαφόρο. var s31, s41, s12, s23, s24 : semaphore; begin s31 := 1; s41:=1; s12 := s23 := s24 := 0; cobegin Process P1 repeat down(s31); down(s41); up(s12); forever; Process P2 repeat down(s12); up(s23); up(s24); forever; Process P3 repeat down(s23); up(s31); forever; Process P4 repeat down(s24); up(s41); forever; coend; end

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

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

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

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

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

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Κεφάλαιο 2ο: Διεργασίες ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Κεφάλαιο 2ο: Διεργασίες 1 2.1 Εισαγωγή Διεργασία: Μία από τις δύο κεντρικές έννοιες και abstractions ενός Λ.Σ. Αποτελεί ένα μοντέλο για ένα πρόγραμμα που εκτελείται Οι διεργασίες

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 9: Αλγόριθμοι Αμοιβαίου Αποκλεισμού με τη χρήση μεταβλητών Ανάγνωσης/Εγγραφής. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Διάλεξη 9: Αλγόριθμοι Αμοιβαίου Αποκλεισμού με τη χρήση μεταβλητών Ανάγνωσης/Εγγραφής. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι Διάλεξη 9: Αλγόριθμοι Αμοιβαίου Αποκλεισμού με τη χρήση μεταβλητών Ανάγνωσης/Εγγραφής ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι Τι θα δούμε σήμερα Αλγόριθμος Ψησταριάς (Bakery Algorithm) Αλγόριθμος 2- επεξεργαστών

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 10: Αλγόριθμοι Αμοιβαίου Αποκλεισμού σε περιβάλλον ανταλλαγής μηνυμάτων. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Διάλεξη 10: Αλγόριθμοι Αμοιβαίου Αποκλεισμού σε περιβάλλον ανταλλαγής μηνυμάτων. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι Διάλεξη 10: Αλγόριθμοι Αμοιβαίου Αποκλεισμού σε περιβάλλον ανταλλαγής μηνυμάτων ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι Τι θα δούμε σήμερα Αλγόριθμος Χρήση Συντονιστή Αλγόριθμος του Lamport Αλγόριθμος LeLann:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων

Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων Κ Σ Ι Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων Παναγιώτα Παναγοπούλου Άσκηση 1. Υποθέστε ότι οι διεργασίες ενός σύγχρονου κατανεμημένου συστήματος έχουν μοναδικές ταυτότητες (UIDs), γνωρίζουν ότι είναι συνδεδεμένες

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

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

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

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

Ασύγχρονο Σύστηµα ιαµοιραζόµενης Μνήµης Το σύστηµα περιέχει 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. Κάθε διεργασία µοντελοποιείται

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 8: Πρόβλημα Αμοιβαίου Αποκλεισμού. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Διάλεξη 8: Πρόβλημα Αμοιβαίου Αποκλεισμού. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι Διάλεξη 8: Πρόβλημα Αμοιβαίου Αποκλεισμού ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι Τι θα δούμε σήμερα Μοντέλο Κοινόχρηστης Μνήμης Αλγόριθμοι Αμοιβαίου Αποκλεισμού με Ισχυρούς Καταχωρητές ΕΠΛ432: Κατανεµηµένοι

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2η Εργαστηριακή Άσκηση

2η Εργαστηριακή Άσκηση 2η Εργαστηριακή Άσκηση Στα πλαίσια της παρούσας εργαστηριακής άσκησης καλείστε να προσθέσετε υποστήριξη σημαφόρων (semaphores) στο MINIX. Το υπάρχον σύστημα δεν προσφέρει τη δυνατότητα χρήσης σημαφόρων

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

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

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

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

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

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

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

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

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Συγχρονισμός (συνέχεια) Μεταβλητές υπό συνθήκη Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Συγχρονισμός μεταξύ νημάτων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Επικοινωνία Διεργασιών (ΙnterProcess Communication, IPC)

Επικοινωνία Διεργασιών (ΙnterProcess Communication, IPC) Επικοινωνία Διεργασιών (ΙnterProcess Communication, IPC) Τουλάχιστον δύο διεργασίες (ο αποστολέας και ο παραλήπτης) Σύγχρονη (synchronous) Aσύγχρονη (asynchronous) Χρονική σύνδεση Δε χρειάζεται χρονική

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

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

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

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

Προγραμματισμός συστημάτων UNIX/POSIX. Σήματα (signals)

Προγραμματισμός συστημάτων UNIX/POSIX. Σήματα (signals) Προγραμματισμός συστημάτων UNIX/POSIX Σήματα (signals) Σήματα (signals) Τα σήματα είναι «διακοπές» λογισμικού (software interrupts) οι οποίες διακόπτουν την κανονική λειτουργία μίας διεργασίας. Προκαλούνται

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

Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering. Εργαστήριο 1. Χειμερινό Εξάμηνο

Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering. Εργαστήριο 1. Χειμερινό Εξάμηνο Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering Οργάνωση και Σχεδίαση Η/Y (HY232) Εργαστήριο 1 Χειμερινό Εξάμηνο 2016-2017 Στόχοι του εργαστηρίου Εντολές

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

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

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

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

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

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Προπτυχιακό Πρόγραμμα Σπουδών Πληροφορική - ΠΛΗ 11-2005 - 06 ΕΠΑΝΑΛΗΠΤΙΚΗ ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ 8 ΙΟΥΛΙΟΥ 2006 ΜΕΡΟΣ Α'. ΕΡΩΤΗΣΕΙΣ ΠΟΛΛΑΠΛΩΝ ΕΠΙΛΟΓΩΝ [ΔΙΑΡΚΕΙΑ ΕΞΕΤΑΣΗΣ: 45 ] Σε κάθε ερώτηση απαντάτε επιλέγοντας

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

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

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

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

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Ακολουθιακός Κώδικας

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Ακολουθιακός Κώδικας «Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο 2016-2017 Ακολουθιακός Κώδικας Παρασκευάς Κίτσος http://diceslab.cied.teiwest.gr Επίκουρος Καθηγητής Tμήμα Μηχανικών Πληροφορικής ΤΕ E-mail: pkitsos@teimes.gr

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

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ Σχεδιασμός και υλοποίηση υποδομής σημείωσης διεργασιών στον

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

Υ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης

Υ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης Υ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης Αρης Ευθυμίου Λειτουργία μνήμης Η μνήμη είναι ένας πίνακας αποθήκευσης Οταν διαβάζουμε μια θέση, περιμένουμε να πάρουμε την τελευταία τιμή που έχει

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

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

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) ΙΙΙ 1 lalis@inf.uth.gr Υποθέσεις εργασίας Νήματα/διεργασίες με κοινή μνήμη Αυτόματη διακοπή/εναλλαγή νημάτων/διεργασιών (π.χ. πάνω από 1 CPU

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

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access)

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access) Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access) Μελετώντας το μάθημα θα μπορείς να ξέρεις τη λειτουργία του Polling να ξέρεις

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

Ασύγχρονο Σύστηµα ιαµοιραζόµενης Μνήµης Το σύστηµα περιέχει 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. Κάθε διεργασία µοντελοποιείται

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

Κατανεμημένα Συστήματα με Java. Ενότητα # 4: Αμοιβαίος αποκλεισμός Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

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

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

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

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) ΙΙΙ 1 lalis@inf.uth.gr Υποθέσεις εργασίας Νήματα/διεργασίες με κοινή μνήμη Αυτόματη διακοπή/εναλλαγή νημάτων/διεργασιών (π.χ. πάνω από 1 CPU

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

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

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

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

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

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

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

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ Μάθημα 7 - Υποπρογράμματα Εργαστήριο 11 Ο TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ Βασικές Έννοιες: Υποπρόγραμμα, Ανάλυση προβλήματος, top down σχεδίαση, Συνάρτηση, Διαδικασία, Παράμετρος, Κλήση συνάρτησης, Μετάβαση

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

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ» Περιεχόμενα Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»... 2 Καταχωρητές... 3 Αριθμητική-λογική μονάδα... 3 Μονάδα μνήμης... 4 Μονάδα Εισόδου - Εξόδου... 5 Μονάδα ελέγχου... 5 Ρεπερτόριο Εντολών «ΑΒΑΚΑ»... 6 Φάση

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

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

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) ΙΙΙ 1 lalis@inf.uth.gr Υποθέσεις εργασίας Νήματα/διεργασίες με κοινή μνήμη Αυτόματη διακοπή/εναλλαγή νημάτων/διεργασιών (π.χ. πάνω από 1 CPU

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

Προσπέλαση κοινών πόρων Πρωτόκολλα ελέγχου αμοιβαίου αποκλεισμού

Προσπέλαση κοινών πόρων Πρωτόκολλα ελέγχου αμοιβαίου αποκλεισμού Λειτουργικά Συστήματα Πραγματικού Χρόνου 2006-07 Προσπέλαση κοινών πόρων Πρωτόκολλα ελέγχου αμοιβαίου αποκλεισμού Μ.Στεφανιδάκης Κοινοί πόροι Κοινοί (διαμοιραζόμενοι) πόροι με μία η περισσότερες μονάδες

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

Διάλεξη 12 Καθυστερήσεις (Stalls) Εκκενώσεις Εντολών (Flushing)

Διάλεξη 12 Καθυστερήσεις (Stalls) Εκκενώσεις Εντολών (Flushing) ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη 2 Καθυστερήσεις (Stalls) Εκκενώσεις Εντολών (Flushing) Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Καθυστερήσεις και Εκκενώσεις Εντολών

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

Μεταγλωττιστές Βελτιστοποίηση

Μεταγλωττιστές Βελτιστοποίηση Μεταγλωττιστές Βελτιστοποίηση Νίκος Παπασπύρου nickie@softlab.ntua.gr Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχ. Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Πολυτεχνειούπολη, 15780

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

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

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

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

Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή

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

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

ENOTHTA 3 ΣYNTPEXΩN ΠPOΓPAMMATIΣMOΣ

ENOTHTA 3 ΣYNTPEXΩN ΠPOΓPAMMATIΣMOΣ ENOTHTA 3 Περιεχόµενα 1. Oι έννοιες του ταυτοχρονισµού και συντρέχοντα προγραµµατισµού 2. Συρρουτίνες 3. Aλληλεπίδραση µεταξύ διεργασιών 4. Aνταγωνισµός µεταξύ διεργασιών 5. Συνεργασία µεταξύ διεργασιών

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

Αµοιβαίοςαποκλεισµός. Κατανεµηµένα Συστήµατα 03-1

Αµοιβαίοςαποκλεισµός. Κατανεµηµένα Συστήµατα 03-1 Αµοιβαίοςαποκλεισµός Εισαγωγή Συγκεντρωτική προσέγγιση Κατανεµηµένη προσέγγιση Αλγόριθµος Lamport Αλγόριθµος Ricart-Agrawala Προσέγγιση µεταβίβασης σκυτάλης Αλγόριθµος LeLann Αλγόριθµος Raymond Αλγόριθµος

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

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

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

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

Ενότητα 1: «Εισαγωγή στην Αλγοριθμική και τον Προγραμματισμό. Απλές ασκήσεις με γλώσσα Pascal»

Ενότητα 1: «Εισαγωγή στην Αλγοριθμική και τον Προγραμματισμό. Απλές ασκήσεις με γλώσσα Pascal» Ενισχυτική διδασκαλία διδακτικές ενότητες αλγοριθμικής και εισαγωγής στον προγραμματισμό Ενότητα 1: «Εισαγωγή στην Αλγοριθμική και τον Προγραμματισμό. Απλές ασκήσεις με γλώσσα Pascal» διδάσκων: χρήστος

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ Τελικές εξετάσεις 3 Ιανουαρίου 27 Διάρκεια εξέτασης: 3 ώρες (2:-5:) ΘΕΜΑ ο

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

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

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Νήματα & Συγχρονισμός Μεταβλητές κλειδιά Φράγματα Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Συγχρονισμός μεταξύ νημάτων

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Προγραμματισμός Η/Υ Ενότητα 3 η : Η Γλώσσα Προγραμματισμού VB.NET (2 ο Μέρος) Ι. Ψαρομήλιγκος Χ. Κυτάγιας Τμήμα Λογιστικής & Χρηματοοικονομικής

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

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2017-2018 Πρώτη Προγραμματιστική Εργασία Προθεσμία παράδοσης: Δευτέρα 30/4 στις 23:59. 1. Γενική Περιγραφή Στην πρώτη προγραμματιστική εργασία καλείστε

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

Αδιέξοδα (Deadlocks)

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

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

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

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

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Εντολές Ελέγχου & Επανάληψης

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Εντολές Ελέγχου & Επανάληψης Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Εντολές Ελέγχου & Επανάληψης Εντολές Ελέγχου 2 Γενικά Εντολές λήψης αποφάσεων Επιτρέπουν στο πρόγραμμα να εκτελεί διαφορετικές

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