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

Μέγεθος: 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 Σύνθεση Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας

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

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

4 Μοντέλο διεργασίας (2) Μια διεργασία μπορεί να συνεπάγεται την εκτέλεση περισσοτέρων του ενός προγραμμάτων. Αντίστροφα ένα συγκεκριμένο πρόγραμμα ή μια ρουτίνα μπορεί να αποτελέσει τμήμα περισσοτέρων της μιας διεργασιών. Πχ : μια ρουτίνα που χρησιμοποιείται για να τοποθετήσει ένα στοιχείο σε μια λίστα δεδομένων, μπορεί να χρησιμοποιείται από κάθε διεργασία που συμπεριλαμβάνει στις δραστηριότητές της χειρισμούς στοίβας ή ουρών. Το πρόγραμμα ή τα προγράμματα που σχετίζονται με μια διεργασία δεν είναι απαραίτητο να υλοποιούνται υποχρεωτικά με τη μορφή λογισμικού. Πχ : η δραστηριότητα ενός διαύλου που πραγματοποιεί μεταφορά δεδομένων, θα μπορούσε να θεωρηθεί ως διεργασία στην οποία το σχετικό πρόγραμμα βρίσκεται μέσα στο υλικό του διαύλου. Από την πλευρά αυτή κάθε ελεγκτής μιας περιφερειακής συσκευής είναι ένας επεξεργαστής που μπορεί να εκτελεί μια μόνο διεργασία.

5 Μοντέλο διεργασίας (3) (a) Πολυπρογραμματισμός τεσσάρων προγραμμάτων, αυτό που συμβαίνει σε επίπεδο αρχιτεκτονικής. (b) Λογική αφαίρεση τεσσάρων ανεξαρτήτων ακολουθιακών διεργασιών, αυτό που 'βλέπουν' τα επίπεδα πάνω από το λ.σ. (c) Μόνο ένα πρόγραμμα είναι ενεργό ανά πάσα στιγμή.

6 Καταστάσεις διεργασίας Διάρκεια ζωής μιας διεργασίας = το χρονικό διάστημα μεταξύ της δημιουργίας και τερματισμού της από το λ.σ. Κατά τη διάρκεια ζωής της κάθε διεργασία μπορεί να βρεθεί σε μια σειρά από διακριτές καταστάσεις, με δύο βασικότερες, την εκτέλεση και την αναστολή. Διάφορα γεγονότα ή συμβάντα αναγκάζουν μια διεργασία να μεταβάλει την κατάστασή της. Η εκτέλεση μιας διεργασίας αρχικά αντιμετωπίζεται απλά και αναλύεται παρακάτω σε πιο σύνθετα διαγράμματα καταστάσεων.

7 Παράδειγμα

8 Στιγμιότυπο εκτέλεσης

9 Αποτύπωση διεργασιών

10 Δρομολόγηση

11 Διάγραμμα 2 καταστάσεων (1) Κατά την εκτέλεση των προγραμμάτων των χρηστών, οι διεργασίες δημιουργούνται και εισέρχονται στη λίστα των έτοιμων διεργασιών. Με την πάροδο του χρόνου μια διεργασία προωθείται προς την κεφαλή της λίστας και μόλις ο επεξεργαστής γίνει διαθέσιμος η διεργασία ανατίθεται στον επεξεργαστή και η κατάστασή της αλλάζει σε εκτελούμενη. Η διαδικασία της ανάθεσης της πρώτης διεργασίας από τη λίστα των έτοιμων διεργασιών στον επεξεργαστή ονομάζεται διεκπεραίωση και υλοποιείται από μια οντότητα του συστήματος, τον διεκπεραιωτή (dispatcher). Για να αποφευχθεί η μονοπώληση της χρήσης του επεξεργαστή, το Λ.Σ. χρησιμοποιεί έναν εσωτερικό χρονιστή, μια συσκευή (interrupting clock) που παράγει μια χρονοδιακοπή (timeout) μετά από την πάροδο ενός προκαθορισμένου χρονικού ορίου, που ονομάζεται καταιγισμός (burst) ή κβάντο χρόνου (quantum) ή time slice. Αν η διεργασία δεν εκχωρήσει από μόνη της τον επεξεργαστή, πριν παρέλθει το κβάντο χρόνου, το Λ.Σ. μέσω της διακοπής που παράγεται, αναλαμβάνει τον έλεγχο του επεξεργαστή. Η κατάσταση της τρέχουσας διεργασίας αλλάζει σε έτοιμη και προωθείται προς εκτέλεση η αμέσως επόμενη διεργασία.

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

13 Διάγραμμα 3 καταστάσεων (1) Πιθανές βασικές καταστάσεις: Εκτελούμενη (running): η διεργασία χρησιμοποιεί τη CPU εκείνη τη στιγμή. Έτοιμη (ready): η διεργασία έχει διακοπεί προσωρινά για να εκτελεστεί κάποια άλλη. Υπό αναστολή ή μπλοκαρισμένη (blocked): η διεργασία δεν μπορεί να εκτελεστεί μέχρι να συμβεί κατάλληλο εξωτερικό συμβάν. Μια διεργασία μπορεί να αναστείλει τον εαυτό της (ζητώντας πχ από το σύστημα μια λειτουργία Ε/Ε) αλλά δεν μπορεί να εκτελεστεί μόνη της. Πχ cat file1 file2 file3 grep hello

14 Διάγραμμα 3 καταστάσεων (2) event wait dispatch timeout event occurs Διάγραμμα 2 καταστάσεων

15 Διαγράμματα 5 καταστάσεων (1) Αν μια εκτελούμενη διεργασία απαιτήσει πχ μια λειτουργία Ε/Ε πριν λήξει το κβάντο χρόνου της, παραιτείται από τη χρήση του επεξεργαστή (επειδή αναμένει την ολοκλήρωση της Ε/Ε λειτουργίας). Η διεργασία τελεί υπό αναστολή. Οι υπό αναστολή διεργασίες θεωρούνται κοιμώμενες (sleep), επειδή δεν μπορούν να εκτελεστούν, ακόμη και αν ο επεξεργαστής καταστεί διαθέσιμος. Όταν ολοκληρωθεί μια διαδικασία Ε/Ε η αντίστοιχη διεργασία αλλάζει την κατάστασή της (wakeup) από υπό αναστολή σε έτοιμη και εισέρχεται στη λίστα των έτοιμων διεργασιών. Οι καταστάσεις διεργασιών αποτυπώνονται στα διαγράμματα 5 καταστάσεων. Συνεχίζοντας από το προηγούμενο διάγραμμα προσθέτουμε τiς καταστάσεις new και exit. Η μετάβαση από μια κατάσταση σε μία άλλη γίνεται λόγω της ύπαρξης των συγκεκριμένων γεγονότων: admit, dispatch, timeout, event-wait, enet-occur, release.

16 Διάγραμμα 5 καταστάσεων (2) διάγραμμα 3 καταστάσεων

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

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

19 Δημιουργία διεργασίας Γεγονότα που προκαλούν δημιουργία διεργασίας: Εκκίνηση συστήματος. Σύνδεση νέου χρήστη. Μια εκτελούμενη διεργασία αιτείται τη παροχή μιας υπηρεσίας ή την εκτέλεση μιας εφαρμογής. Μια εκτελούμενη διεργασία καλεί μια κλήση συστήματος για τη δημιουργία διεργασίας. Ένας χρήστης ζητά τη δημιουργία νέας διεργασίας (εκτέλεση ενός προγράμματος ή μιας εντολής φλοιού). Εκκίνηση μιας εργασίας δέσμης / σεναρίου φλοιού ή μιας χρονοδρομολογημένης εργασίας. Πρέπει να ικανοποιούνται περιορισμοί του συστήματος, πχ αριθμός ενεργών διεργασιών, χώρος στη μνήμη, δικαιώματα δημιουργού κλπ.

20 Τερματισμός διεργασίας Γεγονότα που προκαλούν τερματισμό διεργασίας: Κανονική έξοδος (τερματισμός). Εσφαλμένη έξοδος (επιστροφή κωδικου σφάλματος) Μοιραίο σφάλμα (Fatal error κατά την εκτέλεση) πχ μη έγκυρη εντολή, προνομιούχος εντολή, αριθμητικά σφάλματα, σφάλαματα υπερχείλισης, υπέρβαση ορίων μνήμης, σφάλματα Ε/Ε, σφάλματα προστασίας, πέρας διαθέσιμου χρόνου Εξαναγκασμός σε τερματισμό από άλλη διεργασία (Αποστολή σήματος δια-διεργασιακή επικοινωνία, Kill). Εξαναγκασμός σε τερματισμό από το χρήστη.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

45 Τυπική υλοποίηση διεργασίας Δύο διεργασίες Α και Β υπάρχουν σε τμήματα μνήμης. Ένα τμήμα μνήμης (χώρος διευθύνσεων) ανατίθεται σε κάθε διεργασία. Θυμηθείτε τους καταχωρητές για κάθε περιοχή του χώρου διευθύνσεων. Παρατηρείστε το χειρισμό του context και το πίνακα διεργασιών με τα PCB's. Ποια διεργασία εκτελείται αυτή τη στιγμή;

46 Πίνακας διεργασιών (1) 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

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

48 Process Control Block (PCB) Process identification Process identification Process identification Process state information Process state information Process state information Process control information Process control information Process control information User stack User stack Private user address space Private user address space Private user address space Shared address space Shared address space Shared address space User stack Φυσική θέση του PCB σε σχέση με το χώρο διευθύνσεων διεργασιών. Process Control Block

49 Πληροφορίες PCB (1) Μια άλλη εικόνα των πεδίων ενός στοιχείου του πίνακα διεργασιών Περιλαμβάνει ακόμη Πληροφορίες χρονο δρομολόγησης Πληροροφορίες Ε/Ε Πληροφορίες καταγραφών λ.σ.

50 Πληροφορίες PCB (2) Μερικά από τα πεδία ενός PCB πίνακα διεργασιών.

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

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

53 Θεματική εναλλαγή (Context switch) (2)

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

55 Θεματική εναλλαγή (Context switch) (4) Σκελετός των ενεργειών του χαμηλοτέρου επιπέδου του λειτουργικού συστήματος κατά την εξυπηρέτηση διακοπής για θεματική εναλλαγή.

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

57 Ουρές διεργασιών (2) Ουρές διεργασιών για το διάγραμμα 3 καταστάσεων. Όλες οι ουρές συσκευών Ε/Ε φαίνονται ως blocked queue.

58 Ουρές διεργασιών (3) Ουρές διεργασιών για διάγραμμα 3 καταστάσεων: λεπτομέρειες υλοποίησης.

59 Ουρές διεργασιών (4) Job queue Ουρές διεργασιών για το διάγραμμα 5 καταστάσεων.

60 Ουρές διεργασιών (5) Job queue Ουρές διεργασιών για το διάγραμμα 6 καταστάσεων.

61 Χρονο-προγραμματιστές (1) Το χαμηλότερο επίπεδο ενός λειτουργικού συστήματος βασισμένου σε διεργασίες διαχειρίζεται τις διακοπές και τη χρονο-δρομολόγηση ή χρονοπρογραμματισμό. Πάνω από αυτό το επίπεδο υπάρχουν (φαίνονται) ακολουθιακές διεργασίες. Οι χρονο-δρομολογητές είναι το τμήμα του πυρήνα το λ.σ. που διαχειρίζονται τις ουρές διεργασιών με βάση τα γεγονότα που προκαλεί η εκτέλεσή τους και τις διακοπές.

62 Ουρές διεργασιών και γεγονότα Η εκτέλεση διεργασιών προκαλεί γεγονότα, τη δημιουργία άλλων διεργασιών ή την εκτέλεση άλλων διαδικασιών (E/E ή διακοπών λογισμικού). Επίσης έχουμε εξωτερικές διακοπές ή παγιδεύσεις.

63 Χρονο-προγραμματιστές (2) Ουρές μακροχρόνιου και βραχυχρόνιου χρονοδρομολογητήγια το διάγραμμα 5 καταστάσεων.

64 Ουρές διεργασιών (6) Ουρές διεργασιών για το διάγραμμα των 7 καταστάσεων.

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

66 Μοντέλο Νήματος (Thread) (1) Ένα νήμα σε επίπεδο CPU είναι μια απλή ακολουθία εντολών (ή μικρο-εντολών) που εκτελείται σε έναν επεξεργαστή. Στους υπερβαθμωτούς και κυρίως στους πολυνηματικούς (multithreaded, hyperthreaded) επεξεργαστές επιτυγχάνεται η ταυτόχρονη εκτέλεση πολλαπλών νημάτων, δηλαδή ακολουθιών εντολών οι οποίες ανήκουν μεν στο ίδιο κώδικα γλώσσας μηχανής αλλά είναι σχετικά ανεξάρτητες μεταξύ τους. Τη διευθέτηση των πιθανών εξαρτήσεων ή κινδύνων (hazards) αναλαμβάνουν οι μονάδες issue και retire της CPU. Το νήμα σε επίπεδο λ.σ. και εφαρμογής επεκτείνει και οργανώνει την παραπάνω έννοια και χαρακτηρίζεται από δικό του: - μετρητή προγράμματος - δείκτη στοίβας - περιοχή δεδομένων

67 Multi Threading Process 1 Process 2

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

69 Χρήση Νημάτων (1) Επεξεργαστής κειμένου με τρία νήματα.

70 Χρήση Νημάτων (2) Ένας πολυνηματικός διακομιστής Ιστού και το λ.σ.

71 Χρήση Νημάτων (3) Χονδρικός σκελετός του κώδικα του διακομιστή Ιστού. (a) Νήμα Διανομέα. (b) Νήμα Εργαζομένου.

72 Χρήση Νημάτων (4) Τρείς τρόποι να δομήσουμε ένα διακομιστή.

73 Χρήση Νημάτων (5) (a) Τρείς διεργασίες με ένα νήμα η κάθε μια. (b) Μια διεργασία με τρία νήματα. Δεν φαίνεται η περίπτωση μιας διεργασίας με ένα νήμα (χωρίς παραλληλισμό)

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

75 Σχέση νήματος και διεργασίας (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

76 Σχέση νήματος και διεργασίας (2) Η στήλη Per process πριέχει στοιχεία κοινά για όλα τα νήματα μια διεργασίας. Η στήλη Per thread περιέχει στοιχεία ιδιωτικά για κάθε νήμα.

77 Σχέση νήματος και διεργασίας (3) Κάθε νήμα έχει τη δική του στοίβα.

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

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

80 Παράδειγμα προγράμματος σε γλώσσα 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);

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

82 Το πρόγραμμα ως διεργασία με δύο νήματα (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);

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

84 Πολυνηματικός Κώδικας (1) Σύγκρουση μεταξύ νημάτων για τη χρήση καθολικής μεταβλητής.

85 Πολυνηματικός Κώδικας (2) Τα νήματα μπορούν να έχουν ιδιωτικές καθολικές μεταβλητές.

86 Υλοποίηση νημάτων (1) Process A Process B User Level Thread Thread Kernel Thread

87 Υλοποίηση νημάτων (2) (a) Νήματα σε επίπεδο χρήστη (User Level Threads, ULTs). (b) Νήματα σε επίπεδο πυρήνα (Kernel Level Threads, KLTs).

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

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

90 Υλοποίηση νημάτων (3) Υβριδική υλοποίηση νημάτων: Πολυπλεξία νημάτων επιπέδου χρήστη σε νήμα επιπέδου πυρήνα.

91 Αναδυόμενα νήματα Δημιουργία νέου νήματος όταν φθάνει ένα μήνυμα. (a) Πριν την άφιξη του μηνύματος. (b) Μετά την άφιξη του μηνύματος. Εφαρμογή σε κατανεμημένα συστήματα (και Java).

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

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

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

95 Κλήσεις Συστήματος για Διαχείριση Διεργασιών Κλήσεις συστήματος POSIX για διαχείριση διεργασιών.

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

97 fork / join (2) Δημιουργία διεργασίας στο Linux.

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

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

100 Υλοποίηση exec (1) Βήματα εκτέλεσης της εντολής ls μέσω φλοιού.

101 Υλοποίηση 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 );

102 fork / exec / exit / wait - παράδειγμα fork parent fork child Αρχικοποίηση πλαισίου του κλώνου wait exec exit int pid = fork(); Δημιουργεί μια νέα διεργασία που είναι κλώνος της γονικής διεργασίας. exec( program [,argvp, envp]); Επικάλυψη της εικονικής μνήμης της καλούμενης διεργασίας με ένα νέο πρόγραμμα και μεταφορά του ελέγχου σε αυτό. exit(status); Έξοδος με καταστροφή της διεργασίας - κλώνου. int pid = wait(&status); Αναμένει για έξοδο (ή άλλη αλλαγή κατάστασης) του απογόνου.

103 Απλός φλοιός Linux Ισοδυναμία wait(&status) και waitpid(-1. &status, 0)

104 Παράδειγμα 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"); }

105 Παράδειγμα 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); /* ο γονέας τερματίζει με σφάλμα */ } }

106 #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

107 Παράδειγμα φλοιού (2) #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"); } }

108 Παράδειγμα εφαρμογής (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"); } }

109 Παράδειγμα εφαρμογής (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); } }

110 Διεργασίες στη Java // RunChild.java -- example for running a child process import java.io.*; class RunChild { public static void main(string[] args) throws Exception { if (args.length > 0) { System.out.println("creating child"); Process p = Runtime.getRuntime().exec(args); BufferedReader r = new BufferedReader( new InputStreamReader(p.getInputStream()) ); String x; while ((x = r.readline())!= null) { System.out.println(x); } r.close(); p.waitfor(); System.out.println("child finished"); } } } // usage example: java RunChild /bin/uname -a

111 Νήματα POSIX (1) Μερικές κλήσεις συστήματος των Pthreads.

112 Νήματα POSIX (2)... Παράδειγμα προγράμματος με χρήση Ptheads.

113 #include <pthread.h> #include <stdio.h> #include <stdlib.h> #define NUM_THREADS 3 Νήματα POSIX (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);

114 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 (4) /* 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("completed join with thread %d status= %ld\n",t, (long)status); } pthread_exit(null); }

115 Java Threads (1) class ThreadEx1 { public static void main(string[] args) { // Δημιουργία νημάτων MyThread1 thr1 = new MyThread1(); MyThread1 thr2 = new MyThread1(); MyThread1 thr3 = new MyThread1(); // Εκτέλεση νημάτων thr1.start(); thr2.start(); thr3.start(); } } class MyThread1 extends Thread { // Εκτελέσιμο τμήμα του νήματος public void run() { // Εμφάνιση μυνήματος System.out.println("My name is " + getname()); } }

116 Java Threads (2) class ThreadEx2 { public static void main(string[] args) { MyThread2 myobj1 = new MyThread2(0); MyThread2 myobj2 = new MyThread2(1); Thread thr1 = new Thread(myObj1); Thread thr2 = new Thread(myObj2); thr1.start(); thr2.start(); } } class MyThread2 implements Runnable { private int myid; MyThread2(int myid) { this.myid = myid; } public void run() { System.out.println("My name is " + Thread.currentThread().getName() + " and my identifier is " + myid); }

117 fork / join με νήματα (1) Πολλά παράλληλα συστήματα διαμοιραζόμενης μνήμης χρησιμοποιούν ένα μοντέλο προγραμματισμού που ονομάζεται Fork/Join. Κάθε πρόγραμμα ξεκινά εκτελούμενο σε ένα απλό νήμα που ονομάζεται γονέας (parent ). Fork: όταν η εκτέλεση φθάσει σε μια παράλληλη περιοχή, το πρωτεύον νήμα γεννά επιπρόσθετα θυγατρικά (child) νήματα. Join: Όταν η παράλληλη περιοχή ολοκληρωθεί, τα θυγατρικά νήματα τερματίζονται, αφήνοντας μόνο το νήμα γονέα να τρέχει.

118 fork/join με νήματα (2) Parent Thread Start Fork Overhead Child Threads Compute time Join Overhead End

119 fork/join με νήματα (3) Θεωρητικά, καθώς ένα παράλληλο τμήμα ολοκληρώνεται, τα θυγατρικά νήματα τερματίζονται δηλ. συνδέονται με τον γονέα (join the parent), διακλαδιζόμενα εκ νέου όταν ο γονέας συναντήσει μια άλλη παράλληλη περιοχή. Στην πράξη, τα νήματα απόγονοι συνεχίζουν να υπάρχουν αλλά είναι άεργα (idle). Σε ορισμένους υπολογιστές με διαμοιραζόμενη μνήμη, το επιπλέον κόστος για fork και join είναι υψηλό, συγκρινόμενο με το κόστος υπολογισμού, έτσι επιλέγεται τα νήματα απόγονοι να παραμένουν άεργα μέχρι το επόμενο παράλληλο τμήμα, παρά να δαπανάται επιπλέον μη ωφέλιμος χρόνος.

120 fork/join με νήματα (4) Start Fork Start Fork Idle Join End Join End

121 fork/join με νήματα: OpenMP #include <omp.h> #include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[]) { int nthreads, tid; /* Fork a team of threads giving them their own copies of variables */ #pragma omp parallel private(nthreads, tid) { /* Obtain thread number */ tid = omp_get_thread_num(); printf("hello World from thread = %d\n", tid); /* Only master thread does this */ if (tid == 0) { nthreads = omp_get_num_threads(); printf("number of threads = %d\n", nthreads); } } /* All threads join master thread and disband */ }

122 fork/join με πολυνηματική εκτέλεση (1)

123 fork/join με πολυνηματική εκτέλεση (2) Βήμα 1: Σε κάθε εντολή κόμβο του γράφου δώσε μια πινακίδα (Label) Βήμα 2: Για κάθε κόμβο που διακλαδίζεται σε n παιδιά γράψε n 1 fork και 1 goto μετά από την εντολή που εκτελεί ο κόμβος. Πχ. αν ο κόμβος έχει τρια παιδιά με πινακίδες L4, L5, και L7, γράψε fork(l4); fork(l5); goto L7; Βήμα 3: Για κάθε κόμβο στον οποίο συγκλίνουν n ακμές γράψε join(count) αμέσως μετά την πινακίδα αλλά πριν από την εντολή που αντιστοιχεί σε αυτήν. Το count αρχικοποιείται στο n. Βήμα 4 (προαιρετικό): σβήσε τα μη απαραίτητα goto.

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

125 Εκκίνηση Linux (1) Η διεργασία (daemon) init διαβάζει συγκεκριμένους καταλόγους ρυθμίσεων (inittabs) από όπου καθορίζεται ποιές υπηρεσίες θα ξεκινήσουν μετά την φόρτωση του πυρήνα (startup).

126 Εκκίνηση Linux (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

127 Σενάρια και αρχεία ρυθμίσεων στο Linux Ο πυρήνας αναζητά το εκτελέσιμο της 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 κλπ σχετικοί με τις συσκευές Ε/Ε και το υλικό του συστήματος.

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

129 POSIX signals (1) Τα σήματα (signals) είναι διακοπές λογισμικού (software interrupts).. Τα σήματα μπορεί να είνα σύγχρονα, δηλαδή να προκαλούν συγχρονισμό διεργασιών, όπως τα SIGFPE και SIGSEGV, αλλά συνήθως είναι ασύγχρονα, δηλαδή οι διεργασίες που τα παραλαμβάνουν τα χειρίζονται στο δικό τους χρόνο. Τα σήματα έχουν διάφορα επίπεδα προτεραιότητας. Για παράδειγμα, σήματα που παράγονται όταν το σύστημα διαγνώσει κάποιο σφάλμα (bus error, memory fault, illegal operation,..) ή όταν ο χρήστης ζητήσει αναστολή ή τερματισμό διαργασίας (ctrl-c ή kill) θεωρούνται επείγοντα και η παραλαμβάνουσα διεργασία πρέπει τα εξυπηρετήσει άμεσα. Το σύστημα ορίζει τον αριθμό, τον τύπο και τη προτεραιότητα των σημάτων. Ορισμένα σήματα με σχετικά χαμηλό επίπεδο προτεραιότητας μπορούν να αποκλειστούν, να αγνοηθούν ή να καθυστερήσει η εξυπηρέτησή τους, με ευθύνη του προγραμματιστή (maskable -nonmaskable signals/interrupts). Τα σήματα που αποκλείονται ορίζονται σε μιά 'μάσκα' που τη διαχειριζόμαστε με ειδικές συναρτήσεις. Σε περίπτωση που η διεργασία παραλαβής δεν προβλέπει κάποιο χειρισμό ενός σήματος, το πιθανότερο είναι οτι η παραλαβή του σήματος καταλήγει στο τερματισμό της διεργασίας.

130 POSIX signals (2) Γενικά το σύστημα έχει μια προεπιλεγμένη ενέργεια που ακολουθεί τη παραλαβή κάθε σήματος: Το σήμα απλά διαγράφεται Η διεργασία τερματίζεται Δημιουργείται ένα αντίγραφο του χώρου εργασίας της διεργασίας (core file) και η διεργασία τερματίζεται Η διεργασία αναστέλεται Τα σήματα χωρίζονται σε πέντε κατηγορίες: Συμβάντα Υλικού Συμβάντα Λογισμικού Συμβάντα Εισόδου/Εξόδου Διαχείριση Διεργασιών Διαχείριση Πόρων

131 POSIX signals (3) The signals required by POSIX. SIGHUP 1 SIGINT 2 SIGQUIT 3 SIGKILL 9 SIGALRM 14 SIGCONT 19 SIGILL 4 SIGABRT 6 SIGGCHLD 20

132 POSIX signals (4) Δύο βασικές κλήσεις συστήματος διαχείρισης σημάτων: Αποστολή: kill(pid, sig) Κλήση συστήματος που στέλνει το σήμα sig στη διεργασία pid. Αν pid > 0 το σήμα αποστέλεται στην αντίστοιχη διεργασία. Αν το pid = 0 το σήμα αποστέλεται σε όλες τις διεργασίες, εκτός από αυτές του συστήματος. Παραλαβή: sigaction(sig, &action) Κλήση συστήματος που παραλαμβάνει το σήμα sig και το διαχειρίζεται με βάση τη function(). Υπάρχουν και προκαθορισμένες συναρτήσεις..

133 Περισσότερες κλήσεις συστήματος διαχείρισης διεργασιών POSIX s : error code pid : process ID residual χρόνος που απομένει

134 Εκκίνηση Windows Διεργασίες που ξεκινούν στην εκκίνηση των Windows Πάνω από τη γραμμή ξεκινούν πάντα Κάτω από τη γραμμή είναι υπηρεσίες που ξεκινούν προαιρετικά

135 Βασικά Υποσυστήματα (1) Συσχέτιση βασικών DLLs με του υποσύστημα Win32 και τον πυρήνα.

136 Βασικά Υποσυστήματα (2) Μερικά βασικά DLLs των Windows Kerne/User mode Αριθμός κλήσεων (function calls) που εξάγουν Βασικά περιεχόμενα Οι κλήσεις στο win32k.sys γίνονται έμμεσα

137 Ρυθμίσεις στα Windows : Μητρώο (Registry) (1) 'Πολλά πράγματα είναι χαοτικά στα Windows αλλά το Registry είναι ένα από τα χειρότερα', A.S. Tanenbaum, σ 904. Ουσιαστικά αντίστοιχο των /etc, /dev, /proc κλπ του Unix/Linux.

138 Ρυθμίσεις στα Windows : Μητρώο (Registry) (2) Η διαχείριση του μητρώου γίνεται με κλήσεις συστήματος κατά την εγκατάσταση του λ.σ., ή εφαρμογών ή συσκευών.

139 Διεργασίες και Νήματα στα Windows (1) Βασική ορολογία των Windows

140 Διεργασίες και Νήματα στα Windows (2) Relationship between jobs, processes, threads, and fibers

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 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 Χειρισµός ανταγωνισµού µεταξύ

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

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

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

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

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

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στο OpenMP Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Τι είναι το OpenMP Πρότυπο Επέκταση στη C/C++ και τη Fortran

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προχωρημένα Θέματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανακατεύθυνση Εισόδου/Εξόδου Συνήθως η τυπική είσοδος ενός προγράμματος (stdin) προέρχεται

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

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

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

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

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εργαστήριο Λειτουργικών Συστημάτων. Minix Overview

Εργαστήριο Λειτουργικών Συστημάτων. Minix Overview Εργαστήριο Λειτουργικών Συστημάτων Minix Overview Σύνοψη 5ης ιάλεξης Λειτουργικό Σύστημα Minix Οργάνωση του Λειτουργικού Συστήματος Οργάνωση πηγαίου κώδικα Minix recompilation Σύνοψη Μαθήματος Σύνοψη Μαθήματος

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

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

Η πολυνηματική γλώσσα προγραμματισμού Cilk Η πολυνηματική γλώσσα προγραμματισμού Cilk Β Καρακάσης Ερευνητικά Θέματα Υλοποίησης Γλωσσών Προγραμματισμού Μεταπτυχιακό Μάθημα (688), ΣΗΜΜΥ Νοέμβριος 2009 Β Καρακάσης (CSLab, NTUA) ΣΗΜΜΥ, Μετ/κό 688 9/2009

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

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

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

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

Κεφάλαιο 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 (); Πρότυπο ( ήλωση) Συνάρτησης (

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

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

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

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

Αρχιτεκτονική Υπολογιστών

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

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

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

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

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

Προγραμματισμός ΙΙ (Java) 10. Πολυνηματικές εφαρμογές

Προγραμματισμός ΙΙ (Java) 10. Πολυνηματικές εφαρμογές Προγραμματισμός ΙΙ (Java) 10. Πολυνηματικές εφαρμογές Multithreading Μulti-processing Πολλές διεργασίες ταυτόχρονα Κάθε διεργασία έχει το δικό της χώρο μνήμης ή ενδέχεται όλες να μοιράζονται και κάποιο

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

Λειτουργικά Συστήματα 1.1 Τι είναι Λειτουργικό Σύστημα (Operating System)

Λειτουργικά Συστήματα 1.1 Τι είναι Λειτουργικό Σύστημα (Operating System) Υλικό Hardware Λογισμικό Software... κώδικας ΥΛΙΚΟ Κάθε ηλεκτρονικό, ηλεκτρικό και μηχανικό μέρος του Η/Υ. ΛΟΓΙΣΜΙΚΟ Προγράμματα,δηλαδή οδηγίες γιατοτιπρέπεινακάνειοη/υ. Λειτουργικό Σύστημα Είναι ένα βασικό

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

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

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι Λειτουργικά Συστήματα 1 Λογισμικό του Υπολογιστή Για να λειτουργήσει ένας Η/Υ εκτός από το υλικό του, είναι απαραίτητο και το λογισμικό Το σύνολο των προγραμμάτων που συντονίζουν τις λειτουργίες του υλικού

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

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

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

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

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

Προγραμματισμός συστημάτων UNIX/POSIX

Προγραμματισμός συστημάτων UNIX/POSIX Προγραμματισμός συστημάτων UNIX/POSIX Προχωρημένη διαδιεργασιακή επικοινωνία: επώνυμοι αγωγοί (FIFOs) ουρές μηνυμάτων (message queues) κοινόχρηστη μνήμη (shared memory) σήματα (signals) Ανάγκη Ότι είδαμε

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

Κεφάλαιο 4: Λογισμικό Συστήματος

Κεφάλαιο 4: Λογισμικό Συστήματος Κεφάλαιο 4: Λογισμικό Συστήματος Ερωτήσεις 1. Να αναφέρετε συνοπτικά τις κατηγορίες στις οποίες διακρίνεται το λογισμικό συστήματος. Σε ποια ευρύτερη κατηγορία εντάσσεται αυτό; Το λογισμικό συστήματος

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

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα

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

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων Εργαστήριο Java Lab09 Αντικείμενο: Πολυνηματικές εφαρμογές Η χρήση περισσότερων από μιας ροής εντολών μέσα σε ένα πρόγραμμα είναι γνωστή ως multithreading. H κάθε μια ροή εντολών μέσα στο πρόγραμμα ονομάζεται

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

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

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

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

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα 1. Ποια είναι η σχέση της έννοιας του μικροεπεξεργαστή με αυτή του μικροελεγκτή; Α. Ο μικροεπεξεργαστής εμπεριέχει τουλάχιστο έναν μικροελεγκτή. Β. Ο

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

Ενδεικτική περιγραφή μαθήματος

Ενδεικτική περιγραφή μαθήματος ΜΑΘΗΜΑ: ΔΙΔΑΣΚΩΝ: ΤΜΗΜΑ: Προγραμματισμός Η/Υ Συνδουκάς Δημήτριος Διοίκησης Επιχειρήσεων (Γρεβενά) Ενδεικτική περιγραφή μαθήματος 1. Εισαγωγή: Εισαγωγή στον προγραμματισμό, γλώσσες προγραμματισμού, μεταγλωτιστές.

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

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Εισαγωγή στη γλώσσα προγραμματισμού JAVA Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Το πρώτο φλιτζάνι Java Λίστα με τα απαραίτητα Το πρώτο μου πρόγραμμα(hello World) Συνεχίζοντας

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

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

Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ

Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ http://leitourgika-systhmata-epal-b.ggia.info/ Σύγχρονο Λειτουργικό Σύστημα - ΛΣ Λειτουργικό Σύστημα:

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

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

1. ΑΡΧΕΣ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 12 Σχεδιασμός Ανάπτυξη Λειτουργία Π.Σ. 1. ΑΡΧΕΣ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 1.1 Δυνατότητες Λειτουργικών Συστημάτων 1.1.1 Εισαγωγή Ο όρος Λειτουργικό Σύστημα (Operating System), εκφράζει το σύνολο των προγραμμάτων

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

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον

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

Δείγμα σημειώσεων για τα Λειτουργικά Συστήματα για τις εξετάσεις του ΑΣΕΠ Εκπαιδευτικών ΠΕ19-ΠΕ20

Δείγμα σημειώσεων για τα Λειτουργικά Συστήματα για τις εξετάσεις του ΑΣΕΠ Εκπαιδευτικών ΠΕ19-ΠΕ20 Δείγμα σημειώσεων για τα Λειτουργικά Συστήματα για τις εξετάσεις του ΑΣΕΠ Εκπαιδευτικών ΠΕ19-ΠΕ20 Υλικολογικό (firmware) Υπάρχει επίσης και το υλικολογικό (firmware) που είναι ένα σύνολο από μικροπρογράμματα

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

Διάλεξη 6: Δείκτες και Πίνακες

Διάλεξη 6: Δείκτες και Πίνακες Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 6: Δείκτες και Πίνακες (Κεφάλαιο 12, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 6-1 Περιεχόμενο

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

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010 Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010 Καθηγητής. Γουνόπουλος Άσκηση 1 Σκοπός της εργασίας αυτής είναι η κατανόηση της εσωτερικής λειτουργίας

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

Διάλεξη 18η: Διαχείρηση Αρχείων

Διάλεξη 18η: Διαχείρηση Αρχείων Διάλεξη 18η: Διαχείρηση Αρχείων Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Αρχεία CS100, 2015-2016 1 / 24 Η βιβλιοθήκη Εισόδου/Εξόδου Στο stdioh

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

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

ΗΜΥ 313: Τεχνολογία Λειτουργικών Συστηµάτων

ΗΜΥ 313: Τεχνολογία Λειτουργικών Συστηµάτων ΗΜΥ 313: Τεχνολογία Λειτουργικών Συστηµάτων ιδάσκων: Χρίστος Παναγιώτου Υπολογιστικό Σύστηµα Ένα υπολογιστικό σύστηµα αποτελείται από Πώς καταφέρνουν και λειτουργούν όπως αναµένει ο χρήστης; 1 Τι είναι

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

Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Τμήματα ΚΜΕ (CPU) Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (Ι)

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

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

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας

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

Οργάνωση Υπολογιστών (Ι)

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

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

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

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

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

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual MILE Simulator Version 1.0 User's Manual Νοέμβριος, 2011 Περιεχόμενα 1. Εισαγωγή στον προσομοιωτή...2 1.1 Εγκατάσταση...2 1.2 Βοήθεια Διευκρινήσεις...2 2. Ξεκινώντας με τον προσομοιωτή...3 2.1 Το memory

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

Συστήματα Υπολογιστών 2008-09

Συστήματα Υπολογιστών 2008-09 Συστήματα Υπολογιστών 2008-09 Λειτουργικά Συστήματα Μέρος 1 ο Δρ Διονύσης Κεχαγιάς Δρ Φιλαρέτη Τσαλακανίδου Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλετρολόγωνν Μηχανικών και Μηχανικών Υπολογιστών

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

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή Αριθμός bit δίαυλου δεδομένων (Data Bus) Αριθμός bit δίαυλου διευθύνσεων (Address Bus) Μέγιστη συχνότητα λειτουργίας (Clock Frequency) Τύποι εντολών Αριθμητική

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

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

Προγραμματισμός Ι. Πολλαπλά Αρχεία. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Πολλαπλά Αρχεία Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Πολλαπλά Αρχεία Όταν γράφουμε μεγάλα προγράμματα θέλουμε να έχουμε ανεξάρτητα κομμάτια κώδικα

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

Περιεχόμενα. Πρόλογος... 17

Περιεχόμενα. Πρόλογος... 17 Περιεχόμενα Πρόλογος... 17 Κεφάλαιο 1: Εισαγωγή... 19 Πώς να διαβάσετε αυτό το βιβλίο... 20 Η γλώσσα C Ιστορική αναδρομή... 22 Τα χαρακτηριστικά της C... 23 C Μια δομημένη γλώσσα... 23 C Μια γλώσσα για

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

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

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

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Εισαγωγή Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Βιβλιογραφία "C Προγραμματισμός", Deitel & Deitel, Πέμπτη Έκδοση, Εκδόσεις

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

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Δημιουργία Νέου αρχείου Από το μενού προγραμμάτων ανοίγετε το DEV C++ Επιλέγετε File-> New-> Source File (συντόμευση πληκτρολογίου Ctrl+N)

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

C: Από τη Θεωρία στην Εφαρμογή

C: Από τη Θεωρία στην Εφαρμογή Δρ. Γ. Σ. Τσελίκης Δρ. Ν. Δ. Τσελίκας C: Από τη Θεωρία στην Εφαρμογή Ενδεικτικές Ασκήσεις από το Βιβλίο C: Από τη Θεωρία στην Εφαρμογή (Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας) Ενδεικτικές Ασκήσεις του Βιβλίου Ε.Α.1

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

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

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

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

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προεπεξεργαστής Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Διαδικασία Μεταγλώττισης πρόγραµµα επεξεργασίας κειµένου if a

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

Προγραμματισμό για ΗΜΥ

Προγραμματισμό για ΗΜΥ ΕΠΛ 34: Εισαγωγή στον Προγραμματισμό για ΗΜΥ Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 12 Πίνακες εικτών (Pointers Arrays) Θέματα ιάλεξης Στην ενότητα

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

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

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and

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

Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά

Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά Ηλ. Γκρίνιας Τ. Ε. Ι. Σερρών Τμήμα Πληροφορικής και Επικοινωνιών Αλγόριθμοι Ορισμός: ο αλγόριθμος είναι μια σειρά από πεπερασμένα βήματα που καθορίζουν

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

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

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

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

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 15: Αναδρομή (Recursion) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Η έννοια της αναδρομής Μη αναδρομικός / Αναδρομικός Ορισμός Συναρτήσεων Παραδείγματα Ανάδρομης Αφαίρεση της Αναδρομής

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

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

«Λειτουργικά Συστήματα Πραγματικού Χρόνου» Όνο/επώνυμο:Ιωάννης Χατζής Αριθμός Μητρώου:265 Θέμα Εργασίας «Λειτουργικά Συστήματα Πραγματικού Χρόνου» επιβλέπων: Μηνάς Δασυγένης http://arch.icte.uowm.gr Λειτουργικά Συστήματα Πραγματικού Χρόνου 1 Εισαγωγή

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

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

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

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

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

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

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

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

Εισαγωγή στην γλώσσα προγραμματισμού C

Εισαγωγή στην γλώσσα προγραμματισμού C Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο

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

Λειτουργικά Συστήματα Κεφάλαιο 2 Οργάνωση Συστήματος Αρχείων 2.1 Διαχείριση Αρχείων και Σύστημα Αρχείων(File System)

Λειτουργικά Συστήματα Κεφάλαιο 2 Οργάνωση Συστήματος Αρχείων 2.1 Διαχείριση Αρχείων και Σύστημα Αρχείων(File System) 2.1.1 Εισαγωγή στη διαχείριση αρχείων Οι Η/Υ αποθηκεύουν τα δεδομένα και τα επεξεργάζονται. Εφαρμογή Προγράμματος C:\Documents and Settings\user\Τα έγγραφά μου\leitourgika.doc Λ.Σ. File System Γι αυτό

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

Πολυπύρηνοι επεξεργαστές Multicore processors

Πολυπύρηνοι επεξεργαστές Multicore processors Πολυπύρηνοι επεξεργαστές Multicore processors 1 Μετάβαση στους πολυπύρηνους(1) Απόδοση των µονοεπεξεργαστών 25% ετήσια βελτίωση της απόδοσης από το 1978 έως το 1986 Κυρίως από την εξέλιξη της τεχνολογίας

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

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ Η Κεντρική Μονάδα Επεξεργασίας (Central Processing Unit -CPU) ή απλούστερα επεξεργαστής αποτελεί το μέρος του υλικού που εκτελεί τις εντολές ενός προγράμματος υπολογιστή

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

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

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δρ. Κόννης Γιώργος Πανεπιστήμιο Κύπρου - Τμήμα Πληροφορικής Προγραμματισμός Στόχοι 1 Να περιγράψουμε τις έννοιες του Υπολογιστικού Προβλήματος και του Προγράμματος/Αλγορίθμου

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

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

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

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

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

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

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

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi ee.duth.

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth. Το πρόγραμμα HelloWorld.java Σχόλια στη Java HelloWorld Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Το πρόγραμμα HelloWorld 1 Java Το πρόγραμμα HelloWorld 2 Σχόλια στη Java ΗγλώσσαJava υποστηρίζει

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07 Ακαδ έτος 2007-2008 ΠΛΗΡΟΦΟΡΙΚΗ Ι Φερεντίνος 22/11/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με ΑΜ σε 3, 7, 8 & 9 22/11/07 Παράδειγμα με if/else if και user input: import javautil*; public class Grades public

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

Μερικές άλλες χρήσιμες εντολές

Μερικές άλλες χρήσιμες εντολές 1 Μερικές άλλες χρήσιμες εντολές whoami (Εμφανίζει το όνομα του τρέχοντος χρήστη) pwd (Εμφανίζει το όνομα του τρέχοντος καταλόγου) cat text file name (Παρουσιάζει στην οθόνη το περιεχόμενο ενός αρχείου

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

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες)

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες) Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 13-1 Περιεχόμενο

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

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα Η Υλοποίηση της Επικοινωνίας στα Κατανεµηµένα Συστήµατα ιαφάνειες στα πλαίσια του µαθήµατος: Κατανεµηµένα Συστήµατα Ε Εξάµηνο, Τµήµα Πληροφορικής και Τεχνολογίας Υπολογιστών, ΤΕΙ Λαµίας Πέτρος Λάµψας 2002

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

; Γιατί είναι ταχύτερη η λήψη και αποκωδικοποίηση των εντολών σταθερού μήκους;

; Γιατί είναι ταχύτερη η λήψη και αποκωδικοποίηση των εντολών σταθερού μήκους; Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2015-16 Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ) (Δομή Εντολών και Παραδείγματα) http://di.ionio.gr/~mistral/tp/comparch/ Μ.Στεφανιδάκης Αρχιτεκτονική

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

3 Αλληλεπίδραση Αντικειμένων

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

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

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Βασικές Πηγές: Αρχιτεκτονική Υπολογιστών Εισαγωγή Αρχιτεκτονική Υπολογιστών: μια Δομημένη Προσέγγιση, Α. Tanenbaum, Vrije Universiteit, Amsterdam. Computer Architecture and Engineering, K. Asanovic, CS1/2-52,

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

Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

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

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