Συστήματα Υπολογιστών 2008-09 Λειτουργικά Συστήματα Μέρος 1 ο Δρ Διονύσης Κεχαγιάς Δρ Φιλαρέτη Τσαλακανίδου Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλετρολόγωνν Μηχανικών και Μηχανικών Υπολογιστών
Περιεχόμενo διαλέξεων Ορισμός Λειτουργικού Συστήματος (ΛΣ) Λειτουργίες των ΛΣ Διάφοροι τύποι ΛΣ - παραδείγματα Το υλικό του υπολογιστή Διεργασίες, παράλληλη επεξεργασία Συγχρονισμός, αδιέξοδα Διαχείριση μνήμης Σύστημα αρχειοθέτησης Λειτουργίες εισόδου / εξόδου (Ε/Ε) 2
Ορισμός Λειτουργικού Συστήματος
Τι είναι το Λειτουργικό Σύστημα (Operating System- OS) Ένα υπολογιστικό σύστημα απαρτίζεται από επεξεργαστές (CPU), κύρια μνήμη, δίσκους, πληκτρολόγιο, οθόνη, δικτυακές διασυνδέσεις, εκτυπωτές, άλλες συσκευές εισόδου/εξόδου Το λειτουργικό σύστημα είναι το στρώμα λογισμικού που διαχειρίζεται αυτές τις συσκευές και παρέχει προγράμματα χρήστη με απλούστερη διασύνδεση με το υλικό 4
Γνωστά λειτουργικά συστήματα Linux Windows OS X 5
Τι ΔΕΝ είναι ΛΣ Εφαρμογές που όμως μας δίνουν την αίσθηση ενός ολοκληρωμένου περιβάλλοντος εργασίας. Π.χ. Microsoft Office Windows Explorer Matlab 6
Αρχιτεκτονική Υπολογιστικών Συστημάτων Εφαρμογές Μεταγλωττιστές Διορθωτές Ερμηνευτές Λειτουργικό σύστημα Γλώσσα μηχανής Μικροαρχιτεκτονική Φυσικές συσκευές 7
Στρωματοποιημένη αρχιτεκτονική υπολογιστικού συστήματος To χαμηλότερο επίπεδο περιλαμβάνει φυσικές συσκευές που αποτελούνται από ολοκληρωμένα κυκλώματα, καλωδιώσεις, τροφοδοτικά κλπ Το επίπεδο μικροαρχιτεκτονικής παρουσιάζει ομαδοποιημένες τις συσκευές αυτές, ώστε να αποτελούν αυτόνομες λειτουργικές μονάδες Αυτό καθίσταται δυνατό με τη συνδυασμένη χρήση καταχωρητών και της διαδρομής δεδομένων Η διαδρομή δεδομένων περιέχει την αριθμητκή και λογική μονάδα επεξεργασίας (π.χ. πρόσθεση, λογικό ΚΑΙ) και αποθηκεύει τα αποτελέσματά της σε καταχωρητές 8
Στρωματοποιημένη αρχιτεκτονική υπολογιστικού συστήματος (2) Ο σκοπός της διαδρομής δεδομένων είναι η εκτέλεση ενός συνόλου εντολών, οι οποίες είναι ορατές σε ένα προγραμματιστή συμβολικής γλώσσας. Οι εντολές αυτές απότελούν τη γλώσσα μηχανής Η γλώσσα μηχανής περιέχει ένα μικρό αριθμό εντολών (50-300) που χρησιμοποιούνται για τη μεταφορά δεδομένων από/προς τη μηχανή, την εκτέλεση αριθμητικών πράξεων και τη σύγκριση τιμών Οι συσκευές εισόδου/εξόδου ελέγχονται μέσω της φόρτωσης τιμών σε ειδικούς καταχωρητές συσκευής Παράδειγμα: οδίσκοςμπορείναδιαβάσει, με φόρτωση στους καταχωρητές του των τιμών της διεύθυνσης του δίσκου, τη διεύθυνση της κύριας μνήμης, του αριθμού των bytes, της κατεύθυνσης (ανάγνωση ή εγγραφή) Για πολλές συσκευές ο χρονισμός παίζει φυσικά πολύ μεγάλο ρόλο και η πολυπλοκότητα αυξάνεται Την πολυπλοκότητα αυτή κρύβει από το χρήστη το λειτουργικό σύστημα! 9
Λογισμικό συστήματος Σύνολο τμημάτων λογισμικού που παραδίδονται προεγκατεστημένα σε έναν καινούργιο υπολογιστή Λειτουργικό σύστημα Συμβολομεταφραστές (Assemblers) Μεταγλωττιστές (Compilers) και διερμηνείς (Interpreters) υψηλού επιπέδου Συνδέτες των αντικειμενικών προγραμμάτων του χρήστη με τις βιβλιοθήκες του συστήματος Αποσφαλματωτές (Debuggers) για την βήμα προς βήμα παρακολούθηση της εκτέλεσης ενός προγράμματος και τον εντοπισμό λαθών Βιβλιοθήκες υποπρογραμμάτων που χρησιμοποιούνται στην ανάπτυξη και εκτέλεση προγραμμάτων Βοηθητικά συνοδευτικά προγράμματα επιπέδου εφαρμογών 10
Λειτουργικό σύστημα Ένα σύνολο βασικών προγραμμάτων που ελέγχει τη λειτουργία του υπολογιστή διαχείριση και συντονισμός των εργασιών διαχείριση διαθέσιμων πόρων επικοινωνία χρήστη-υπολογιστή ΔιαμέσουτουΛΣοιεφαρμογές αντιλαμβάνονται το υλικό και εκτελούνται στον υπολογιστή 11
ΟΠυρήνας(Kernel) Το κύριο τμήμα του ΛΣ Είναι συνήθως γραμμένος σε C ή συμβολική γλώσσα (Assembly) Διαχείριση διεργασιών, μνήμης και συσκευών Δευτερεύουσες λειτουργίες, π.χ. υποστήριξη δικτύωσης Προστατεύεται Δεν ανήκει σε κανένα χρήστη Δύο καταστάσεις λειτουργίας (dual mode) Kernel mode User mode Διεργασίες Πυρήνας Υλικό 12
Καταστάσεις λειτουργίας συστήματος Κατάσταση λειτουργίας πυρήνα Διαθέσιμοτοσύνολοτωνεντολώνεπεξεργαστήκαιτο σύνολο του υλικού Προστασία υλικού από τις λαθροχειρίες χρηστών Κατάσταση λειτουργίας χρήστη Υποσύνολο εντολών και υποσύνολο υλικού όχι εντολές που εμπλέκουν προστασία μνήμης και διαχείριση Ε/Ε Μεταγλωττιστές, διορθωτές, προγράμματα χρήστη Ουσιαστικά δύο διαφορετικά επίπεδα, ανεξάρτητα από τα δικαιώματα του χρήστη 13
Κλήσεις Συστήματος (System Calls) Διεργασία Χρήστη αιτείται τη χρήση πόρων Οι κατάλληλες ρουτίνες του πυρήνα πρέπει να κληθούν -> Κλήσεις Συστήματος Π.χ.. fork(), exec(), malloc(), read(), printf() Πώς εκτελείται μια κλήση συστήματος; Ρουτίνα βιβλιοθήκης που συνδέεται με τον κώδικα της διεργασίας Εντολή TRAP Αλλάζει το σύστημα από user mode σε kernel mode 14
Λειτουργίες των ΛΣ
Ποιος είναι ο ρόλος του ΛΣ; Επέκταση μηχανής Διαχείριση υλικών πόρων του ΗΥ Ανκαιακούγονταιωςδιακριτοίρόλοι, στην ουσία δεν είναι και τόσο διακριτοί 16
Το ΛΣ ως επεκταμένη (εικονική) μηχανή Virtual machine Προκειμένου να καλυφθεί η πολυπλοκότητα, η μηχανή εξοπλίζεται με το ΛΣ Στρώμα λογισμικού: παρέχει ένα βολικό σύνολο εντολών για τον προγραμματιστή Στην πραγματικότητα η εκτέλεση ενός προγράμματος περιλαμβάνει λεπτομέρειες που το ΛΣ αποκρύπτει από τον προγραμματιστή Παράδειγμα: Ηεντολήread block from file είναι ευκολότερη από τη σειρά εντολών που εμπλέκει τις λεπτομέρειες μετακίνησης της κεφαλής του δίσκου, την αναμονή για σταθεροποίηση της κεφαλής κλπ 17
Παράδειγμα Ε/Ε δεδομένων Θεωρήστε ένα πρόγραμμα που θέλει να διαβάσει δεδομένα από ένα αρχείο. Τα αρχεία (files) αποθηκεύονται σε μαγνητικούς δίσκους Δίσκοι: ένα ηλεκτρονικό τμήμα (controller - επεξεργαστής) ένα μαγνητικό τμήμα (επιφάνειες δίσκων πάνω στις οποίες γράφουν κεφαλές) Ο επεξεργαστής δέχεται εντολές για να: ανακτήσει δεδομένα (read) από συγκεκριμένες διευθύνσεις, να μετακινήσει τις κεφαλές σε καινούριες διευθύνσεις, κλπ ομοίως κατά την εγγραφή (write) 18
Πραγματική vs. Εικονική Εκτέλεση Προγράμματος Πραγματική εκτέλεση από το ΛΣ: Δημιούργησε διαταγή εγγραφής στο δίσκο με 13 παραμέτρους που τοποθετούνται σε 9 byte Καθόρισε τη διεύθυνση του τμήματος του δίσκου, τον αριθμό τομέων ανά τροχιά, το εύρος του χάσματος, κλπ Λειτουργία ολοκληρώνεται -> επιστρέφονται 23 πεδία καταστάσεων/λαθών + κατάσταση κινητήρα σε 7 byte Αν ο κινητήρας είναι απενεργοποιημένος πρέπει να ξεκινήσει πριν την εγγραφή, κλπ Πρόγραμμα σε ψευδοκώδικα: readfile { } άνοιξε το αρχείο; καθόρισε το μέγεθός του; δέσμευσε την αντίστοιχη μνήμη; διάβασε το αρχείο στη μνήμη; κλείσε το αρχείο; Η πραγματική εκτέλεση του προγράμματος εμπεριέχει εξαιρετικά μεγάλη πολυπλοκότητα που δεν ενδιαφέρει τον προγραμματιστή 19
Το ΛΣ ως διαχειριστής πόρων Επεξεργαστές, μνήμες, χρονιστές, δίσκοι, ποντίκια, εκτυπωτές, κλπ αποτελούν αντικείμενα ανταγωνισμού για τα προγράμματα Η μοιρασιά των πόρων αφορά στο χώρο και στο χρόνο Το ΛΣ, και όχι οι διεργασίες, είναι υπεύθυνο για τον καταμερισμό και τη διαχείριση (ενημέρωση, παρακολούθηση, έλεγχο) των πόρων 20
Διαχείριση πόρων Παράδειγμα: Τι θα συνέβαινε αν τρία προγράμματα προσπαθούσαν να τυπώσουν παράλληλα στον ίδιο εκτυπωτή; Το λειτουργικό σύστημα διαχειρίζεται (αλλάζει) τη φυσική ροή των εντολών Χωροχρονική πολύπλεξη πόρων 21
Χρονική πολύπλεξη πόρων Οι πόροι χρησιμοποιούνται εναλλάξ από διάφορα προγράμματα Αν υπάρχει μόνο ένας επεξεργαστής και πολλά προγράμματα προς εκτέλεση πώς γίνεται η κατανομή του χρόνου ανά πρόγραμμα Εκτύπωση 22
Εκτέλεση εκ περιτροπής (round-robin) 23
Χωρική πολύπλεξη πόρων Το κάθε πρόγραμμα/χρήστης παραλαμβάνει ένα μέρος του πόρου παράδειγμα η μνήμη Κατανομή χώρου στο δίσκο 24
Το ΛΣ είναι η καρδιά και ο εγκέφαλος ενός Η/Υ!!!
Διάφοροι τύποι ΛΣ
Ιστορική εξέλιξη των ΛΣ 1 η γενιά (1945-1955): Λυχνίες κενού και πίνακες συνδέσεων 2 η γενιά (1955-1965): Τρανζίστορ και συστήματα δέσμης 3 η γενιά (1965-1980): Ολοκληρωμένα κυκλώματα και πολυπρογραμματισμός 4 η γενιά (1980-σήμερα): Προσωπικοί υπολογιστές 27
Κατηγορίες ΛΣ ΛΣ Μεγάλων Υπολογιστών OS/360 ΛΣ Διακομιστών Unix, Windows 2003 Server, Linux ΛΣ Πολυεπεξεργαστών Συνήθως παραλλαγές ΛΣ Διακομιστών ΛΣ Προσωπικών Υπολογιστών Windows XP, Vista, Mac OS X, Linux 28
Κατηγορίες ΛΣ (συνέχεια) ΛΣ Πραγματικού Χρόνου VxWorks, QNX Ενσωματωμένα ΛΣ Για τον έλεγχο συσκευών που δεν είναι υπολογιστές (ΤV, κινητά, φούρνοι μικροκυμάτων) PalmOS, Windows CE, Symbian ΛΣ για έξυπνες κάρτες Proprietary, Java-oriented 29
Παραδείγματα Λειτουργικών Συστημάτων
Λειτουργικό σύστημα UNIX Αναπτύχθηκε το 1970 (AT&T, Bell Labs) Αρχικά σε μίνι υπολογιστές PDP-11 Έγινε διαθέσιμος ο πηγαίος κώδικας Αναπτύχθηκαν από τρίτους βελτιωμένες εκδόσεις για άλλους υπολογιστές (π.χ. Berkley) Ανάπτυξη προτύπου POSIX UNIX (1990) 31
Πρότυπο POSIX (Portable Operating System IX) Ορίζει 60 βασικές κλήσεις συστήματος (π.χ. open, close, read, για αρχεία, εντολές για τη δημιουργία νέων διεργασιών, κτλ) Ορίζει βασικά βοηθητικά προγράμματα λειτουργικού συστήματος π.χ. ls, cp, mv (εντολές καταλόγων) cc (συμβολο-μεταφραστής γλώσσας C ) Σύγχρονα συστήματα (π.χ. Solaris) ορίζουν ένα υπερσύνολο εντολών/ προγραμμάτων 32
Κατάταξη κλήσεων συστήματος UNIX 33
Τυπική δομή συστήματος UNIX 34
Διασύνδεση με το χρήστη: Κέλυφος (Shell) Πρόγραμμα επιπέδου χρήστη με διασύνδεση με γραμμή εντολών (command line) 35
Διασύνδεση με το χρήστη: Παραθυρικό σύστημα X Windows Motif Gnome 36
Βασική φιλοσοφία UNIX Ένας μικρός σε μέγεθος πυρήνας Ανταλλαγή προγραμμάτων μέσω πηγαίου κώδικα σε γλώσσα C Συμβολο-μεταφραστής για την εγκατάσταση του ίδιου προγράμματος σε υπολογιστές με διαφορετική αρχιτεκτονική 37
Λειτουργικό σύστημα Windows NT MS-DOS (1981-1985). Λειτουργικό σύστημα ενός χρήστη με κέλυφος Windows 3.X (1985-1995). Προσθήκη συστήματος γραφικής διασύνδεσης με τον χρήστη Windows 95,98 (1995-1998). Συνύπαρξη με MS-DOS. Συμβιβασμοί λόγω συμβατότητας (σύστημα αρχείων FAT). Plug and Play, βελτιωμένη γραφική διασύνδεση Windows NT (1991-) 38
Λειτουργικό σύστημα Windows NT Πλήρες 32bit σύστημα Εκδόσεις για διακομιστές και σταθμούς εργασίας Επιτρέπει πολλούς χρήστες και πολυπρογραμματισμό (multitasking) Πιο αποτελεσματικό σύστημα αρχείων Πολυγλωσσική υποστήριξη (Unicode) 39
Δομή Windows NT 40
Win32 API (Διασύνδεση Προγραμματισμού Εφαρμογών) Υπερσύνολο κλήσεων συστήματος Αντικειμενοστραφής προσέγγιση 41
Φιλοσοφία Windows Πολύπλοκο, «κλειστό» λειτουργικό σύστημα (πολλές επανεκδόσεις, υψηλό κόστος) Απευθύνεται κυρίως σε υπολογιστές Intel Εξαιρετικά φιλικό και εύχρηστο για άπειρους χρήστες και προγραμματιστές 42
Απαιτήσεις σύγχρονων ΛΣ Φιλικό πλήρες GUI Plug and Play (σύνδεση και άμεση λειτουργία) Εύκολη δικτύωση Συστήματα αυτοματισμού γραφείου Αυξημένη ασφάλεια Ενσωματωμένα εργαλεία για πολυμέσα Περιβάλλον Internet Συνεργασία με κάρτες τύπου TV-Tuner Λογισμικά εργαλεία συστήματος 43
Desktop wars 44
Το υλικό του υπολογιστή
Υλικό υπολογιστών Επεξεργαστής: οεγκέφαλος CPU Μνήμη: η αποθηκευτική μονάδα του εγκεφάλου Συσκευές Ε/Ε Δίαυλος: οφορέαςεπικοινωνίας CPU Κύρια Μνήμη Μονάδα ελέγχου Συσκευές Ε/Ε Καταχωρητές Αριθμητική και Λογική Μονάδα (ALU) Ελεγκτές ΤΗΜΜΥ, ΑΠΘ, 2008-09 Συστήματα Δίαυλος Υπολογιστών: Συστήματος Λειτουργικά Συστήματα 46
Επεξεργαστές Κάθε επεξεργαστής μπορεί μόνο να εκτελέσει ένα συγκεκριμένο σύνολο εντολών (Pentium / Spark) Περιέχουν καταχωρητές για να διατηρούν προσωρινά αποτελέσματα και σημαντικές μεταβλητές Τι εντολές; Για τη φόρτωση από τη μνήμη στον καταχωρητή και το αντίστροφο Συνδυασμό τελεστέων (από διαφορετικούς καταχωρητές) σε ένα αποτέλεσμα (π.χ. πρόσθεση δύο λέξεων) 47
Μνήμη Η μνήμη πρέπει να είναι: Γρήγορη (να μη δεσμεύει τον επεξεργαστή) Μεγάλης χωρητικότητας (να επαρκεί για τις τρέχουσες ποσότητες δεδομένων) Φθηνή Μη πτητική (να μην χάνεται το περιεχόμενό της όταν σβήνει ο ΗΥ) Η προσπέλαση της μνήμης είναι χρονοβόρα διαδικασία και σχετίζεται με το πού βρίσκεται αρχιτεκτονικά, με το υλικό της και με τη διαχειριστική της ευελιξία 48
Ιεράρχηση μνήμης Τυπικός Χρόνος Προσπέλασης Τυπική Αποθηκευτική Ικανότητα 1 nsec 2nsec 10 nsec Πιο γρήγορη Καταχωρητές Κρυφή Μνήμη Κύρια Μνήμη Μεγαλύτερης χωρητικότητας 1 KB 2-4 MB 0,5-2 GB 10 msec 100 sec Μαγνητικός Δίσκος Μαγνητική Ταινία 80-250 GB 0,5-2 TB 49
Μνήμη 50
Μνήμη Καταχωρητές: βρίσκονται στο εσωτερικό του επεξεργαστή Κρυφή μνήμη: διαιρείται σε γραμμές κρυφής μνήμης, που όσο πιο πολύ χρησιμοποιούνται, τόσο πιο κοντά στον επεξεργαστή τοποθετούνται για να μειώνουν το χρόνο προσπέλασης 51
Κύρια μνήμη (γνωστή και ως RAM) Κίνηση μέσω διαύλου Χάνει τα περιεχόμενά της όταν ο υπολογιστής είναι εκτός λειτουργίας Υπάρχει και αμετάβλητη μνήμη τυχαίας προσπέλασης που δεν χάνει το περιεχόμενό της Η μνήμη μόνο για ανάγνωση (ROM) δεν μπορεί να τροποποιηθεί και περιέχει συνήθως το πρόγραμμα εκκίνησης Η μνήμες EEPROM (electrically erasable programmable ROM) και flash RAM είναι μεν αμετάβλητες, μπορούν όμως να ξαναγραφούν 52
Μαγνητικός δίσκος Μηχανική συσκευή τρεις τάξεις μεγέθους πιο αργή, δύο τάξεις μεγέθους πιο φθηνή Αποτελείται από μεταλλικές πλάκες που περιστρέφονται με 5400, 7200, 10800 στροφές ανά λεπτό (RPM) Βραχίονας διαβάζει/γράφει ομόκεντρους κύκλους 53
Ελεγκτές -Controllers Ελεγκτής: τσιπ που ελέγχει τη συσκευή με φυσικό τρόπο δέχεται εντολές από το λειτουργικό σύστημα, π.χ. να διαβάσει δεδομένα από τη συσκευή, και τις εκτελεί Επιφορτίζεται με την απλούστερη παρουσίαση της λειτουργικότητας της συσκευής, π.χ. ανάγνωση από δίσκο (τομέα, κύλινδρο, ταχύτητα, κλπ) 54
Συσκευές Ε/Ε Συσκευή: ακολουθούν πρότυπες διαδικασίες και απλές διασυνδέσεις (interfaces) ώστε να τις διαχειρίζονται ελεγκτές Π.χ. κάθε δίσκος IDE (Integrated Drive Electronics) μπορεί να είναι διαχειριζόμενος από κάθε ελεγκτή IDE Το λογισμικό που επικοινωνεί με τον ελεγκτή λέγεται οδηγός συσκευής (device driver) Π.χ. κάθε scanner πρέπει να είναι εφοδιασμένος με οδηγούς για WinXP, LINUX, UNIX ώστε να μπορεί να εκτελείται σε κατάσταση λειτουργίας πυρήνα 55
Δίαυλοι - Channels Δεν αρκεί ένας δίαυλος για τη μεταφορά δεδομένων όλων των μονάδων του υπολογιστικού συστήματος Δίαυλος μνήμης, κρυφής μνήμης, SCSI small computer system interface (μεγάλο εύρος ζώνης), USB universal serial bus (αργές συνδέσεις, έλεγχος ανά 1ms ποντίκι, πληκτρολόγιο, κλπ) 56
Διεργασίες, Παράλληλη Επεξεργασία
Εισαγωγή Ο υπολογιστής μπορεί να κάνει πολλά πράγματα ταυτόχρονα να εκτελεί προγράμματα χρηστών να διαβάζει από το δίσκο να εκτυπώνει Ο επεξεργαστής μεταβαίνει από πρόγραμμα σε πρόγραμμα κυκλικά 10-100 msec για το καθένα 58
Σειριακή, ψευδοπαράλληλη, παράλληλη επεξεργασία Τι φαίνεται: σε ένα σύστημα η κεντρική μονάδα επεξεργασίας (CPU) εκχωρείται διαδοχικά σε διαφορετικά προγράμματα, εκτελώντας κάποιο τμήμα του καθενός για κάποια ms H CPU εκτελεί κάθε στιγμή ένα μόνο πρόγραμμα. Σε κάθε δευτερόλεπτο εκτελεί πολλά προγράμματα. Ψευδαίσθηση παράλληλης επεξεργασίας Παραλληλισμός υλικού πολλές μονάδες επεξεργασίας (μοιράζονται μία μνήμη) 59
Διεργασία (Process) Η πιο σημαντική έννοια σε όλα τα λειτουργικά συστήματα Είναι ένα πρόγραμμα που εκτελείται Αποτελείται από: Μια περιοχή διευθύνσεων (εκτελέσιμος κώδικας, δεδομένα, στοίβα) Πόρους λειτουργικού συστήματος (π.χ. ανοιχτά αρχεία) Κατάσταση (μετρητής προγράμματος, καταχωρητές, δείκτης σωρού, παράμετροι κατάστασης) 60
Ψευδοπαράλληλες vs. σειριακές διεργασίες (a) Πολυ-προγραμματισμός τεσσάρων προγραμμάτων (b) Μοντέλο 4 ανεξάρτητων σειριακών διεργασιών (c) Μόνο ένα πρόγραμμα ενεργό κάθε στιγμή 61
Παράλληλες vs. ψευδοπαράλληλες διεργασίες 3 CPU 1CPU 62
Δημιουργία διεργασίας Κύρια συμβάντα που προκαλούν τη δημιουργία διεργασιών: Αρχικοποίηση συστήματος Δαίμονες: διεργασίες για το χειρισμό αλληλογραφίας, ιστοσελίδων, ειδήσεων, εκτυπώσεων κτλ που εκτελούνται στο παρασκήνιο Ηεκτέλεσηκλήσηςσυστήματοςπουοδηγεί σε νέες διεργασίες Αίτηση χρήστη για τη δημιουργία νέας διεργασίας Αρχικοποίηση προγραμματισμένης εργασίας 63
Κλήσεις συστήματος για δημιουργία διεργασίας UNIX: Fork Δημιουργείται κλώνος της τρέχουσας διεργασίας Windows: CreateProcess +100 system calls για διαχείριση και συγχρονισμό διεργασιών 64
Κλήσεις συστήματος UNIX Windows Ερμηνεία fork CreateProcess Νέα διεργασία waitpid WaitforSingleObject Αναμονή execve ------ CreateProcess=fork+execve exit ExitProcess Τερματισμός open CreateFile Δημιουργία ή άνοιγμα close CloseHandle Κλείσιμο lseek SetFilePointer Μετακίνηση δείκτη Link, mount, chmod --------- kill --------- Δεν υποστηρίζουν σήματα 65
Τερματισμός διεργασιών Συνθήκες Τερματισμού Διεργασιών Κανονική έξοδος οικειοθελώς Ολοκλήρωση ή τερματισμός από χρήστη UNIX: exit, Windows: ExitProcess Έξοδος από σφάλμα κώδικα (π.χ διαίρεσημε 0) οικειοθελώς Μοιραίο σφάλμα π.χ. cc nonexistent.c εξαναγκάζεται Ctrl+C Από άλλη διεργασία (kill -9) - εξαναγκάζεται 66
Ιεραρχίες διεργασιών Μια μητρική διεργασία (πρόγονος) δημιουργεί μια θυγατρική διεργασία (απόγονος). Οι θυγατρικές διεργασίες μπορούν να δημιουργήσουν τις δικές τους θυγατρικές διεργασίες Η παραπάνω συσχέτιση σχηματίζει μια ιεραρχία Στο UNIX είναι γνωστή ως "process group Init login, etc. Στα Windows δεν υπάρχει η έννοια της ιεραρχίας διεργασιών Όλες οι διεργασίες δημιουργούνται ίσες ιεραρχικά 67
Παράδειγμα Μια διεργασία μπορεί να χρησιμοποιεί ως είσοδο την έξοδο μίας άλλης cat file1 file2 file3 grep tree Η πρώτη διεργασία εκτελεί το πρόγραμμα cat γιανασυνενώσει3 αρχεία και να στείλει το αποτέλεσμα στην έξοδο Η δεύτερη διεργασία εκτελεί το πρόγραμμα grep για να επιλέξει όλες τις γραμμές που περιλαμβάνουν τη λέξη tree 68
Καταστάσεις Διεργασιών Μεταβάσεις: 1. Περιμένει δεδομένα εισόδου (block) 2. Ο χρονοπρογραμματιστής επιλέγει άλλη διεργασία (η CPU δίνεται σε άλλη διεργασία) 3. H CPU δίνεταισεαυτήτηδιεργασία 4. Είσοδος διαθέσιμη Πιθανές καταστάσεις διεργασίας Εκτελείται (Running): έχει τη CPU Έτοιμη (Ready): μπορεί να εκτελεστεί, αλλά η CPU δόθηκε αλλού Μπλοκαρισμένη (Βlocked): αναμένει κάποιο συμβάν 69