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

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

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

Transcript

1 ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διεργασίες και Νήματα Υλικό από: Tanenbaum, Modern Operating Systems,Structured Computer Organization Stallings, Operating Systems: Internals and Design Principles. Silberschatz, Galvin and Gange, Operating Systems Concepts. Deitel, Deitel and Choffnes, Operating Systems Λειτουργικά Συστήματα, Γ.Α. Παπαδόπουλος, Πανεπιστήμιο Κύπρου Λειτουργικά Συστήματα, Κ. Διαμαντάρας, ΤΕΙΘ Systems Programming in C, A.D. Marshal, University of Cardiff Σύνθεση Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

2 ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διεργασίες και Νήματα Μοντέλο και καταστάσεις διεργασιών Υλοποίηση διεργασιών Νήματα Κλήσεις συστήματος και APIs

3 Μοντέλο διεργασίας (1) Μια διεργασία είναι ένα πρόγραμμα (στιγμιότυπο) που εκτελείται σε κάποια δεδομένα. Μια διεργασία για να εκτελεστεί απαιτεί συγκεκριμένους πόρους, όπως CPU, μνήμη, αρχεία, συσκευές Ε/Ε. Οι περισσότερες απαιτήσεις που πρέπει να αντιμετωπίσει το λ.σ. εκφράζονται με αναφορά στις διεργασίες: εκχώρηση CPU, εκχώρηση μνήμης, Ε/Ε για κάποια διεργασία. Ο χρήστης αποτελεί -μέσω του φλοιού- μια διεργασία. Το λ.σ. είναι υπεύθυνο για: δημιουργία και τερματισμό, εκτέλεση, αναστολή και επανεκτέλεση, δρομολόγηση, συγχρονισμό, επικοινωνία διεργασιών, επίλυση προβλημάτων ανταγωνισμού και αδιεξόδων Ο πολυπρογραμματισμός και ο χρονομερισμός βασίζονται στις διεργασίες. Μέσω της έννοιας και των χαρακτηριστικών της διεργασίας αποκρύπτουμε όλες τις δυσκολίες της διαχείρισης διακοπών. Τα ανώτερα επίπεδα 'βλέπουν' ακολουθιακές διεργασίες που επικοινωνούν και όχι διακοπές.

4 Μοντέλο διεργασίας (2) (a) Πολυπρογραμματισμός τεσσάρων προγραμμάτων, αυτό που συμβαίνει σε επίπεδο αρχιτεκτονικής. (b) Λογική αφαίρεση τεσσάρων ανεξαρτήτων ακολουθιακών διεργασιών, αυτό που 'βλέπουν' τα επίπεδα πάνω από το λ.σ. (c) Μόνο ένα πρόγραμμα είναι ενεργό ανά πάσα στιγμή. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

5 Καταστάσεις διεργασίας (1) Διάρκεια ζωής μιας διεργασίας = το χρονικό διάστημα μεταξύ της δημιουργίας και τερματισμού της από το λ.σ. Κατά τη διάρκεια ζωής της κάθε διεργασία μπορεί να βρεθεί σε μια σειρά από διακριτές καταστάσεις, με τρείς βασικότερες: * έτοιμη προς εκτέλεση (ready) * σε εκτέλεση (running) * σε αναστολή (blocked). Μια διεργασία όταν δημιουργείται εισάγεται στη λίστα των έτοιμων διεργασιών. Σταδιακά προωθείται προς την κεφαλή της λίστας και μόλις ο επεξεργαστής γίνει διαθέσιμος η διεργασία ανατίθεται στον επεξεργαστή και η κατάστασή της αλλάζει σε εκτελούμενη. Η διαδικασία της ανάθεσης της πρώτης διεργασίας από τη λίστα των έτοιμων διεργασιών στον επεξεργαστή ονομάζεται διεκπεραίωση και υλοποιείται από τον διεκπεραιωτή (dispatcher), που είναι τμήμα του δρομολογητή (scheduler).

6 Καταστάσεις διεργασίας (2) Η εκτελούμενη διεργασία αναστέλλεται μέσω δύο βασικών κατηγοριών συμβάντων (events). * Κατά τη διάρκεια της εκτέλεσης η διεργασία εκτελεί λειτουργία Ε/Ε, ή κάποια άλλη που απαιτεί privileged λειτουργία (kernel mode), οπότε καλεί το Λ.Σ. μέσω κλήσης συστήματος. * Για να αποφευχθεί η μονοπώληση της χρήσης του επεξεργαστή, το Λ.Σ. χρησιμοποιεί έναν χρονιστή που παράγει μια χρονοδιακοπή (timeout) μετά από την πάροδο ενός προκαθορισμένου χρονικού ορίου, που ονομάζεται κβάντο χρόνου (quantum). Και στις δύο περιπτώσεις το Λ.Σ. αναλαμβάνει τον έλεγχο του επεξεργαστή. Η κατάσταση της εκτελούμενης διεργασίας αλλάζει κατάλληλα είτε σε αναστολή είτε έτοιμη και προωθείται προς εκτέλεση η αμέσως επόμενη διεργασία στη λίστα των έτοιμων. Έτσι επιτυγχάνεται εναλλαγή διεργασιών.

7 Διάγραμμα 5 καταστάσεων Δημιουργία 3 βασικές καταστάσεις Τερματισμός

8 Καταστάσεις και γεγονότα (1) Running : η διεργασία που εκετελείται Ready : είναι έτοιμη για εκτέλεση Blocked : υπό αναστολή, δεν μπορεί να εκτελεστεί μέχρι να προκύψει το κατάλληλο γεγονός New : έχει μόλις δημιουργηθεί από το λ.σ. Exit : έχει απελευθερωθεί από τη δεξαμενή εκτελέσιμων εργασιών από το λ.σ., τερματίζεται

9 Καταστάσεις και γεγονότα (2) Admit : το λ.σ. τοποθετεί τη διεργασία στην ουρά των διεργασιών προς εκτέλεση, δημιουργεί τις αντίστοιχες δομές δεδομένων. Dispatch : το λ.σ. εκχωρεί το σύστημα (CPU κλπ) στη διεργασία για να εκτελεστεί. Timeout : το λ.σ προκαλεί χρονοδιακοπή. Event Wαits : η διεργασία απαιτεί υπηρεσία από το λ.σ. που προκαλεί διακοπή. Event Occurs : η υπηρεσία έχει εκτελεστεί και το λ.σ. ενημερώνει τις αντίστοιχες δομές δεδομένων. Release : το λ.σ. τερματίζει τη διεργασία, ακυρώνει τις αντίστοιχες δομές δεδομένων.

10 Δημιουργία διεργασίας Γεγονότα που προκαλούν δημιουργία διεργασίας: Εκκίνηση συστήματος. Σύνδεση νέου χρήστη. Μια εκτελούμενη διεργασία αιτείται τη παροχή μιας υπηρεσίας ή την εκτέλεση μιας εφαρμογής. Μια εκτελούμενη διεργασία καλεί μια κλήση συστήματος για τη δημιουργία διεργασίας. Ένας χρήστης ζητά τη δημιουργία νέας διεργασίας (εκτέλεση ενός προγράμματος ή μιας εντολής φλοιού). Εκκίνηση μιας εργασίας δέσμης / σεναρίου φλοιού ή μιας χρονοδρομολογημένης εργασίας. Πρέπει να ικανοποιούνται περιορισμοί του συστήματος, πχ αριθμός ενεργών διεργασιών, χώρος στη μνήμη, δικαιώματα δημιουργού κλπ. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

11 Τερματισμός διεργασίας Γεγονότα που προκαλούν τερματισμό διεργασίας: Κανονική έξοδος (τερματισμός). Εσφαλμένη έξοδος (επιστροφή κωδικου σφάλματος) Μοιραίο σφάλμα (Fatal error κατά την εκτέλεση) πχ μη έγκυρη εντολή, προνομιούχος εντολή, αριθμητικά σφάλματα, σφάλαματα υπερχείλισης, υπέρβαση ορίων μνήμης, σφάλματα Ε/Ε, σφάλματα προστασίας, πέρας διαθέσιμου χρόνου Εξαναγκασμός σε τερματισμό από άλλη διεργασία (Αποστολή σήματος δια-διεργασιακή επικοινωνία, Kill). Εξαναγκασμός σε τερματισμό από το χρήστη. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

12 Εναλλαγή διεργασίας Γεγονότα που προκαλούν εναλλαγή (αναστολή εκτέλεσης) διεργασίας: Clock interrupt Η διεργασία έχει εξαντλήσει το μέγιστο επιτρεπόμενο χρονικό όριο (time slice, κβάντο χρόνου) I/O interrupt Σφάλμα μνήμης Η διεύθυνση μνήμης βρίσκεται στην εικονική μνήμη και πρέπει να μεταφερθεί στην κύρια μνήμη Hardware Interrupt / Trap Έχει συμβεί σφάλμα (υλικού ή λογισμικού) Κλήση συστήματος π.χ. άνοιγμα αρχείου, δημιουργία διεργασίας παιδιού (fork), διαδιεργασιακή επικοινωνία (wait, kill)

13 Καταστάσεις διεργασιών παράδειγμα (1) Terminated New Admitted Exit Scheduler Dispatch Ready Running Interrupt I/O Wait Ι/Ο Completion Waiting

14 Καταστάσεις διεργασιών παράδειγμα (2) Done New calculate calculate Fibonacci Fibonacci numbers numbers Ready Running Waiting CPU util. vs. time

15 Καταστάσεις διεργασιών παράδειγμα (3) Done New Ready Running Waiting CPU util. vs. time

16 Καταστάσεις διεργασιών παράδειγμα (4) Done New Ready Running Waiting CPU util. vs. time getline() getline() stops stops to to read read from from input! input! Process Process sleeps sleeps waiting waiting for for an an input input

17 Καταστάσεις διεργασιών παράδειγμα (5) Done New Ready user user types types some some input: input: interrupt! interrupt! CPU util. vs. time Running Waiting

18 Καταστάσεις διεργασιών παράδειγμα (6) Done New Ready Running Waiting CPU util. vs. time

19 Καταστάσεις διεργασιών παράδειγμα (7) Done New Ready Running Running Running fib(57)... fib(57)... Waiting CPU util. vs. time...

20 Καταστάσεις διεργασιών παράδειγμα (8) Done New Ready Running Running Running fib(57)... fib(57)... Waiting CPU util. vs. time takes takes aa long long time time

21 Καταστάσεις διεργασιών παράδειγμα (9) Done New Ready Running Clock Clock Interrupt! Interrupt! Waiting CPU util. vs. time Scheduler Scheduler reconsiders reconsiders which which process process to to run run

22 Καταστάσεις διεργασιών παράδειγμα (10) Done New Ready Running Clock Clock Interrupt! Interrupt! Waiting CPU util. vs. time Scheduler Scheduler reconsiders reconsiders which which process process to to run run Process Process isis dispatced dispatced again again

23 Καταστάσεις διεργασιών παράδειγμα (11) Done New Ready Running Waiting CPU util. vs. time eventually eventually fib() fib() finishes, finishes, printf printf sends sends output output

24 Καταστάσεις διεργασιών παράδειγμα (12) Done New Ready Running I/O I/O finishes finishes Waiting CPU util. vs. time

25 Καταστάσεις διεργασιών παράδειγμα (13) Done New Ready Running Waiting CPU util. vs. time

26 Καταστάσεις διεργασιών παράδειγμα (14) Done New Ready Running Waiting CPU util. vs. time and and the the program program finishes finishes

27 Καταστάσεις διεργασιών παράδειγμα (15) Done New Ready Running Waiting CPU util. vs. time

28 Εναλλαγή διεργασιών - παράδειγμα (1)

29 Εναλλαγή διεργασιών - παράδειγμα (2) OS Kernel

30 Εναλλαγή διεργασιών - παράδειγμα (3)

31 Process A OS OS Process A Event Process B OS OS Process C Process A Εναλλαγή Παραδειγμα διεργασιών - παράδειγμα (4) (4)

32 Διάγραμμα 6 καταστάσεων (1) Συνήθως οι λειτουργίες Ε/Ε είναι πολύ πιο αργές από τη λειτουργία της CPU. Το λ.σ. μπορεί να διαχωρίζει τις λειτουργίες Ε/Ε σε 'αργά' και 'γρήγορα' ή σε περισσότερες κατηγορίες ανά τύπο γεγονότος και να δημιουργεί δυο διαφορετικές καταστάσεις αναστολής, blocked και suspended. Η διαφορά τους έγκειται στο οτι όταν μια διεργασία θεωρείται suspended τότε ο χώρος διευθύνσεών της μεταφέρεται στη δευτερεύουσα μνήμη, στη περιοχή εναλλαγής. Έτσι ελευθερώνεται χώρος στη κύρια μνήμη είτε για τη μεταφορά άλλων διεργασιών από τη δευτερεύουσα μνήμη, είτε για τη δημιουργία νέων διεργασιών. Το γεγονός suspend αντιστοιχεί στην απόφαση του λ.σ. να μεταφέρει τη διεργασία στη δευτερεύουσα μνήμη λόγω έλλειψης χώρου. Το γεγονός activate αντιστοιχεί στο event occurs.

33 Διάγραμμα 6 καταστάσεων (2)

34 Διάγραμμα 7 καταστάσεων (1) Γενικεύοντας τη χρήση της ιδεατής μνήμης μπορούμε να παρατηρήσουμε οτι σε περίπτωση πολύ μεγάλου αριθμού διεργασιών ή περιορισμένης κύριας μνήμης το πρόβλημα ανεπάρκειας της κύριας μνήμης μπορεί να εμφανιστεί και σε άλλες καταστάσεις, όπως κατά τη δημιουργία, ή όταν η διεργασία έιναι μεν έτοιμη αλλά δεν υπάρχει επαρκής χώρος στη κύρια μνήμη. Έτσι καταλήγουμε στο διάγραμμα 7 καταστάσεων. Οι καταστάσεις ready/suspended και blocked/suspended αντιστοιχούν στις ready και blocked αλλά στη δευετερεύουσα μνήμη. Τα γεγονότα suspend και activate αντιστοχεί στη μεταφορά από τη κύρια μνμήμη στη δευτερεύουσα και αντίστροφα. Οι διακεκομμένες γραμμές σημειώνουν οτι η συνήθης διαδρομή μιας διεργασίας είναι μέσω της δευτερεύουσας μνήμης.

35 Διάγραμμα 7 καταστάσεων (2)

36 ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διεργασίες και Νήματα Μοντέλο και καταστάσεις διεργασιών Υλοποίηση διεργασιών Νήματα Κλήσεις συστήματος και APIs

37 Υλοποίηση διεργασιών Μια διεργασία υλοποιείται από το λ.σ. με δύο βασικές δομές. Το Xώρο Διευθύνσεων και το Process Control Block Κάθε διεργασία έχει το δικό της χώρο διευθύνσεων, που αποτελείται από : Την περιοχή κώδικα (text region) Την περιοχή δεδομένων (data region), όπου αποθηκεύονται (α) οι καθολικές μεταβλητές και (β) η δυναμικά παραχωρούμενη μνήμη (heap). Την περιοχή στοίβας (stack region), όπου αποθηκεύονται οι παράμετροι, οι τοπικές μεταβλητές και οι πληροφορίες κλήσης για τις ενεργές κλήσεις διαδικασιών.

38 Χώρος διευθύνσεων διεργασίας (1) Ο χώρος διευθύνσεων ή χώρος εργασίας ή εικόνα μνήμης (memory image) μιας διεργασίας περιλαμβάνει -κατ' ελάχιστο: το πρόγραμμα (text), τα δεδομένα (data), και τη στοίβα (stack). Ακόμη έχουμε το σωρό (heap) και τη κοινόχρηστη μνήμη (global data, system calls, libraries) τα οποία δεν φαίνονται στο σχήμα.

39 Χώρος διευθύνσεων διεργασίας (2) Process Memory Images Memory Tables Memory Devices Files Processes I/O Tables Process 1 File Tables Process Table Κάθε διεργασία έχει διαφορετικό χώρο διευθύνσεων. Process 1 Process 2.. Process N Process N

40 Υλοποίηση διεργασιών (2) Για να υλοποιηθεί το μοντέλο κατάστασης διεργασιών, το λ.σ. οικοδομεί έναν πίνακα διεργασιών (process table), ο οποίος περιλαμβάνει μια καταχώρηση μπλόκ ελέγχου διεργασίας (process control block) ή περιγραφέας διεργασίας (process descriptor) για κάθε διεργασία. Στην καταχώρηση αυτή εγγράφονται πληροφορίες σχετικές με την κατάσταση και μαζί με το χώρο διευθύνσεων (address space) και το πλαίσιο επεξεργαστή (CPU context) αποτελούν την εικόνα της διεργασίας (process image) ώστε να συνεχίσει να εκτελείται μετά από κάποια διακοπή. Η δημιουργία μιας διεργασίας έχει επομένως μια αρχική επιβάρυνση (overhead) που μειώνει την απόδοση του συστήματος. Η επιβάρυνση αυυτή διαφέρει ανάλογα με το σύστημα, μερικές φορές υπάρχει και υποστήριξη υλικού.

41 Πίνακας διεργασιών και Process Control Block (PCB)

42 Πληροφορίες PCB Διαχείριση διεργασιών Διαχείριση μνήμης Καταχωρητές Δείκτης σε τμήμα κειμένου Δείκτης εντολών προγράμματος Δείκτης σε τμήμα δεδομένων Λέξη κατάστασης προγράμματος Κατάσταση εξόδου Δείκτης στοίβας Κατάσταση σήματος Κατάσταση διεργασίας Ταυτότητα διεργασίας Χρόνος εκκίνησης διεργασίας Γονική διεργασία Χρόνος χρήσης CPU Ομάδα διεργασιών Χρόνος CPU θυγατρικών διεργασιών Πραγματική και λειτουργική ταυτότητα Χρόνος επόμενης εγρήγορσης χρήστη και ομάδας χρήστη Δείκτης ουράς μηνυμάτων Χάρτης δυαδικών ψηφίων για σήματα Διαχείριση αρχείων Μάσκα δικαιωμάτων Πρωταρχική διαδρομή Διαδρομή εργασίας Περιγραφείς αρχείων Λειτουργική ταυτότητα χρήστη και ομάδας Παράμετροι κλήσεων συστήματος Διάφοροι ενδείκτες

43 Θεματική εναλλαγή (Context switch) (1) Η διαδικασία αλλαγής πλαισίου λειτουργίας της CPU (context), όταν εναλλάσσεται διεργασία προς εκτέλεση. Απαιτείται ενημέρωση όλων των σχετικών δομών δεδομένων που διατηρεί το λ.σ. Ο χρόνος που απαιτείται για τη θεματική εναλλαγή αποτελεί σημαντική επιβάρυνση για τη λειτουργία του συστήματος, αφού κατά τη διάρκειά της δεν γίνεται χρήσιμο έργο. Ο χρόνος αυτός προστίθεται σε κάθε εναλλαγή διεργασίας. Για τη μείωση του χρόνου θεματικής εναλλαγής μπορεί να χρησιμοποιούμε υποστήριξη υλικού (δες και νήματα).

44 table P0 P1 Θεματική εναλλαγή (2)

45 Θεματική εναλλαγή (3)

46 Θεματική εναλλαγή (4) Εκτελούμενη (running) άλλη κατάσταση Αποθήκευση του πλαισίου επεξεργαστή (CPU context) που περιλαμβάνει τον PC και άλλους καταχωρητές (στο PCB) Μετακίνηση του PCB στην αντίστοιχη ουρά (ready, blocked, ) Επιλογή μιας άλλης διεργασίας προς εκτέλεση Ενημέρωση του PCB της διεργασίας που έχει επιλεγεί Ενημέρωση των δομών δεδομένων της διαχείρισης μνήμης Φόρτωση πλαισίου (στον επεξεργαστή) της διεργασίας που έχει επιλεγεί

47 Θεματική εναλλαγή (5) Σκελετός των ενεργειών του χαμηλοτέρου επιπέδου του λειτουργικού συστήματος κατά την εξυπηρέτηση διακοπής για θεματική εναλλαγή. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

48 Ουρές διεργασιών (1) Το λ.σ. Για να υλοποιήσει τις αλλαγές καταστάσεων διατηρεί έναν αριθμό ουρών κάθε μια από τις οποίες είναι μια λίστα διεργασιών που αναμένουν για κάποιον πόρο. Βραχυπρόθεσμη ουρά (Ready queue): διεργασίες που βρίσκονται στην κύρια μνήμη και είναι έτοιμες να εκτελεσθούν (CPU scheduler και Dispacher) Ουρές για συσκευές Ε/Ε (I/O devices queues): όλες οι διεργασίες που είναι υπο αναστολή και περιμένουν να χρησιμοποιήσουν μια συσκευή δημιουργούν την ουρά της συγκεκριμένης συσκευής Μεσοπρόθεσμη ουρά (Midium-term queue): λίστα από διεργασίες που είναι υπό αναστολή αλλά λόγω έλλειψης μνήμης έχουν μεταφερθεί στη δευτερεύουσα μνήμη (καταστάσεις Suspended) Μακροπρόθεσμη ουρά (Long-term ή job queue): λίστα από νέες διεργασίες που περιμένουν να χρησιμοποιήσουν τον επεξεργαστή (για Batch jobs) Οι αλλαγές καταστάσεων υλοποιούνται με μετακίνηση μεταξύ των ουρών.

49 Ουρές διεργασιών (2)

50 ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διεργασίες και Νήματα Μοντέλο και καταστάσεις διεργασιών Υλοποίηση διεργασιών από το λ.σ. Νήματα Κλήσεις συστήματος και APIs

51 Μοντέλο Νήματος (Thread) (1) Μια διεργασία μπορεί να περιέχει αρκετά τμήματα κώδικα που μοιράζονται ορισμένα δεδομένα και μπορούν να εκτελούνται 'συγχρόνως'. Π.χ. ένας επεξεργαστής κειμένου δέχεται πληκτρολόγηση, διαμορφώνει κείμενο στην οθόνη και κάνει backup, ή ένας Web browser μπορεί να περιέχει διαφορετικά συστατικά για την ανάγνωση ιστοσελίδων σε μορφή HTML, την ανάκτηση των συστατικών τους (εικόνες, video κλπ) και την εμφάνιση των σελίδων στο παράθυρο του browser. Αυτά τα συστατικά του προγράμματος που εκτελούνται ανεξάρτητα αλλά υλοποιούνται ως λειτουργίες σε μια κοινή περιοχή μνήμης ονομάζονται νήματα (threads). Η διεργασία έχει ένα ενιαίο χώρο διευθύνσεων αλλά εσωτερικά οργανώνεται ως ένα σύνολο μικρο-διεργασιών, των νημάτων.

52 Χρήση Νημάτων (1) Επεξεργαστής κειμένου με τρία νήματα. Τρείς διαφορετικές λειτουργίες. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

53 Χρήση Νημάτων (2) Ένας πολυνηματικός διακομιστής Ιστού. Πολλές όμοιες λειτουργίες. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

54 Χρήση Νημάτων (3) Χονδρικός σκελετός του κώδικα του διακομιστή Ιστού. (a) Νήμα Διανομέα. (b) Νήμα Εργαζομένου. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

55 Μοντέλο Νήματος (2) Διεργασία : μια συλλογή νημάτων μαζί με σχετιζόμενους πόρους του συστήματος. Η διάσπαση μιας εφαρμογής σε πολλά νήματα έχει ως αποτέλεσμα μεν τον ευκολότερο σχεδιασμό αλλά επιβάλλεται ο συγχρονισμός των γεγονότων και ο διαμοιρασμός δεδομένων της εφαρμογής. Τα νήματα προσφέρουν έναν εναλλακτικό τρόπο λειτουργίας σε σχέση με το μοντέλο της διεργασίας, επειδή το μοντέλο της διεργασίας είναι αρκετά 'βαρύ' (heavyweight) και προκαλεί σημαντικές καθυστερήσεις πολύπλοκες εφαρμογές. Έτσι στα λ.σ. καταλήγουμε σε ένα σύνθετο μοντέλο 2 επίπέδων: Σχετικά λίγες και μεγάλες διεργασίες που η κάθε μια αποτελείται από σχετικά πολλά νήματα.

56 Χρήση Νημάτων (4) (a) Παραλληλισμός επιπέδου διεργασίας. (b) Παραλληλισμός επιπέδου νήματος. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

57 Σχέση νήματος και διεργασίας (1) Νήμα = βασική μονάδα χρήσης της CPU Κατέχει program counter register set stack space Process A B C Program Counter (Threads) Μοιράζεται text segment C stack Multithreaded Program B stack A stack code section data section OS resources A B C data segment

58 Σχέση νήματος και διεργασίας (2) Η στήλη Per process πριέχει στοιχεία κοινά για όλα τα νήματα μια διεργασίας. Η στήλη Per thread περιέχει στοιχεία ιδιωτικά για κάθε νήμα. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

59 Νήματα και διεργασίες : σύγκριση (1) Διεργασίες Είναι οντότητες που δεσμεύουν οποιονδήποτε πόρο τις αφορά όπως τον χώρο διευθύνσεων, τα δεδομένα, τον κώδικα και τα αρχεία Θεωρούνται ως heavyweight σε σχέση με τη δημιουργία, τον τερματισμό, την θεματική εναλλαγή, την επικοινωνία και τον συγχρονισμό Νήματα Διαμοιράζονται τον χώρο διευθύνσεων, τα δεδομένα, τον κώδικα και τα αρχεία εφόσον ανήκουν στην ίδια διεργασία Θεωρούνται ως lightweight σε σχέση με τη δημιουργία, τον τερματισμό, την θεματική εναλλαγή, την επικοινωνία και τον συγχρονισμό Τα νήματα μπορούν να δημιουργηθούν χωρίς να αντικατασταθεί ολόκληρη η διεργασία Το περισσότερο έργο για τη δημιουργία του νήματος γίνεται στο χώρο διευθύνσεων του χρήστη παρά στον πυρήνα του λ.σ. Τα νήματα 'κληρονομούν' μεθόδους διαχείρισης κλπ από τις διεργασίες Χρησιμοποιούν καλύτερα τους σύγχρονους επεξεργαστές (multithreading)

60 Νήματα και διεργασίες : σύγκριση (2) Νήματα Ένα νήμα δεν διαθέτει data segment ή heap Ένα νήμα δεν μπορεί να υπάρξει μόνο του, πρέπει να υπάρχει στα πλαίσια μιας διεργασίας Υπάρχουν περισσότερα από ένα νήματα σε μια διεργασία, το πρώτο νήμα είναι το κύριο και κατέχει τη στοίβα της διεργασίας Η δημιουργία του καθώς και η εναλλαγή πλαισίου δεν είναι δαπανηρή Αν ένα νήμα εκλείψει η στοίβα του επιστρέφεται στους πόρους του συστήματος Διεργασίες Μια διεργασία έχει code/data/heap καθώς και άλλα segments Υπάρχει ένα τουλάχιστον νήμα σε μια διεργασία Τα νήματα σε μια διεργασία διαμοιράζονται code/data/heap και I/O, αλλά το καθένα έχει τη δική του στοίβα και τους δικούς του καταχωρητές Η δημιουργία τους καθώς και οι εναλλαγές πλαισίου είναι δαπανηρές Αν μια διεργασία εκλείψει οι πόροι της επιστρέφονται στο σύστημα και όλα της τα νήματα εκλείπουν

61 Παράδειγμα προγράμματος σε γλώσσα C void do_one_thing(int *); void do_another_thing(int *); void do_wrap_up(int, int); int r1=0, r2=0; void do_another_thing(int *pnum_timess) { int i, j, k; main() { do_one_thing(&r1); do_another_thing(&r2); do_wrap_up(r1, r2); } void do_one_thing(int *pnum_times) { int i, j, k; } for(i = 0; i < 4; i ++) { printf( doing one thing\n ); for (j = 0; j < 10000; j++) { k = k + i; } (*pnum_times)++; } } for (i = 0; i < 4; i++) { printf( doing another thing \n ); for(j = 0; j < 10000; j++) { k = k + i; } (*pnum_times)++; } void do_wrap_up(int one_times, int another_times) { int total; } total = one_times + another_times; printf( wrap up: one thing %d, another %d, total %d\n, one_times, another_times, total);

62 Το πρόγραμμα ως μια διεργασία (1)

63 Το πρόγραμμα ως διεργασία με δύο νήματα (1) void do_one_thing(int *); void do_another_thing(int *); void do_wrap_up(int, int); int r1=0, r2=0; main() { /* create and execute thread */ CreateThread( do_one_thing (&r1) ); /* execute do_another_thing in main process */ CreateThread (do_another_thing(&r2)); /* wait for thread to complete */ wait_for_thread(); } do_wrap_up(r1, r2);

64 Το πρόγραμμα ως διεργασία με δύο νήματα (2)

65 Υλοποίηση νημάτων (a) Νήματα σε επίπεδο χρήστη (User Level Threads, ULTs). (b) Νήματα σε επίπεδο πυρήνα (Kernel Level Threads, KLTs). Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

66 Νήματα επιπέδου χρήστη Το λ.σ. δεν γνωρίζει για τα νήματα χρήστη, είναι ενημερωμένο μόνο για τη διεργασία όπου περιέχονται Το λ.σ. δρομολογεί τις διεργασίες και όχι τα νήματα Ο προγραμματιστής χρησιμοποιεί τη βιβλιοθήκη νημάτων για να τα διαχειριστεί (δημιουργία, διαγραφή, συγχρονισμός και δρομολόγηση) Υπέρ: - Χρονο-προγραμματισμός σε επίπεδο εφαρμογής, ταχύτερος και πιο εξειδικευμένος από τη γενική δρομολόγηση του πυρήνα. - Φορητότητα εφαρμογής ανεξάρτητα από λ.σ. - Μπορούμε να έχουμε πολλά νήματα χωρίς μεγάλη επιβάρυνση. Κατά: - Δύσκολη εξυπηρέτηση κλήσεων συστήματος μέσω νημάτων, γιατί σε περίπτωση αναστολής εκτέλεσης πρέπει να ενημερωθούν δύο χρονο-προγραμματιστές, του λ.σ. και της εφαρμογής. - Δύσκολη υλοποίηση υψίσυχνης χρονοδιακοπής. - Αν απαιτείται σημαντική E/E ή εναλλαγή σελίδων στη μνήμη έχουμε σημαντικές καθυστερήσεις.

67 Νήματα επιπέδου πυρήνα Είναι γνωστά στο λ.σ. Οι τιμές των καταχωρητών, του PC, και των stack pointers μεταβάλλονται Υπέρ: - Οι δομές δεδομένων και οι κλήσεις συστήματος οργανώνονται από το λ.σ. (ελαφρές διεργασίες, πίνακας νημάτων, ουρές νημάτων). - Το λ.σ. διαχειρίζεται τα θέματα αναστολής εκτέλεσης νημάτων λόγω Ε/Ε ή ιδεατής μνήμης. - Η εναλλαγή μεταξύ νημάτων πυρήνα στην ίδια διεργασία δεν είναι δαπανηρή Κατά: - Σχετικά βαρύτερη και λιγότερο εξειδικευμένη υλοποίηση - Η υλοποίηση εξαρτάται από το λ.σ. - Σχετικά λίγα, ισχυρά νήματα. Τα δεδομένα αλλάζουν με την υποστήριξη νημάτων σε επίπεδο υλικού και με καλύτερες βιβλιοθήκες γλωσσών υψηλού επιπέδου. Πιθανός συνδυασμός: Υβριδική υλοποίηση.

68 Παραδείγματα υλοποιήσεων Posix Pthreads: (IEEE standard): Έχουν καθορισμένη διεπαφή (API) Το επίπεδο υλοποίησης (νήματα χρήστη / πυρήνα) εξαρτάται από τη μέθοδο ανάπτυξης Είναι πιο συνηθισμένα σε συστήματα UNIX αλλά υπάρχουν και σε Windows Java threads: Υποστηρίζονται από την JVM Η υλοποίηση εξαρτάται από την εφαρμογή, νήματα επιπέδου χρήστη Πλήρως φορητά, πολύ εύχρηστα, πλούσιο API O.S. Kernel threads: Windows XP/2000, Linux, Solaris Όλα τα σύγχρονα λειτουργικά συστήματα υποστηρίζουν threads επιπέδου πυρήνα

69 ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διεργασίες και Νήματα Μοντέλο και καταστάσεις διεργασιών Υλοποίηση διεργασιών από το λ.σ. Νήματα Κλήσεις συστήματος και APIs

70 Δημιουργία διεργασιών Η διεργασία-γονέας (parent process) δημιουργεί τη διεργασία-παιδί (child process), και αυτή με τη σειρά της δημιουργεί δικές της διεργασίες Δημιουργία ιεραρχίας Στο UNIX λέγεται μια "ομάδα διεργασιών" (process group) Στα MS-Windows δεν υπάρχει ιεραρχία όλες οι διεργασίες είναι ισότιμες Διαμοιρασμός πόρων Γονέας και παιδί μοιράζονται όλους τους πόρους Το παιδί μοιράζεται μέρος των πόρων του γονέα. Κανένας διαμοιρασμός πόρων. Εκτέλεση Γονέας και παιδί εκτελούνται ταυτόχρονα. Ο γονέας περιμένει τον τερματισμό του παιδιού. Χώρος διευθύνσεων Το παιδί αντιγράφει το χώρο διευθύνσεων του γονέα. Το παιδί φορτώνει δικό του πρόγραμμα.

71 Ιεραρχία Διεργασιών Ένα δένδρο διεργασιών. Η διεργασία A δημιούργησε δύο διεργασίες, τις B και C. Η διεργασία B δημιούργησε τρείς διεργασίες τις D, E και F. Βασικοί 'δημιουργοί' διεργασιών: το λ.σ. κατά την εκκίνηση ο χρήστης μέσω του φλοιού (ή του GUI). Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

72 Εκκίνηση Unix (1) Η διεργασία (daemon) init διαβάζει συγκεκριμένους καταλόγους ρυθμίσεων (init) από όπου καθορίζεται ποιές υπηρεσίες θα ξεκινήσουν μετά την φόρτωση του πυρήνα (startup). Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

73 Εκκίνηση Unix (2) bootstrap process 0 wait until init exits swapper fork system shutdown process 1 wait until all children exit init fork... getty exec login exec exit SHELL fork user cmds as many as available terminals exit user environment

74 Σενάρια και αρχεία ρυθμίσεων στο Unix Ο πυρήνας αναζητά το εκτελέσιμο της init στο κατάλογο εκτελεσίμων /usr/bin. Η init διαβάζει τα αρχεία ρυθμίσεων από το /etc/inittab. Υπάρχει η δυνατότητα για 7 διαφορετικές ρυθμίσεις (configurations) εκκίνησης που λέγονται runlevels (rc0, rc1.., rc6). Κάθε runlevel περιέχει συνδέσμους προς τα σενάρια φλοιού (shell scripts) για τον τερματισμό (Kill) ή εκκίνηση (Start) των διαφόρων υπηρεσιών του λ.σ. Τα σενάρια φλοιού των υπηρεσιών βρίσκονται όλα στον κατάλογο /etc/inti.d Τα εκτελέσιμα των υπηρεσιών βρίσκονται στο /usr/bin, usr/sbin. Στο κατάλογο /etc βρίσκονται όλα τα αρχεία ρυθμίσεων για το σύστημα και τις επιμέρους υπηρεσίες του. Κατά την εγκατάσταση ή τροποποίηση εφαρμογών προστίθενται ανάλογα αρχεία. Η τροποποίηση συνήθως γίνεται μέσω εφαρμογών. Υπάρχουν κατάλογοι /dev. /proc κλπ σχετικοί με τις συσκευές Ε/Ε και το υλικό του συστήματος.

75 Διαχείριση διεργασιών στο Unix Eντολή Σημασία Command Εκτέλεση εντολής command στο προσκήνιο. Command & Εκτέλεση της εντολής command στο παρασκήνιο jobs Εμφάνιση των εντολών που εκτελούνται στο παρασκήνιο. Ctrl+Z Αναστολή μιας εργασίας που εκτελείται στο προσκήνιο. Ctrl+C Τερματισμός μιας εργασίας που εκτελείται στο προσκήνιο. %n Κάθε διεργασία που εκτελείται στο παρασκήνιο παίρνει έναν αριθμό. Με την έκφραση %n μια εργασία αναφέρεται με τον αριθμό της, πχ fg %2. bg Επανενεργοποίηση ενός προγράμματος που έχει ανασταλεί στο παρασκήνιο fg Επαναφορά εργασίας στο προσκήνιο. batch Eκτέλεση εργασίας σε χρόνο που το σύστημα δεν είναι φορτωμένο at Εκτέλεση διεργασίας σε συγκεκριμένο χρόνο cron Χρονοπρογραμματισμός (μόνιμος) εργασιών ps Εμφάνιση διεργασιών pstree Εμφάνιση δένδρου διεργασιών top Διαλογική παρακολούθηση / τροποποίηση κατάστασης διεργασιών kill Τερματισμός διεργασίας nice Αλλαγή προτεραιότητας διεργασίας

76 Κλήσεις Συστήματος για Διαχείριση Διεργασιών Κλήσεις συστήματος POSIX για διαχείριση διεργασιών. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

77 fork / join (1) Οι εντολές fork και join χρησιμοποιούνται για τη δημιουργία και τον τερματισμό διεργασιών, κυρίως σε συστήματα UNIX. Η fork χρησιμοποιείται για να διαιρέσει μια ακολουθία εντολών σε δύο ταυτόχρονα παράλληλες εκτελούμενες ακολουθίες. Μόλις ο έλεγχος φθάσει στη διεργασία που προσδιορίζεται στη fork μια νέα διεργασία (child) παράγεται για να εκτελέσει τον ένα κλάδο του παράλληλου κώδικα ενώ η γονική (parent) διεργασία συνεχίζει παράλληλα να εκτελεί τον άλλο κλάδο. Οι δύο αυτές διεργασίες μοιράζονται τις ίδιες μεταβλητές, χώρο διευθύνσεων, περιγραφείς αρχείων, context κλπ. Η γονική μπορεί ακόμη να δημιουργήσει περισσότερες θυγατρικές, που μπορούν να εκτελούνται όλες μαζί παράλληλα. Οποιαδήποτε από αυτές μπορεί επίσης να καλέσει την fork, έτσι ώστε να δημιουργηθεί ένα δένδρο διεργασιών οποιουδήποτε βάθους.

78 fork / join (2) Δημιουργία διεργασίας στο Unix. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

79 fork / join (3) Η fork επιστρέφει συνήθως την ταυτότητα της θυγατρικής στη γονική διεργασία και η γονική διεργασία μπορεί να τη χρησιμοποιήσει για να σχεδιάσει τον τερματισμό της θυγατρικής διεργασίας, η οποία πρέπει να συμβεί πριν τεθεί σε λειτουργία η join. Η join συνενώνει τις δύο ακολουθίες του κώδικα και είναι διαθέσιμη σε μια γονική διεργασία για συγχρονισμό με τη θυγατρική. Ο γράφος προήγησης (precedence graph) είναι ένας φυσικός τρόπος για την περιγραφή εφαρμογών με πολλές διεργασίες. Με τη χρήση των fork join μπορεί να περιγραφεί κάθε γράφος προήγησης. Είναι ένας κατευθυνόμενος άκυκλος γράφος (directed acyclic graph) με τις διεργασίες να αντιστοιχούν στους κόμβους, ενώ οι ακμές καθορίζουν τη σειρά εκτέλεσης των διεργασιών.

80 fork / exec / wait Η θυγατρική διεργασία είναι πιθανόν να εκτελεί στο πλαίσιό της ένα διαφορετικό πρόγραμμα, με μια ξεχωριστή κλήση συστήματος exec(). Χρησιμοποιώντας την ακολουθία fork/exec, ο γονέας (συνήθως ένας command interpreter ή ο φλοιός) ουσιαστικά επιτρέπει στους απογόνους να κάνουν προσπελάσεις/εγγραφές σε αρχεία, τερματικά, συνδέσεις δικτύου, διοεχτεύεσεις, κλπ. Χωρίς ύπαρξη wait() ή waitpid() η γονική διεργασία δεν αναμένει τερματισμό των απογόνων (π.χ. $ gedit &) Με την waitpid() η γονική διεργασία αναμένει τερματισμό της διεργασίας παιδιού με το συγκεριμένο pid. Με τη wait() η γονική διεργασία αναμένει τερματισμό οποιασδήποτε διεργασίας παιδιού.

81 Υλοποίηση exec (1) Βήματα εκτέλεσης της εντολής ls μέσω φλοιού. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

82 Απλός φλοιός Ισοδυναμία wait(&status) και waitpid(-1, &status, 0) Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

83 Υλοποίηση exec (2) Συνάρτηση Λειτουργίες execl() execv() List of arguments. No environment passed. Pointer to liist of arguments. No environment passed. execle() execve() List of arguments. Pointer to list of environment values. Pointer to list of arguments. Pointer to list of environment values. execlp() List of arguments. Non-executable files given to shell. Uses search path. Pointer to list of arguments. Non-executable files given to shell. Uses search path. execvp() Υπάρχει και η πολύ απλή συνάρτηση system() που ισοδυναμεί με την εκτέλεση μιας γραμμής εντολών φλοιού πχ system( ls -l );

84 Παράδειγμα fork / exec (1) #include <stdio.h> #include <stdlib.h> #include <unistd.h> main() { int pid, status; printf("forking process\n"); pid = fork(); wait(&status); printf("the process id is %d \n", getpid()); printf("value of pid is %d\n", pid); if (pid == 0) printf("i am the child, status is %d\n", status); else printf("i am the parent, status is %d\n", status); execl("/bin/ls","/bin/ls", " l", NULL); printf("this line is not printed\n"); }

85 Παράδειγμα fork / exec (2) #include <stdio.h> #include <stdlib.h> #include <unistd.h> main(int argc, char *argv[]) { int i; pid_t h; /* δήλωση της μεταβλητής h τύπου pid_t */ h = fork(); /* δημιούργησε αντίγραφο */ if (h==0) { /* αυτό εκτελείται από το παιδί */ for (i=0; i<3; i++) { printf("**child %d\n", i); } exit(0); /* το παιδί τερματίζει κανονικά */ } else if (h>0) { /* αυτό εκτελείται από τον γονέα */ for (i=0; i<3; i++) { printf("*parent %d\n", i); } exit(0); /* ο γονέας τερματίζει κανονικά */ } else { /* δεν δημιουργήθηκε παιδί */ printf("fork error!\n"); exit(1); /* ο γονέας τερματίζει με σφάλμα */ } }

86 #include <stdio.h> #include <stdlib.h> #include <unistd.h> main(int argc, char *argv[]) { pid_t h1, h2, h; int status, i; h1 = fork(); /* ημιουργία πρώτου παιδιού */ if (h1 < 0) { printf("error forking process 1\n"); exit(1); /* ο γονέας τερματίζει με σφάλμα */ } else if (h1 == 0) { /* Κώδικας παιδιού 1 */ exit(0); /* το παιδί 1 τερματίζει κανονικά */ } h2 = fork(); /* ημιουργία δεύτερου παιδιού */ if (h2 < 0) { printf("error forking process 2\n"); exit(1); /* ο γονέας τερματίζει με σφάλμα */ } else if (h2 == 0) { /* Κώδικας παιδιού 2 */ exit(0); /* το παιδί 2 τερματίζει κανονικά */ } /* Από εδώ και κάτω κώδικας γονέα: */ h = wait(&status); /* περίμενε ένα οποιοδήποτε παιδί */ printf("parent message: Child %d has finished\n", h); h = wait(&status); /* περίμενε το δεύτερο παιδί */ printf("parent message: Child %d has finished\n", h); exit(0); /* ο γονέας τερματίζει κανονικά */ } Παράδειγμα fork / wait

87 Παράδειγμα φλοιού #include <stdio.h> #include <string.h> #include <unistd.h> int main(void) { char command[80]; int pid, status; for(;;) { printf("my_shell: "); if(fgets(command, sizeof(command), stdin) == NULL) { printf("\n"); return 0; } command[strlen(command) 1] = '\0'; if((pid = fork()) == 0) execlp(command, command, 0); while(wait(&status)!= pid) continue; printf("\n"); } }

88 Παράδειγμα εφαρμογής (1) /* myprogram.c: παίρνει ένα όρισμα n θετικό ακέραιο */ /* από τη γραμμή εντολών και τυπώνει ένα τρίγωνο με n γραμμές */ /* gcc -o myprogram myprorgram.c */ #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, char *argv[]) { int i,j; printf("%d", argc); if (argc!= 2) { printf("usage: %s a positive integer\n", argv[0]); exit(0); } for (i=0; i<atoi(argv[1]); i++){ for (j=1; j<=i; j++) printf("*"); printf("\n"); } }

89 Παράδειγμα εφαρμογής (2) /* test.c εκτελεί το myprogram 25 και myprogram 38 */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> main(int argc, char *argv[]) { pid_t h1, h2; h1 = fork(); if (h1<0) {exit(1);} if (h1==0) { /* δημιούργησε ένα παιδί */ /* error forking child 1 */ /* αντικατέστησε το παιδί*/ /* με το πρόγραμμα myprogram 25 */ execl("./myprogram","./myprogram", "25", NULL); } h2 = fork(); /* δημιούργησε δεύτερο παιδί */ if (h2<0) {exit(1);} /* error forking child 2 */ if (h2==0) { /* αντικατέστησε το δεύτερο παιδί */ /* με το πρόγραμμα myprogram 38 */ execl("./myprogram","./myprogram", "38", NULL); } }

90 Νήματα POSIX (1) Μερικές κλήσεις συστήματος των Pthreads. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

91 Νήματα POSIX (2)... Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

92 Νήματα POSIX (3) #include <pthread.h> #include <stdio.h> #include <stdlib.h> char * buf = "abcdefghijklmnopqrstuvwxyz"; int num_pthreads = 4; int count = 60; int fd = 1; void * new_thread(void * arg) { int i; for (i = 0; i < count; i++) { write(fd, arg, 1); sleep(1); } return(null); //pthread_exit(null); }

93 Νήματα POSIX (4) main() { pthread_t thread; int i; for (i = 0; i < num_pthreads; i++) { if (pthread_create(&thread, NULL, new_thread, (void *)(buf + 3*i))) { fprintf(stderr, "error creating a new thread \n"); exit(1); } pthread_detach(thread); } pthread_exit(null); return 0; }

94 #include <pthread.h> #include <stdio.h> #include <stdlib.h> #define NUM_THREADS Νήματα POSIX (5) 3 void *BusyWork(void *null) { int i; double result=0.0; for (i=0; i< ; i++) { result = result + (double)random(); } printf("thread result = %e\n",result); pthread_exit((void *) 0); } int main(int argc, char *argv[]) { pthread_t thread[num_threads]; pthread_attr_t attr; int rc, t; void *status; /* Initialize and set thread detached attribute */ pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);

95 for(t=0;t<num_threads;t++) { printf("creating thread %d\n", t); rc = pthread_create(&thread[t], &attr, BusyWork, NULL); if (rc) { printf("error; return code from pthread_create() is %d\n", rc); exit(-1); } } Νήματα POSIX (6) /* Free attribute and wait for the other threads */ pthread_attr_destroy(&attr); for(t=0;t<num_threads;t++) { rc = pthread_join(thread[t], &status); if (rc) { printf("error return code from pthread_join() is %d\n", rc); exit(-1); } printf("joined with thread %d status= %ld\n",t,(long)status); } pthread_exit(null); }

96 Διεργασίες και Νήματα στα Windows Κλήσεις συστήματος για βασική διαχείριση διεργασιών και νημάτων σε Win32 API

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διεργασίες και Νήματα Εργαστηριακές Ασκήσεις ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διεργασίες και Νήματα Εργαστηριακές Ασκήσεις Υλικό από: Modern Operating Systems Laboratory Exercises, Shrivakan Mishra Σύνθεση Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο

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

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

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

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

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

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

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διεργασίες και Νήματα ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διεργασίες και Νήματα Υλικό από: Tanenbaum, Modern Operating Systems,Structured Computer Organization Stallings, Operating Systems: Internals and Design Principles. Silberschatz,

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διεργασίες και Νήματα ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διεργασίες και Νήματα Υλικό από: Tanenbaum, Modern Operating Systems,Structured Computer Organization Stallings, Operating Systems: Internals and Design Principles. Silberschatz,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: nifantop@unipi.gr Περιεχόμενα ενότητας Διεργασίες Κλήσεις δημιουργίας και τερματισμού διεργασιών Επικοινωνία διεργασιών μέσω

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

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

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1 Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας

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

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

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

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

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

Προγραμματισμός συστημάτων UNIX/POSIX. Διεργασίες (processes) Προγραμματισμός συστημάτων UNIX/POSIX Διεργασίες (processes) Δομή αρχείου προγράμματος Πρόγραμμα (program) ονομάζεται το εκτελέσιμο αρχείο που βρίσκεται αποθηκευμένο στο δίσκο (π.χ. το a.out, ή το ls ή

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

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

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1 Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας

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

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

NIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4 NIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4 1 Ένα thread έχει: ID, program counter, register set, stack Μοιράζεται με τα άλλα threads της ίδιας διεργασίας τον κώδικα, τα δεδομένα και τους άλλους πόρους

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

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

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

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

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

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

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

Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας

Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας Το επίπεδο προτεραιότητας µιας διεργασίας µπορεί να αλλάξει µε χρήση της συνάρτησης nice. Κάθε διεργασία διαθέτει µια τιµή που καλείται

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

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΔΙΕΡΓΑΣΙΕΣ +- Με τον όρο διεργασία στο UNIX εννοούμε τη δυναμικη πράξη της

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

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

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

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

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

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης III

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης III ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διαχείριση μνήμης III Υλικό από: Tanenbaum, Modern Operating Systems,Structured Computer Organization Stallings, Operating Systems: Internals and Design Principles. Silberschatz,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής ΕΥ311-Διαδικτυακός και Ταυτόχρονος Προγραμματισμός Εργαστήριο: Παραδείγματα δημιουργίας διεργασιών στο Linux Ένα πρόγραμμα (το στιγμιότυπο της εκτέλεσης του οποίου

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ένα πρόγραμμα σε εκτέλεση, Μια ασύγχρονη δραστηριότητα,

Ένα πρόγραμμα σε εκτέλεση, Μια ασύγχρονη δραστηριότητα, Διεργασίες 1. Εισαγωγή - ορισμοί 2. Καταστάσεις διεργασίας 3. Διαγράμματα καταστάσεων 4. Μπλοκ ελέγχου διεργασίας PCB 5. Υπηρεσίες Λ.Σ. για διαχείριση διεργασιών 6. Εναλλαγή Πλαισίου (Context Switch) 7.

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

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

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

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Επισκόπηση Λ.Σ. Εργαστηριακές Ασκήσεις ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Επισκόπηση Λ.Σ. Εργαστηριακές Ασκήσεις Υλικό από: Modern Operating Systems Laboratory Exercises, Shrivakan Mishra Σύνθεση Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο

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

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

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

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

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

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

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

Χρονοδρομολογητής Κυκλικής Επαναφοράς

Χρονοδρομολογητής Κυκλικής Επαναφοράς Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων 4 η Εργαστηριακή Άσκηση: Χρονοδρομολογητής Κυκλικής Επαναφοράς Λειτουργικά Συστήματα Υπολογιστών

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

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

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

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

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

ΤρόποςΑξιολόγησης: α) Εργαστήρια (Προαιρετικάµε 20% - 35% βαρύτητα µόνοθετικά) β) Τελική Γραπτή Εξέταση ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX Ύλη του Μαθήµατος Μάθηµα: Λειτουργικά Συστήµατα ΙΙ UNIX Βιβλίο Μαθήµατος: α) Tanenbaum, A.:ΣύγχροναΛειτουργικάΣυστήµατα, 2ηΈκδοση, Εκδόσεις Κλειδάριθµος. β) Wrightson, K.,

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

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

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

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

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

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

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

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

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

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

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

Εργαστήριο 5 fork(), exec(), signals Εργαστήριο 5 fork(), exec(), signals Στο εργαστήριο θα μελετηθούν: Παραδείγματα χρήσης των συναρτήσεων fork και exec Συνάρτηση waitpid Συνάρτηση WIFEXITED Συνάρτηση WEXITSTATUS Παράδειγμα χρήσης σημάτων

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

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

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

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

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

Εκφωνήσεις ασκήσεων εργαστηρίου 1 Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Σχολή Τεχνολογικών Εφαρμογών Ακαδημαϊκό έτος 2016-2017 ΤΕΙ Ηπείρου - Άρτα Κατανεμημένα και Παράλληλα Συστήματα (εργαστήριο) Γκόγκος Χρήστος Εκφωνήσεις ασκήσεων εργαστηρίου

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

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά

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

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

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

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

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

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

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

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

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

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

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

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

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

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

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

$./jms console -w <jms in> -r <jms out> -o <operations file> namedpipe. (standard input).

$./jms console -w <jms in> -r <jms out> -o <operations file> namedpipe. (standard input). Κ24: Προγραμματισμός Συστήματος 2η Εργασία Εαρινό Εξάμηνο 2017 Προθεσμία Υποβολής: Κυριακή 30 Απριλίου 2017 Ωρα 23:59 Εισαγωγή στην Εργασία: Ο στόχος της εργασίας αυτής είναι να εξοικειωθείτε με την δημιουργία

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

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

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

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

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

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

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

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

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

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

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

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

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

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

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

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

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

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες 0x375 - Thessaloniki Tech Talks Sessions Event 0x2 19 Μαρτίου 2010 Περιεχόμενα 1 Εισαγωγή 2 Η κλήση συστήματος ptrace 3 Νήματα 4 Το πρόγραμμα εισαγωγής κώδικα prez 5 Επίλογος Γιατί; Πολλές φορές θέλουμε

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

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

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

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

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

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

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

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

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

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διεργασίες και Νήματα Εργαστηριακές Ασκήσεις ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διεργασίες και Νήματα Εργαστηριακές Ασκήσεις Υλικό από: Modern Operating Systems Laboratory Exercises, Shrivakan Mishra Σύνθεση Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο

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

Μεθόδων Επίλυσης Προβλημάτων

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 9 Συναρτήσεις Μέρος II Θέματα ιάλεξης Μη- ομημένος

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

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

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

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

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

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

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

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

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

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

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

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

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

Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19 Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών 3.1.1 Λογισμικό και Υπολογιστικό Σύστημα Τι είναι το υλικό ενός υπολογιστικού συστήματος; Το σύνολο των ηλεκτρονικών και μηχανικών μερών του που έχουν

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

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12) Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II (Διάλεξη 12) 12-1 Ανασκόπηση Δομής Προγράμματος με Συναρτήσεις 1 void PrintMessage (); Πρότυπο (Δήλωση) Συνάρτησης (Δηλώνουν τι επιπλέον συναρτήσεις θα χρησιμοποιήσουμε

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

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

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

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

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

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

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

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

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

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

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

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

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

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

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

UNIX System Programming

UNIX System Programming UNIX System Programming Processes Objectives look at how to program UNIX processes fork( ), wait( ) Overview 1. What is a Process? 2. fork() 3. wait() 4. Process Data 1. What is a Process? A process is

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

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

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

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

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

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

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

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

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΕΡΓΑΣΙΕΣ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΕΡΓΑΣΙΕΣ Πολυεπεξεργασία Διεργασία (process) Νήμα (thread) Εργασία (task/job) Διεργασίες Διεργασία είναι μια (συγκεκριμένη) εκτέλεση κάποιου προγράμματος για λογαριασμό κάποιου

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

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

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

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

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

ΗΜΥ Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών ΗΜΥ 213 - Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών ΗΜΥ 213 Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών Διάλεξη 4 Περίληψη Συναρτήσεις Χρονόμετρο Χρήση Διακοπτών Coprocessor Διαχείριση

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

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

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

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

Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 12-1 Ανασκόπηση οµής Προγράµµατος µε Συναρτήσεις #include 1 void PrintMessage (); Πρότυπο ( ήλωση) Συνάρτησης (

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

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

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

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

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά

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

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

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

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

Παρουσίαση 5 ης Άσκησης:

Παρουσίαση 5 ης Άσκησης: Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Παρουσίαση 5 ης Άσκησης: Θέματα Συγχρονισμού σε Σύγχρονα Πολυπύρηνα Συστήματα Ακ. Έτος

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

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος Κεφάλαιο 3.1: Λειτουργικά Συστήματα 1 3.1.1 Λογισμικό και Υπολογιστικό Σύστημα Ένα σύγχρονο υπολογιστικό σύστημα αποτελείται από: το υλικό: τα ηλεκτρονικά μέρη του υπολογιστή και το λογισμικό: το σύνολο

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

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

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

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

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

Εργαστήριο 7 fork(), exec(), signals Εργαστήριο 7 fork(), exec(), signals Στο εργαστήριο θα μελετηθούν: Παραδείγματα χρήσης των συναρτήσεων fork και exec Συνάρτηση waitpid Συνάρτηση WIFEXITED Συνάρτηση WEXITSTATUS Παράδειγμα χρήσης σημάτων

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

Παρουσίαση 5 ης Άσκησης:

Παρουσίαση 5 ης Άσκησης: Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Παρουσίαση 5 ης Άσκησης: Θέματα Συγχρονισμού σε Σύγχρονα Πολυπύρηνα Συστήματα Ακ. Έτος

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

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

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

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

Λειτουργικά Συστήματα (ΗΥ-345) Χειμερινό Εξάμηνο

Λειτουργικά Συστήματα (ΗΥ-345) Χειμερινό Εξάμηνο Λειτουργικά Συστήματα (ΗΥ-345) Χειμερινό Εξάμηνο 2018-2019 Άσκηση 1 Φροντιστήριο: 05/10/2018 Παράδοση: 18/10/2018 Υλοποίηση Linux C Shell ΤΑ : shevtsov(shevtsov@csd.uoc.gr) Ώρες Γραφείου : Δευτέρα 14:00-16:00

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

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

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

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

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής Γιώργος Δημητρίου Μάθημα 3-4: Προγραμματισμός MIPS Προγραμματισμός σε Συμβολική Γλώσσα Η συμβολική γλώσσα: δεν έχει τύπους, δεν έχει δηλώσεις μεταβλητών, δεν έχει δομές ελέγχου, δεν έχει εντολές βρόχων,

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

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

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

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