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

Μέγεθος: 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), οπότε καλεί το λ.σ. μέσω κλήσης συστήματος (διακοπή λογισμικού). * Με πρωτοβουλία του λ.σ: (α) Η διεργασία προκαλεί σφάλμα, οπότε προκαλείται παγίδευση (trap) ή προκύπτει διακοπή Ε/Ε ή υλικού που πρέπει να εξυπηρετηθεί. (β) Η διεργασία έχει εξαντλήσει το χρόνο της ή υπάρχει άλλη διεργασία υψηλότερης προτεραιότητας που πρέπει να εκτελεστεί. Και στις δύο περιπτώσεις το Λ.Σ. αναλαμβάνει τον έλεγχο του επεξεργαστή. Η κατάσταση της εκτελούμενης διεργασίας αλλάζει κατάλληλα είτε σε αναστολή είτε έτοιμη και προωθείται προς εκτέλεση η αμέσως επόμενη διεργασία στη λίστα των έτοιμων. Έτσι επιτυγχάνεται εναλλαγή διεργασιών.

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

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

9 Καταστάσεις και γεγονότα (2) Admit : το λ.σ. τοποθετεί τη διεργασία στην ουρά των διεργασιών προς εκτέλεση, δημιουργεί τις αντίστοιχες δομές δεδομένων. Dispatch : το λ.σ. εκχωρεί το σύστημα (CPU κλπ) στη διεργασία για να εκτελεστεί. Timeout : το λ.σ προκαλεί χρονοδιακοπή. Event Waits : η διεργασία απαιτεί υπηρεσία από το λ.σ. που προκαλεί διακοπή. 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 Εναλλαγή διεργασίας Γεγονότα που προκαλούν εναλλαγή (αναστολή εκτέλεσης και εισαγωγή άλλης) διεργασίας: Χρονοδιακοπή / Δρομολόγηση Η διεργασία έχει εξαντλήσει το μέγιστο επιτρεπόμενο χρονικό όριο ή γενικότερα η διεργασία προ-εκτοπίζεται (pre-empted) από το λ.σ., πχ υπάρχει άλλη διεργασία με μεγαλύτερη προτεραιότητα Εσωτερική διακοπή (trap) Προγραμματιστικά σφάλματα που προκαλούν παγίδευση Ε/Ε ή Hardware Interrupt Έχει συμβεί διακοπή (Ε/Ε ή άλλου υλικού) Κλήση συστήματος π.χ. άνοιγμα αρχείου, δημιουργία διεργασίας παιδιού (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 Διάγραμμα 6 καταστάσεων (1) Συνήθως οι λειτουργίες Ε/Ε είναι πολύ πιο αργές από τη λειτουργία της CPU. Το λ.σ. μπορεί να διαχωρίζει τις λειτουργίες Ε/Ε σε 'αργά' και 'γρήγορα' ή σε περισσότερες κατηγορίες ανά τύπο γεγονότος και να δημιουργεί δυο διαφορετικές καταστάσεις αναστολής, blocked και suspended. Η διαφορά τους έγκειται στο οτι όταν μια διεργασία θεωρείται suspended τότε ο χώρος διευθύνσεών της μεταφέρεται στη δευτερεύουσα μνήμη, στη περιοχή εναλλαγής. Έτσι ελευθερώνεται χώρος στη κύρια μνήμη είτε για τη μεταφορά άλλων διεργασιών από τη δευτερεύουσα μνήμη, είτε για τη δημιουργία νέων διεργασιών. Το γεγονός suspend αντιστοιχεί στην απόφαση του λ.σ. να μεταφέρει τη διεργασία στη δευτερεύουσα μνήμη λόγω έλλειψης χώρου. Το γεγονός activate αντιστοιχεί στο event occurs.

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

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

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

32 Διάγραμμα 10 καταστάσεων (1) (α) Προσθέτουμε στο διάγραμμα 7 καταστάσεων τη κατάσταση εκτέλεσης του πυρήνα (kernel running) (β) Η κατάσταση running έχει αντικατασταθεί από δύο καταστάσεις, προ-εκτόπισης (preempted) και εκτέλεσης (user running) που δείχνουν αναλυτικότερα τις πιθανές αλληλεπιδράσεις μεταξύ πυρήνα και διεργασίας χρήστη. Όταν εκτελείται ο πυρήνας μπορεί * να καλέσει άλλο τμήμα του λ.σ. (πχ λόγω νέας διακοπής) * να επιστρέψει στην διεργασία που τον κάλεσε (μέσω system call) * να επιλέξει μια άλλη διεργασία προς εκτέλεση και να βάλει τη τρέχουσα διεργασία σε αναστολή (ready ή suspended/swaped), δηλαδή να την εκτοπίσει πριν τελειώσει την εκτέλεσή της (προ-εκτόπιση). * να προ-εκτοπίσει την διεργασία αλλά να την ξαναεπιλέξει προς εκτέλεση. Ο χαρακτηρισμός zombie αναφέρεται σε διεργασίες που έχουν τερματιστεί αλλά δεν έχουν διαγραφεί από το λ.σ.

33 Διάγραμμα 10 καταστάσεων (2) New Terminated Swap in

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

35 Χώρος διευθύνσεων διεργασίας (1) 0xFFFFFFFF stack (modified during execution) SP heap (dynamically allocated) Virtual address space ` static data LV 0x program code (text) PC Ο χώρος διευθύνσεων ή χώρος εργασίας ή εικόνα μνήμης (memory image) μιας διεργασίας περιλαμβάνει -κατ' ελάχιστο: το πρόγραμμα (text), τα δεδομένα (data), τη στοίβα (stack), και το σωρό (heap). Ακόμη έχουμε τη κοινόχρηστη μνήμη (global data, system calls, shared libraries) τα οποία δεν φαίνονται στο σχήμα.

36 Χώρος διευθύνσεων διεργασίας (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 Kernel space User space Κάθε διεργασία εκτελείται μόνο στο δικό της χώρο διευθύνσεων.

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

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

39 Πληροφορίες PCB

40 Εναλλαγή διεργασιών - παράδειγμα (1) Η υλοποίηση του μοντέλου διεργασιών (μοντέλο καταστάσεις) βασίζεται στη διαρκή εναλλαγή διεργασιών στη CPU. Kάθε εναλλαγή εμπλέκει το λ.σ. και κυρίως το Βραχυπρόθεσημο Δρομολογητή (Dispatcher).

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

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

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

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

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

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

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

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

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

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

51 Ουρές διεργασιών (3) Σχέση PCB και ουρών διεργασιών. Ουσιαστικά οι ουρές αποτελούνται από δείκτες πρός PCB's, δηλαδή δείκτες σε γραμμές του Process Table του λ.σ.

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

53 Ιεραρχία διεργασιών (2) Η διεργασία-γονέας (parent process) δημιουργεί διεργασίες-παιδιά (child process), και αυτές με τη σειρά τους δημιουργούν δικές τους διεργασίες. Εκτέλεση Κάθε διεργασία λαμβάνει από το λ.σ. το δικό της Process ID (PID). Γονέας και παιδί εκτελούνται 'ταυτόχρονα', μέσω δρομολόγησης του λ.σ. Ο γονέας μπορεί να περιμένει τον τερματισμό του παιδιού ή όχι. Κληρονόμηση περιβάλλοντος εκτέλεσης Η διεργασία-παιδί κληρονομεί από τη διεργασία- γονέα το περιβάλλον εκτέλεσης, όπως πχ τον ιδιοκτήτη, τις άδειες και δικαιώματα πρόσβασης. Οι διεργασίες που δημιουργεί ένας χρήστης, κληρονομούν τα δικαιώματα του χρήστη. Χώρος διευθύνσεων Το παιδί αντιγράφει το χώρο διευθύνσεων του γονέα. Στη συνέχεια το παιδί φορτώνει δικό του πρόγραμμα,με βάση τις οδηγίες που λαμβάνει κατά τη δημιουργία του από τη διεργασία-γονέα.

54 Υπηρεσίες και δαίμονες Διεργασίες του λ.σ.: Πρόκειται για τις διεργασίες που δημιουργούνται κατά την διαδικασία εκκίνησης του συστήματος (boot, strartup). Συνήθως ονομάζονται και υπηρεσίες ή/και δαίμονες. Υπηρεσίες (services) λέγονται διεργασίες του λ.σ. που βρίσκονται σε αναστολή και ενεργοποιοούνται όταν απαιτηθεί κάποια ενέργεια, μέσω μιας κλήσης συστήματος ή μέσω κλήσης του πυρήνα. Από τον όρο υπηρεσία προέρχεται και ο όρος Server = Πάροχος υπηρεσίας (Διακομιστής): ένα σύστημα που παρέχει υπηρεσία. Δαίμονες (daemons) λέγονται οι διεργασίες του λ.σ. που βρίσκονται μόνιμα στη κύρια μνήμη μαζί με το πυρήνα και εκτελούνται στο παρασκήνιο σε κατά τακτά χρονικά διαστήματα (ορολογία Unix: στα Windows όλες λέγονται υπηρεσίες). Γενικά οι δαίμονες δεν καλούνται άμεσα από τις εφαρμογές αλλά εκτελούν προκαθορισμένες υπηρεσίες. Πχ sync (συγχρονισμός περιεχομένου καταλόγων) ή cron (εκτέλεση προγραμματισμένων λειτουργιών του συστήματος).

55 Διεργασίες εφαρμογών Διεργασίες εφαρμογών: Ο χρήστης που συνδέεται στο σύστημα αποτελεί μια βασική διεργασία εφαρμογής. Το λ.σ. κατά την σύνδεση του χρήστη ξεκινά ένα σύνολο από διεργασίες που επιτρέπουν την επικοινωνία του χρήστη με το σύστημα (φλοιός, επιφάνεια εργασίας, διαχειρστής αρχείων, ροές εισόδου, εξόδου κλπ). Η ιδιοκτησία αυτών των διεργασιών περνά στο χρήστη. Επιπλέον, ο χρήστης μπορεί μέσω ειδικών εφαρμογών (startup manager) ή ειδικών αρχείων ρυθμίσεων ή με επιλογή κατά την εγκατάσταση μια εφαρμογής, να εκκινεί έναν αριθμό διεργασιών εφαρμογών κατά τη σύνδεσή του με το σύστημα, πέρα από αυτές που εκκινεί το λ.σ. Το σύνολο των διεργασιών λ.σ. και διεργασιών εφαρμογών του χρήστη καθορίζουν το περιβάλλον εργασίας του χρήστη. To περιβάλλον εργασίας είναι δυνατό να τροποποιηθεί, ρυθμιστεί, κλπ με τη βοήθεια των μεταβλητών περιβάλλοντος (enviroment variables).

56 Εκκίνηση Unix (1) Ο kernel (PID 0) προσαρτά το σύστημα αρχείων (περιλαμβάνει και Ε/Ε), και τη διαχείριση μνήμης. Μετά ξεκινά τη διεργασία με /sbin/init (PID 1) που είναι υπεύθυνη για τη φόρτωση των υπηρεσιών του λ.σ. Κάθε χρήστης γραμμής εντολών ξεκινά από μια διεργασία getty. Κατά το login (είσοδο) ξεκινά ένας φλοιός και μπορεί να ξεκινήσουν και διεργασίες εφαρμογών του χρήστη. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

57 Εκκίνηση Unix (2)

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

59 Σενάρια εκκίνησης και αρχεία ρυθμίσεων στο Unix (2) Eνδεικτικό runlevel με συνδέσμους σε σενάρια φλοιού για την εκκίνηση υπηρεσιών στο Linux.

60 Όνομα μεταβλητής περιβάλλοντος $ env... TERM=xterm Τιμή μεταβλητής περιβάλοντος SHELL=/bin/bash... USER=kmarg... PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bi n:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games PWD=/home/kmarg/Code/c/sysprog LANG=el_GR.UTF 8... HOME=/home/kmarg LOGNAME=kmarg Μεταβλητές περιβάλλοντος... OLDPWD=/home/kmarg στο Unix... $ echo $HOME /home/kmarg

61 Εγκατάσταση εφαρμογών στο Unix 1. Μεταφόρτωση (download) εφαρμογής από το κατάλληλο αποθετήριο (repository) σε μορφή συμπιεσμένης αρχειοθήκης γενικής ή ειδικής μορφής. 2. Εκτέλεση σεναρίου ή εφαρμογής εγκατάστασης: (α) Διερεύνηση των βασικών ρυθμίσεων του συστήματος, όπως τύπος λ.σ. σύστημα αρχείων, μέγεθος μνήμης,, διαθέσιμοι μεταγλωττιστές και βιβλιοθήκες, εξαρτήσεις από άλλες εφαρμογές (dependencies). (β) Δημιουργία (προσωρινού) καταλόγου εφαρμογής και αποσυμπίεση. (γ) (Πιθανή) μεταγλώττιση ή / και σύνδεση με υπάρχουσες βιβλιοθήκες λ.σ. Τελική εγκατάσταση. (δ) Δημιουργία / ενημέρωση αρχείων ρυθμίσεων, βοήθειας, μεταβλητών περιβάλλοντος για το λ.σ. και τους χρήστες. Πχ δημιουργία συντομεύσεων (shortcuts, launchers). Συνήθως έχουμε δύο επίπεδα ρυθμίσεων: συστήματος (στο κατάλογο /etc) και χρήστη (κρυφά αρχεία στο κατάλογο χρήστη, πχ.firefox).

62 ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διεργασίες και Νήματα Διεργασίες Διαχείριση και κλήσεις συστήματος Νήματα Κλήσεις συστήματος και APIs

63 Διαχείριση διεργασιών στο Unix Δημιουργία διεργασιών Τερματισμός / αναστολή διεργασιών (kill, CtrlC, CtrlZ) Εμφάνιση βασικών πληροφοριών PCB διεργασιών με διάφορες επιλογές (ps) Εμφάνιση ιεραρχίας διεργασιών (pstree, ps --forest) Εμφάνιση εκτελούμενων διεργασιών σε 'πραγματικό χρόνο' με δυνατότητες ρύθμισης πχ αλλαγή προτεραιότητας διεργασιών (top) Διεργασίες σε προσκήνιο / παρασκήνιο (&) Χρονοπρογραμματισμός μη-διαλογικών διεργασιών (απλός ή επαναλαμβανόμενος) (at, batch, cron)

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

65 fork (1) Η συνάρτηση fork χρησιμοποιείται για τη δημιουργία διεργασιών. Η fork χρησιμοποιείται από τη διεργασία-γονέα για να δημιουργήσει μια διεργασία-παιδί που κληρονομεί το κώδικα και το περιβάλλον εκτέλεσης της διεργασίας-γονέα (μεταβλητές, χώρο διευθύνσεων, περιγραφείς αρχείων, γενικά context) αλλά εκτελείται 'ταυτόχρονα' με αυτή. Επομένως αμέσως μετά την εκτέλεση της fork δημιουργείται ένα αντίγραφο του PCB της διεργασίας-γονέα, το οποίο χορηγείται από το λ.σ. στη διεργασία-παιδί. Από αυτό το σημείο και μετά όμως αντιμετωπίζονται ως δύο διαφορετικές διεργασίες που εκτελούνται ανεξάρτητα (παράλληλα, ταυτόχρονα). Η γονική μπορεί ακόμη να δημιουργήσει περισσότερες θυγατρικές, που μπορούν να εκτελούνται όλες μαζί παράλληλα. Οποιαδήποτε από αυτές μπορεί επίσης να καλέσει την fork, έτσι ώστε να δημιουργηθεί μια ιεραρχία διεργασιών οποιουδήποτε βάθους.

66 fork (2) Δημιουργία διεργασίας στο Unix. Η κλήση fork() επιστρέφει στη διεργασία-γονέα το process id (pid) της διεργασίας-παιδιού. Αν pid < 0 (συνήθως -1) έχουμε αποτυχία δημιουργίας. Η διεργασία-παιδί λαμβάνει ως επιστροφή τη τιμή pid = 0. Έτσι, από αυτό το σημείο και μετά, ο κώδικας στο κλάδο if (pid > 0) εκτελείται από το γονέα ενώ ο κώδικας στο κλάδο else (δηλαδή pid == 0) εκτελείται από το παιδί. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

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

68 fork / exit / wait Η συνάρτηση exit καλείται από μια διεργασία κατά το τερματισμό της και συνήθως συνοδεύεται από ένα κωδικό εξόδου (exit code). Αν η τιμή του κωδικού είναι 0 τότε ο τερματισμός είναι ομαλός, αν η τιμή είναι αρνητική (συνηθως 1) τότε έχουμε μη-ομαλό τερματισμό. Μια εφαρμογή μπορεί να ορίσει διάφορους κωδικούς εξόδου με αντίστοιχη σημασία. Η εκτέλεση της exit (και η τιμή του exit code) μπορεί - προαιρετικά - να αναγνωστούν από τη διεργασία-γονέα, αν αυτή έχει στο κώδικά της κλήση στην συνάρτηση wait ή waitpid. Η διεργασία-γονέας, όταν φθάσει στην εκτέλεση μιας κλήσης wait η waitpid αναμένει υποχρεωτικά για την εκτέλεση κλήσης exit από διεργασία-παιδί. H συνάρτηση wait επιβάλλει συγχρονισμό μεταξύ της διεργασίας-γονέα και οποιασδήποτε διεργασίας-παιδιού. H συνάρτηση waitpid επιβάλλει συγχρονισμό με συγκεκριμένη διεργασία-παιδί (με βάση το όρισμα pid). Αν τεθεί pid = -1, τότε η waitpid μεταπίπτει στη wait. Οι συναρτήσεις wait επιστρέφουν το pid της διεργασίας-παιδιού που εκτέλεσε το exit και το κωδικό εξόδου μέσω του ορίσματος status.to όρισμα status, εκτός από το κωδικό εξόδου περιλαμβάνει και άλλες πληροφορίες σχετικά με τις συνθήκες τερματισμού της διεργασίας-παιδιού.

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

70 Παράδειγμα fork / wait (2.1) #include <unistd.h> /* Symbolic Constants */ #include <sys/types.h> /* Primitive System Data Types */ #include <errno.h> /* Errors */ #include <stdio.h> /* Input/Output */ #include <sys/wait.h> /* Wait for Process Termination */ #include <stdlib.h> /* General Utilities */ int main() { pid_t childpid; /* variable to store the child's pid */ int retval; /* child process: user provided return code */ int status; /* parent process: child's exit status */ /* only 1 int variable is needed because each process would have its own instance of the variable here, 2 int variables are used for clarity */ /* now create new process */ childpid = fork(); if (childpid >= 0) /* fork succeeded */ { if (childpid == 0) /* fork() returns 0 to the child process */ { printf("child: I am the child process!\n"); printf("child: Here's my PID: %d\n", getpid()); printf("child: My parent's PID is: %d\n", getppid()); printf("child: The value of my copy of childpid is: %d\n", childpid);...

71 Παράδειγμα fork / wait (2.2)... printf("child: Sleeping for 1 second...\n"); sleep(1); /* sleep for 1 second */ printf("child: Enter an exit value (0 to 255): "); scanf(" %d", &retval); printf("child: Goodbye!\n"); exit(retval); /* child exits with user provided return code */ } else /* fork() returns new pid to the parent process */ { printf("parent: I am the parent process!\n"); printf("parent: Here's my PID: %d\n", getpid()); printf("parent: The value of my copy of childpid is %d\n", childpid); printf("parent: I will now wait for my child to exit.\n"); wait(&status); /* wait for child to exit, and store its status */ printf("parent: Child's exit code is: %d\n", WEXITSTATUS(status)); printf("parent: Goodbye!\n"); exit(0); /* parent exits */ } } else /* fork returns 1 on failure */ { perror("fork"); /* display error message */ exit(0); } }

72 exec (1) Η συνάρτηση exec καλείται από ένα πρόγραμμα για να εκτελέσει ένα αρχείο. Προφανώς το προς εκτέλεση αρχείο πρέπει να είναι μεταγλωττισμένο, δηλαδή εκτελέσιμο. Η exec περιλαμβάνει μια οικογένεια παρόμοιων συναρτήσεων, τις execl, execv, execle, execve, execlp και execvp. Οι διαφορετικές εκδοχές της exec προσφέρουν εναλλακτικούς τρόπους περάσματος και σύνθεσης των ορισμάτων. Το l σημαίνει λίστα από ορίσματα, Το v σημαίνει άνυσμα από ορίσματα, Το e σημαίνει μεταβλητές περιβάλλοντος, Το p σημαίνει έρευνα σε καταλόγους (μεταβλητή περιβάλλοντος PATH) Μέσω της exec η διεργασία-παιδί μετά το fork μπορεί να εκτελέσει άλλο κώδικα από αυτό που κληρονόμησε από τη διεργασία-γονέα. Επίσης μπορεί να δεχτεί μεταβλητά ορίσματα ή να εκτελεστεί σε διαφορετικό περιβάλλον εκτέλεσης.

73 exec (2) execl() List of arguments. No environment passed. execl("/bin/ls", "ls", " l", NULL); Το πρώτο όρισμα είναι το όνομα διαδρομής του εκτελεσίμου. Το δεύτερο είναι το όνομα που θα λάβει το εκτελέσιμο (argv[0]). Τα υπόλοιπα είναι τα ορίσματα στο εκτελέσιμο (argv[1], ) με τελευαίο όρισαμα NULL. execv() Vector of arguments. No environment passed. execv(arglist[0], arglist); Όπου char *arglist[4]; με arglist[0]= /bin/ls ; arglist[1]= ls ; arglist[2]= -l ; arglist[4]=0; execle() List of arguments. Pointer to list of environment values. execl("/bin/ls", "ls", " l", NULL, NULL); execve() Vector of arguments. Pointer to list of environment values. execve(arglist[0], arglist, NULL); execlp() List of arguments. Non-executable files given to shell. Uses search path. execlp("ls", l, NULL); execvp() Vector of arguments. Non-executable files given to shell. Uses search path. execvp(arglist[0], arglist);

74 Παράδειγμα fork / exec (1) #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() { int pid; char *argv[]={"echo","hello there!",null}; /*Spawn a child to run the program.*/ pid = fork(); /* pid >= 0 */ if (pid == 0) { /* child process */ execv("/bin/echo", argv); exit(127); /* only if execv fails */ } else { /* pid > 0; parent process */ waitpid(pid,0,0); /* wait for child to exit */ execl("/bin/date", "date", NULL); exit(127); /* only if execl fails */ } return 0; }

75 Παράδειγμα fork / exec (2) #include <stdio.h> #include <stdlib.h> #include <unistd.h> main() { int pid, status; printf("forking process\n"); pid = fork() /* Succesful fork is assumed */ wait(&status); /* Parent waits here for child to finish */ 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 /* pid > 0 */ printf("i am the parent, status is %d\n", status); execl("/bin/ls","ls", " l", NULL); printf("this line is printed only if execl fails\n"); }

76 Απλός φλοιός #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"); } }

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

78 Φλοιός και fork / exec Βήματα εκτέλεσης της εντολής ls μέσω φλοιού. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

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

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

81 ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διεργασίες και Νήματα Διεργασίες Κλήσεις συστήματος και ΑPIs Νήματα Κλήσεις συστήματος και APIs

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

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

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

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

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

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

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

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

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

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

92 Πρόγραμμα χωρίς νήματα (1) 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);

93 Πρόγραμμα χωρίς νήματα (2)

94 Πρόγραμμα με νήματα (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);

95 Πρόγραμμα με νήματα (2)

96 Καταστάσεις (κύκλος ζωής) Νήματος (1) Δημιουργία (Born) 'Ετοιμο προς εκτέλεση (Ready, Runnable) Εκτελούμενο (Running) Τερματισμένο (Dead) Σε αναστολή (Blocked): αναμονή Ε/Ε Σε αναμονή (Waiting): αναμονή συμβάντος από άλλο νήμα ή το λ.σ Σε..λήθαργο (Sleeping): εθελούσια αναστολή εκτέλεσης, μπορεί να σημαίνει και κλήση του λ.σ. από το νήμα

97 Καταστάσεις (κύκλος ζωής) Νήματος (2)

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

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

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

101 Παραδείγματα υλοποιήσεων (1) O.S. Kernel threads: Windows XP/2000, Linux, Solaris Όλα τα σύγχρονα λειτουργικά συστήματα υποστηρίζουν threads επιπέδου πυρήνα. Σύγχρονα Unix/Linux: Νative POSIX Thread Library (NPTL). Posix Pthreads (IEEE standard): Έχουν καθορισμένη διεπαφή (API) ανάπτυξης εφαρμογών. Συνδέονται με NPTL και μπορούν να υλοποιούνται σαν KLTs. Είναι πιο συνηθισμένα σε συστήματα UNIX αλλά υπάρχουν και σε Windows. Java threads: Υποστηρίζονται από την JVM. Η υλοποίηση εξαρτάται από τo JRE, παλιότερα ULTs τώρα συνδέονται με NPTL και υλοποιούνται σαν KLTs. Πλήρως φορητά, πολύ εύχρηστα, πλούσιο API.

102 Παραδείγματα υλοποιήσεων (2) OpenMP Φορητή βιβλιοθήκη υψηλού επιπέδου βασισμένη στα POSIX Threads, διαθέσιμη σε όλους τους βασικούς μεταγλωττιστές C,C++ και Fortran. Jomp για Java. Thread Building Blocks Cilk ++ Bιβλιοθήκες υψηλού επιπέδου της Intel για C,C++ και Fortranm διαθέσιμες και ανeξάρτητα (για gcc). Task Parallel Library Βιβλιοθήκες.ΝΕΤ της Microsoft για C#. GNU Portable Thread Library Διαθέσιμη για gcc.

103 ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διεργασίες και Νήματα Διεργασίες Κλήσεις συστήματος και ΑPIs Νήματα Κλήσεις συστήματος και APIs

104 Νήματα POSIX (1) Pthread_detach Sleep Pointer to thread is released Do nothing for some time Μερικές κλήσεις της βιβλιοθήκης των Pthreads. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

105 Νήματα POSIX: παράδειγμα (1) Mεταγλώττιση: gcc -pthread Δείκτης σε συνάρτηση Δήλωση νημάτων... Δημουργία και εκτέλεση νημάτων. Προσοχή στη σύνταξη. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved

106 Νήματα POSIX: παράδειγμα (2.1) #include <pthread.h> #include <stdio.h> #include <stdlib.h> char *buf = "abcdefghijklmnopqrstuvwxyz"; int num_pthreads = 8; int count = 6; int fd = 1; /* 1 = stdout */ void *new_thread(void *arg) { int i; for (i = 0; i < count; i++) { write(fd, arg, 1); sleep(1); pthread_yield(0); } return(0); } /* write char *arg to stdout */ /* comment out one or both */ /* lines */

107 Νήματα POSIX: παράδειγμα (2.2) 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(0); } Εκτελέστε το πρόγραμμα αρκετές φορές, με χρήση των sleep και yield, μιας από τος δύο ή και χωρίς αυτές. Τι παρατηρείτε;

108 #include <pthread.h> #include <stdio.h> #include <stdlib.h> #define NUM_THREADS Νήματα POSIX: παράδειγμα (3.1) 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);

109 Νήματα POSIX: παράδειγμα (3.2) 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); } } /* 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); }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 10: Δομές Δεδομένων Ι (Στοίβες & Ουρές)

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

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ενότητα 14 Δυναμική διαχείριση μνήμης Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Στατική δέσμευση μνήμης Με τη δήλωση απλών μεταβλητών

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Επισκόπηση Λ.Σ.

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Επισκόπηση Λ.Σ. ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Επισκόπηση Λ.Σ. Υλικό από: Tanenbaum, Modern Operating Systems,Structured Computer Organization Stallings, Operating Systems: Internals and Design Principles. Silberschatz, Galvin

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

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

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

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

Ταχύτητα, Απλότητα & Αξιοπιστία

Ταχύτητα, Απλότητα & Αξιοπιστία Ταχύτητα, Απλότητα & Αξιοπιστία Αρχιτεκτονική Μηχανισμοί Αυτοελέγχου Συνδεσιμότητα Περιβάλλον Εργασίας Πληροφορίες Σχήματος Report Builder Import Manager Αρχιτεκτονική Real Time Multithreading Σταθερότητα

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

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση Αρης Ευθυμίου Ανακοινώσεις! Βαθμοί: 1ης εργαστηριακής άσκησης Βαθμός 0 χωρίς σχόλια δεν έχω πάρει την άσκηση! ελέγξτε μήπως δεν το στέλνετε στο σωστό

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 1ο. 1.1.5 Πολυπρογραμματισμός 1.1.6 Πολυδιεργασία 1.2.2. Κατηγορίες Λειτουργικών Συστημάτων

Κεφάλαιο 1ο. 1.1.5 Πολυπρογραμματισμός 1.1.6 Πολυδιεργασία 1.2.2. Κατηγορίες Λειτουργικών Συστημάτων Κεφάλαιο 1ο 1.1.5 Πολυπρογραμματισμός 1.1.6 Πολυδιεργασία 1.2.2. Κατηγορίες Λειτουργικών Συστημάτων http://leitourgika-systhmata-epal-b.ggia.info Creative Commons License 3.0 Share-Alike Πολυπρογραμματισμός

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

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

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

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

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

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

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

Ενότητα 3 (Κεφάλαιο 4) Νήματα και Μικροπυρήνες

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

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

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Τμημα Πληροφορικης και Τηλεματικης Τσάμη Παναγιώτα ΑΜ: 20833 ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Άσκηση 1 Αθήνα 13-12-2011 Αναφορά Ενότητα 1 A Δημιουργήστε στο φλοιό 3 εντολές (alias) που η

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

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

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

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

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

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

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

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

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

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

Writing kernels for fun and profit

Writing kernels for fun and profit Writing kernels for fun and profit Γιάννης Τσιομπίκας nuclear@memberfsforg 23 Μαρτίου 2011 Γιατί; It s FUN! Εξοικείωση με το hardware Εμβάθυνση στον θαυμαστό κόσμο των λειτουργικών συστημάτων Μια καλή

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

Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems)

Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems) Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems) Μαθηµα 2 ηµήτρης Λιούπης 1 Intel SA-1110 µc StrongARM core. System-on-Chip. Εξέλιξη των SA-110 και SA-1100. 2 ARM cores ARM: IP (intellectual

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

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

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

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 1 Είσοδος/ Έξοδος Σε σχεδόν όλα τα προγράµµατα πρέπει να πάρουµε κάποια δεδοµένα και να δώσουµε

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

ΠΡΟΓΡΜΜΑΤΑ ΣΕ C. Γράψτε σε γλώσσα προγραμματισμού C τη συνάρτηση:

ΠΡΟΓΡΜΜΑΤΑ ΣΕ C. Γράψτε σε γλώσσα προγραμματισμού C τη συνάρτηση: ΠΡΟΓΡΜΜΑΤΑ ΣΕ C Γράψτε σε γλώσσα προγραμματισμού C τη συνάρτηση: int b_to_d(int dyad[16]) που δέχεται ως είσοδο έναν θετικό ακέραιο δυαδικό αριθμό με τη μορφή πίνακα δυαδικών ψηφίων και επιστρέφει τον

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

Διάλεξη 20: Χαμηλού Επιπέδου Προγραμματισμός II

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

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

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

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

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ενότητα 13 Αρχεία Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Αρχεία Συλλογές δεδομένων Αποθηκεύονται στην περιφερειακή μνήμη π.χ. σκληρός

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Επισκόπηση Λ.Σ.

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Επισκόπηση Λ.Σ. ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Επισκόπηση Λ.Σ. Υλικό από: Tanenbaum, Modern Operating Systems,Structured Computer Organization Stallings, Operating Systems: Internals and Design Principles. Silberschatz, Galvin

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

4 η ιάλεξη: Signals UDP Sockets

4 η ιάλεξη: Signals UDP Sockets Εργαστήριο ικτύων Υπολογιστών 4 η ιάλεξη: ικτυακός Προγραμματισμός Signals UDP Sockets TCP sockets και signals Όταν σε ένα TCP server κάνουμε fork (γεννάμε διεργασίες-παιδιά servers για να εξυπηρετήσουμε

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

Κεφάλαιο 2.1-2.4: Εισαγωγή στην C. ( ιαλέξεις 3-4) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 2.1-2.4: Εισαγωγή στην C. ( ιαλέξεις 3-4) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 2.1-2.4: Εισαγωγή στην C ( ιαλέξεις 3-4) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Περιεχόµενα Εισαγωγή στην C: Σύνταξη και Σηµασιολογία σχόλια µεταβλητές και σταθερές τύποι δεδοµένων Μετά αυτές τις δυο διαλέξεις

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

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

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

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

[11] Υπολογιστικά συστήματα: Στρώματα. Περιεχόμενα. Εισαγωγή. επικοινωνία εφαρμογές λειτουργικό σύστημα προγράμματα υλικό

[11] Υπολογιστικά συστήματα: Στρώματα. Περιεχόμενα. Εισαγωγή. επικοινωνία εφαρμογές λειτουργικό σύστημα προγράμματα υλικό Υπολογιστικά συστήματα: Στρώματα 1 ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗς ΠΛΗΡΟΦΟΡΙΚΗΣ επικοινωνία εφαρμογές λειτουργικό σύστημα προγράμματα υλικό δεδομένα Εισαγωγή στο Unix Περιεχόμενα Εισαγωγή 2 Εισαγωγή

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

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Σκοπός του μαθήματος Σκοπός του παρόντος μαθήματος είναι να μάθετε να κάνετε εισαγωγή δεδομένων σε πίνακες και περαιτέρω επεξεργασία

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

3. Σελιδοποίηση μνήμης 4. Τμηματοποίηση χώρου διευθύνσεων

3. Σελιδοποίηση μνήμης 4. Τμηματοποίηση χώρου διευθύνσεων ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ MHXANIKOI Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΙΠΕ Ο ΜΗΧΑΝΗΣ ΛΕΙΤΟΥΡΓΙΚΟΥ ΣΥΣΤΗΜΑΤΟΣ Γ. Τσιατούχας 6 ο Κεφάλαιο 1. Επίπεδο OSM 2. Εικονική μνήμη ιάρθρωση 3. Σελιδοποίηση μνήμης 4. Τμηματοποίηση

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

ΜΕΤΑΦΟΡΑ ΑΡΧΕΙΩΝ FTP

ΜΕΤΑΦΟΡΑ ΑΡΧΕΙΩΝ FTP ΜΕΤΑΦΟΡΑ ΑΡΧΕΙΩΝ FTP Το FTP (File Transfer Protocol) είναι το εξειδικευμένο πρωτόκολλο μεταφοράς αρχείων στα σύγχρονα δίκτυα δεδομένων όπως το Διαδίκτυο. Δίνει τη δυνατότητα μεταφοράς αρχείων από τον υπολογιστή

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

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα Η ΓΛΩΣΣΑ C Η C είναι μια γλώσσα προγραμματισμού υψηλού επιπέδου η οποία αναπτύχθηκε στις αρχές της δεκαετίας του 70 από τον Dennis Ritchie στα Bell Labs. Η σημερινή μορφή της γλώσσας ακολουθεί το πρότυπο

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

Διάλεξη 14: Δομές Δεδομένων ΙΙI (Λίστες και Παραδείγματα)

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

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

Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική. Τυπικοί χρόνοι πρόσβασης. Μέσος χρόνος πρόσβασης. Ταχύτητα µεταφοράς δεδοµένων

Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική. Τυπικοί χρόνοι πρόσβασης. Μέσος χρόνος πρόσβασης. Ταχύτητα µεταφοράς δεδοµένων Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική Χειµερινό Εξάµηνο 2006-07 Απόδοση των οδηγών αποθηκευτικών µέσων Μέσος χρόνος πρόσβασης (Average Access Time) Ταχύτητα µεταφοράς δεδοµένων (Data-Transfer

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

Κατανεμημένα Συστήματα Αρχείων

Κατανεμημένα Συστήματα Αρχείων Λειτουργικά Συστήματα Ι Αριστείδης Ηλίας Κατανεμημένα Συστήματα Αρχείων Αρχείο Αρχείο (File), οργανωμένη μονάδα δεδομένων αποθηκευμένων με μόνιμο και σταθερό τρόπο σε μέσα, όπως οι δίσκοι, κ.ά. Ονοματοθεσία

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

Σύντομη εισαγωγή στο λειτουργικό σύστημα Linux

Σύντομη εισαγωγή στο λειτουργικό σύστημα Linux 1 Σύντομη εισαγωγή στο λειτουργικό σύστημα Linux Το Linux είναι ένα λειτουργικό σύστημα όμοιο με το Unix που αναπτύχθηκε από έναν πυρήνα (kernel, Εικ.1) τον οποίο δημιούργησε το 1991 ο Linus Torvalds όντας

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

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008 Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει

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

ΙΑΧΕΙΡΙΣΗ ΑΡΧΕΙΩΝ Στέφανος Γκρίτζαλης Αναπληρωτής Καθηγητής Κωνσταντίνος Καραφασούλης ιδάσκων (Π 407) Μαγνητικοί ίσκοι Τα δεδοµένα αποθηκεύονται στο µαγνητικό φιλµ του δίσκου Ο δίσκος περιστρέφεται µε

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

Εργαστήριο 2: Πίνακες

Εργαστήριο 2: Πίνακες Εργαστήριο 2: Πίνακες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Επεξεργασία Πινάκων - Υλοποίηση της Δυαδικής Αναζήτησης σε πίνακες - Υλοποίηση της Ταξινόμησης με Επιλογής σε πίνακες ΕΠΛ035

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

Οδηγίες για την εγκατάσταση του πακέτου Cygwin

Οδηγίες για την εγκατάσταση του πακέτου Cygwin Οδηγίες για την εγκατάσταση του πακέτου Cygwin Ακολουθήστε τις οδηγίες που περιγράφονται σε αυτό το file μόνο αν έχετε κάποιο laptop ή desktop PC που τρέχουν κάποιο version των Microsoft Windows. 1) Copy

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

Βασικά Στοιχεία της Java

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές 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

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

Αναφορά εργασίας. Χατζητζάνος Ευάγγελος 2006030128

Αναφορά εργασίας. Χατζητζάνος Ευάγγελος 2006030128 Αναφορά εργασίας Χατζητζάνος Ευάγγελος 2006030128 Η εργασία εξαμήνου είναι στο περιβάλλον του Webots και περιλαμβάνει το Nao, καθώς και σκαλοπάτια που πρέπει να ανεβαίνει. Αρχικά έχουμε τον έτοιμο κώδικα

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

Λογισμική Εφαρμογή Διαχείρισης Ερωτηματολογίων ΟΔΗΓΟΣ ΧΡΗΣΗΣ System Συμβουλευτική Α.Ε

Λογισμική Εφαρμογή Διαχείρισης Ερωτηματολογίων ΟΔΗΓΟΣ ΧΡΗΣΗΣ System Συμβουλευτική Α.Ε σχετικά με τον έλεγχο της καπνιστικής συνήθειας 1 22 Λογισμικές εφαρμογές καταγραφής και αξιοποίησης πληροφοριών σχετικά με τον έλεγχο της καπνιστικής συνήθειας Λογισμική Εφαρμογή Διαχείρισης Ερωτηματολογίων

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

Ερωτήσεις θεωρίας MY. Μέρος Α. Υλικό.

Ερωτήσεις θεωρίας MY. Μέρος Α. Υλικό. Ερωτήσεις θεωρίας MY Μέρος Α. Υλικό. 1. Η μνήμη ROM είναι συνδυαστικό ή ακολουθιακό κύκλωμα; 2. α) Να σχεδιαστεί μία μνήμη ROM που να δίνει στις εξόδους της το πλήθος των ημερών του μήνα, ο αριθμός του

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

PowerShell Εαρινό Εξάμηνο 2014-2015

PowerShell Εαρινό Εξάμηνο 2014-2015 PowerShell Εαρινό Εξάμηνο 2014-2015 Ανδρέας Καστανάς Μιχάλης Σαματάς Παναγιώτης Αχιλλέως Ιάκωβος Στυλιανού Λίγα λόγια για την Microsoft PowerShell Η PowerShell αποτελείται από ένα κέλυφος γραμμής εντολών

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

Αβδέλαρου Κωνσταντίνα

Αβδέλαρου Κωνσταντίνα ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΜΑΤΙΚΗΣ Αβδέλαρου Κωνσταντίνα 1 η Εργασία στο μάθημα Λειτουργικά Συστήματα Ταύρος, 9 Δεκεμβρίου 2014 Άσκηση 1.1 Το shell script που δημιουργήθηκε είναι:

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

Βήματα: μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων. Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα

Βήματα: μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων. Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα Απλά Προγράμματα Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα Οι Βασικοί κανόνες Κατανόηση

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

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές Μορφές Εντολών Είδη εντολών Απλές εντολές Εκτελούν κάποια ενέργεια Εντολές ελέγχου Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές Εντολές και παραστάσεις Μιαεντολήείναιμιαπαράστασηπου ακολουθείται

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

Σχεδίαση και Υλοποίηση Μηχανισμού Μεταφοράς Δεδομένων από Συσκευές Αποθήκευσης σε Δίκτυο Myrinet, Χωρίς τη Μεσολάβηση της Ιεραρχίας Μνήμης

Σχεδίαση και Υλοποίηση Μηχανισμού Μεταφοράς Δεδομένων από Συσκευές Αποθήκευσης σε Δίκτυο Myrinet, Χωρίς τη Μεσολάβηση της Ιεραρχίας Μνήμης Σχεδίαση και Υλοποίηση Μηχανισμού Μεταφοράς Δεδομένων από Συσκευές Αποθήκευσης σε Δίκτυο Myrinet, Χωρίς τη Μεσολάβηση της Ιεραρχίας Μνήμης Αναστάσιος Α. Νάνος ananos@cslab.ntua.gr Επιβλέπων: Νεκτάριος

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

HY555 Παράλληλα Συστήματα και Grids Χειμερινό εξάμηνο 2007 Άσκηση 3 Εξοικείωση με το EGEE GRID Environment

HY555 Παράλληλα Συστήματα και Grids Χειμερινό εξάμηνο 2007 Άσκηση 3 Εξοικείωση με το EGEE GRID Environment HY555 Παράλληλα Συστήματα και Grids Χειμερινό εξάμηνο 2007 Άσκηση 3 Εξοικείωση με το EGEE GRID Environment Σκοπός της άσκησης αυτής είναι η εξοικείωση με ένα πραγματικό περιβάλλον Grids. Θα χρησιμοποιήσετε

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

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

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

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

ΑΤΕΙ ΘΕΣΣΑΛΙΑΣ. Πτυχιακή Εργασία

ΑΤΕΙ ΘΕΣΣΑΛΙΑΣ. Πτυχιακή Εργασία ΑΤΕΙ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ Πτυχιακή Εργασία Συγκριτική Δοκιμή Λειτουργικού Συστήματος Windows Server 2008 με Server Ανοιχτού Κώδικα (Ubuntu Server) σε επίπεδο

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

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ Python & NLTK: Εισαγωγή Εισαγωγή Γιατί Python? Παρουσίαση NLTK Πηγές και χρήσιμα εργαλεία Φροντιστήριο σε Python Στο φροντιστήριο: Εισαγωγή στην Python Ζητήματα προγραμματισμού για

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Συστήματα αρχείων, δίσκοι, Ε/Ε

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

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

Εξεταστέα Ύλη (Syllabus) Έκδοση 5.0

Εξεταστέα Ύλη (Syllabus) Έκδοση 5.0 Εξεταστέα Ύλη (Syllabus) Έκδοση 5.0 Πνευματικά Δικαιώματα 2007 Ίδρυμα ECDL (ECDL Foundation www.ecdl.org) Όλα τα δικαιώματα είναι κατοχυρωμένα. Κανένα μέρος αυτού του εγγράφου δεν μπορεί να αναπαραχθεί

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

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

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

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

Δημιουργία Active Directory DNS στα Windows Server 2008. Τεχνικός Δικτύων & Τηλεπικοινωνιών - Διαχείριση Δικτύων ΙΙ

Δημιουργία Active Directory DNS στα Windows Server 2008. Τεχνικός Δικτύων & Τηλεπικοινωνιών - Διαχείριση Δικτύων ΙΙ Δημιουργία Active Directory DNS στα Windows Server 2008 Τεχνικός Δικτύων & Τηλεπικοινωνιών - Διαχείριση Δικτύων ΙΙ Τι είναι το Active Directory; Το Active Directory είναι ουσιαστικά μια βάση δεδομένων

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

Εργασία στα Λειτουργικά Συστήματα Θέμα:

Εργασία στα Λειτουργικά Συστήματα Θέμα: 1 Εργασία στα Λειτουργικά Συστήματα 2007 Εργασία στα Λειτουργικά Συστήματα Θέμα: Επιλέξτε ένα οποιοδήποτε RTOS μπορείτε να βρείτε (και να προσομειώσετε ή να εκτελέσετε) και να εκτελέσετε σε αυτό μια εργασία

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

Εισαγωγή στις Συναρτήσεις

Εισαγωγή στις Συναρτήσεις Εισαγωγή στις Συναρτήσεις Η φιλοσοφία σχεδίασης της C βασίζεται στη χρήση των συναρτήσεων. Έχουμε ήδη δει και χρησιμοποιήσει πολλές συναρτήσεις που έχει το σύστημα, όπως είναι οι printf(), scanf(),αλλά

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

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions) Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions) Αυγερινός Αραμπατζής avi@ee.duth.gr www.aviarampatzis.com Βάσεις Δεδομένων Stored Procedures 1 Stored Routines (1/2) Τμήματα κώδικα τα

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

Σενάριο Εστίασης Win XP:

Σενάριο Εστίασης Win XP: Σενάριο Εστίασης Win XP: Υλικό: 1 Η/Υ (backoffice), 1 POS, 1 router Motorola, 1 PDA. Σενάριο: Sync του backoffice με το POS και merge του POS με το PDA. Προϋποθέσεις Software: 1) BACK OFFICE : WIN XP pro,.net

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

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

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

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

Κεφάλαιο 5.4-5.11: Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

Κεφάλαιο 5.4-5.11: Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα Κεφάλαιο 5.4-5.11: Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) 10-1 Εντολές Επανάληψης που θα καλυφθούν σήμερα Διάλεξη 9 - Δευτέρα while() τελεστές postfix/prefix (++, --,...) και σύνθετοι τελεστές

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

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές 1 ο Εξάμηνο Σπουδών, Χειμερινό Εξάμηνο 2012/13 Τμήμα Εφαρμοσμένων Μαθηματικών, Πανεπιστήμιο Κρήτης Διδάσκων: Χαρμανδάρης Ευάγγελος, email: vagelis@tem.uoc.gr Ιστοσελίδα

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

Μεταφραστής (Compiler)

Μεταφραστής (Compiler) Windows Καθαρισµος οθονης cls Unix clear Τελεστες ανακατευθυνσης > > >> >> < < Εντολες σε αρχεια * * (wild card) del Α rm Α ιαγραφη type Α cat Α Εµφανιση copy Α Β cp Α Β Αντιγραφη ren Α Β mv Α Β Αλλαγη

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

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

Εργαστήριο Λειτουργικών Συστημάτων. Εισαγωγή Εργαστήριο Λειτουργικών Συστημάτων Εισαγωγή Εισαγωγικά Ο σκοπός του μαθήματος: Εξοικείωση με τη χρήση λειτουργικών συστημάτων τύπου UNIX Επαφή με τον προγραμματισμό των συστημάτων Εξοικείωση με τον πυρήνα

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

Προγραμματισμός με το OpenMP Β. Δημακόπουλος

Προγραμματισμός με το OpenMP Β. Δημακόπουλος ΠΛE006 Παράλληλη Επεξεργασία Προγραμματισμός με το OpenMP Β. Δημακόπουλος Shared address space / shared variables Τι χρειάζεται κανείς για να προγραμματίσει σε αυτό το μοντέλο: Οντότητες εκτέλεσης (νήματα,

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

Γλώσσες Προγραμματισμού Μεταγλωττιστές

Γλώσσες Προγραμματισμού Μεταγλωττιστές Γλώσσες Προγραμματισμού Μεταγλωττιστές Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου Δομή Γλώσσες Προγραμματισμού Εισαγωγικά Γλώσσα Μηχανής Γλώσσες υψηλού επιπέδου Μεταγλωττιστές

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

Βασική εγκατάσταση Asterisk σε Linux

Βασική εγκατάσταση Asterisk σε Linux Βασική εγκατάσταση Asterisk σε Linux 1 Πι νακας περιεχομε νων ΓΕΝΙΚΆ... 3 ΕΓΚΑΤΆΣΤΑΣΗ ΛΟΓΙΣΜΙΚΟΎ... 4 LINUX MYSQL ASTERISK - UTILITIES... 4 ACCS (ALTEC CALL CENTER SERVER)... 5 Εγκατάσταση σε περιβάλλον

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

1. Οργάνωση της CPU 2. Εκτέλεση εντολών 3. Παραλληλία στο επίπεδο των εντολών 4. Γραμμές διοχέτευσης 5. Παραλληλία στο επίπεδο των επεξεργαστών

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

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

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος. 1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.

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

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

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

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

ΑΣΦΑΛΕΙΑ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ (Μηχανισμοί Ελέγχου Προσπέλασης)

ΑΣΦΑΛΕΙΑ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ (Μηχανισμοί Ελέγχου Προσπέλασης) ΑΣΦΑΛΕΙΑ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ (Μηχανισμοί Ελέγχου Προσπέλασης) Καλλονιάτης Χρήστος Επίκουρος Καθηγητής Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας, Πανεπιστήμιο Αιγαίου http://www.ct.aegean.gr/people/kalloniatis

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

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΒΔ - ΕΙΣΑΓΩΓΗ ΣΤΟ ΜΟΝΤΕΛΟ ΟΝΤΟΤΗΤΩΝ ΣΥΣΧΕΤΙΣΕΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Χειμερινό Εξάμηνο 2013 - ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΒΔ - ΕΙΣΑΓΩΓΗ ΣΤΟ ΜΟΝΤΕΛΟ ΟΝΤΟΤΗΤΩΝ ΣΥΣΧΕΤΙΣΕΩΝ Δρ. Βαγγελιώ Καβακλή ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ, ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ 1 Αρχιτεκτονική

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

ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ. Επίπεδα Αφαίρεσης Σ Β. Αποθήκευση Εγγραφών - Ευρετήρια. ρ. Βαγγελιώ Καβακλή ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ, Επίπεδο Όψεων.

ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ. Επίπεδα Αφαίρεσης Σ Β. Αποθήκευση Εγγραφών - Ευρετήρια. ρ. Βαγγελιώ Καβακλή ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ, Επίπεδο Όψεων. ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ Χειµερινό Εξάµηνο 2002 Αποθήκευση Εγγραφών - Ευρετήρια ρ Βαγγελιώ Καβακλή ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ, ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Επίπεδα Αφαίρεσης Σ Β Επίπεδο Όψεων Όψη Όψη

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

ιαδικτυακές Εφαρµογές

ιαδικτυακές Εφαρµογές ιαδικτυακές Εφαρµογές µε Java2 Στοιχεία ικτυακής Επικοινωνίας Όροι IP address 32bit αριθµός που χρησιµοποιείται από το Internet Protocol για την παράδοση δεδοµένων στο σωστό υπολογιστή στο δίκτυο. Port

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Εργασία στην Oracle ΔΙΑΧΕΙΡΙΣΗ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ ΚΡΑΤΗΣΕΩΝ ΘΕΣΕΩΝ ΜΙΑΣ ΑΕΡΟΠΟΡΙΚΗΣ ΕΤΑΙΡΙΑΣ ΜΑΘΗΜΑ: ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ

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

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

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

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

Tο περιβάλλον Code::Blocks

Tο περιβάλλον Code::Blocks Tο περιβάλλον Code::Blocks Το Code::Blocks αποτελεί ένα πλήρες περιβάλλον ανάπτυξης εφαρμογών για την γλώσσα C και C++. Το περιβάλλον είναι ελεύθερο λογισμικό και χρησιμοποιεί μια ειδική έκδοση του μεταγλωττιστή

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