Εισαγωγή στα Λειτουργικά Συστήματα (Λ/Σ) Το UNIX και οι εντολές του Παρουσίαση 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

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

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

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

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

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

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

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

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

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

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

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

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

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

Κεφάλαιο 4 Διεργασίες Β Τάξη ΕΠΑΛ

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Εισαγωγή στα Λειτουργικά Συστήματα (Λ/Σ) Το UNIX και οι εντολές του Παρουσίαση 1

Κεφάλαιο 3: Λειτουργικά Συστήματα

Κεφάλαιο 4 Λογισμικό συστήματος. Εφαρμογές Πληροφορικής Κεφ.4 Καραμαούνας Πολύκαρπος 1

Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals

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

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

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

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

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

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

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

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

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

Μάθημα 7 ο. Αλγόριθμοι Χρονοδρομολόγησης

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

Μάθημα 6 ο. Χρονοδρομολόγηση (Scheduling)

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

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ H/Y

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση:

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

Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC

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

Εισαγωγή στα Λειτουργικά Συστήματα (Λ/Σ) Το UNIX και οι εντολές του Παρουσίαση 3

ENOTHTA 5 XPONO POMOΛOΓHΣH

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

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

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

Μάθημα 7: Αλγόριθμοι Χρονοδρομολόγησης

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

Ι.Ε.Κ. Χαϊδαρίου ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ. Σημειώσεις Θεωρίας

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

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

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

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

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

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

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

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

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

Μάθημα 1 ο ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΤΩΝ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

ροµολόγηση Επεξεργαστή

Κεφάλαιο 3: Λειτουργικά Συστήµατα

Transcript:

Λειτουργικά Συστήματα & Γλώσσες Προγραμματισμού Εισαγωγή στα Λειτουργικά Συστήματα (Λ/Σ) Το UNIX και οι εντολές του Παρουσίαση 2 1

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

1. Ορισμός Διεργασίας Περιεχόμενα Παρουσίασης 2 "ΔΙΕΡΓΑΣΙΕΣ" 2. Καταστάσεις Διεργασιών 3. Στόχοι Χρονοπρογραμματισμού & Αλγόριθμοι 4. Περιγραφέας Διεργασίας 5. Σήματα Διακοπών 6. Πυρήνας του Λ/Σ 7. Διαδιεργασιακή Επικοινωνία Ανταγωνισμός 8. Κλήσεις Συστήματος Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 3

Ορισμός Διεργασίας (1) Έχουμε πει: Διεργασία (process) ονομάζεται κάθε πρόγραμμα που εκτελείται (ή πιο πρόχειρα "τρέχει") μαζί με κάθε πληροφορία ή / και δεδομένα ή / και πόρους που απαιτούνται για να εκτελεσθεί. # Οι Διεργασίες διαχωρίζονται σε "Διεργασίες Συστήματος" και "Διεργασίες Χρηστών" Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 4

Ορισμός Διεργασίας (2) Το Εκτελέσιμο Πρόγραμμα: Εφόσον μια Διεργασία νοείται ως ενότητα που "τρέχει" αποτελούμενη από συνιστώσες Πρέπει να διευκρινισθεί: Η συνιστώσα της "το Εκτελέσιμο Πρόγραμμα" δεν είναι αποτέλεσμα άλλης Διεργασίας αλλά αποτέλεσμα ενεργειών των προγραμματιστών. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 5

Ορισμός Διεργασίας (2) "Εξουσία" επί των Διεργασιών έχουν: 1. Πλήρη εξουσία, το Λ/Σ κυρίως μέσω ειδικού Προγράμματος Συστήματος που ονομάζεται Χρονοπρογραμματιστής (process scheduler ή interrupting clock). 2. Μερική εξουσία, οι χρήστες για Διεργασίες που οι ίδιοι δημιούργησαν 3. Μερική εξουσία, ο υπερχρήστης για Διεργασίες που ο ίδιος δημιούργησε ή για ορισμένες από τις Διεργασίες Συστήματος Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 6

Ορισμός Διεργασίας (3) Δένδρο Διεργασιών: Μία Διεργασία μπορεί να δημιουργήσει μία ή περισσότερες άλλες Διεργασίες. Αυτές ονομάζονται Θυγατρικές Διεργασίες (child processes) ενώ η Διεργασία που τις δημιούργησε ονομάζεται Γονική Διεργασία (parent process). Μια Θυγατρική Διεργασία μπορεί να δημιουργήσει και νέες δικές της θυγατρικές, δημιουργώντας ένα δέντρο Διεργασιών. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 7

Ορισμός Διεργασίας (4) Τυπικό δένδρο Διεργασιών σε Σχήμα: Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 8

Ορισμός Διεργασίας (5) Η δουλειά του χρονοπρογραμματιστή (Χ/Π): Δεν επιτρέπει να μονοπωλείται η CPU από μία και μοναδική Διεργασία. Ο σκοπός αυτής της ρύθμισης είναι η αντιμετώπιση του "μόνιμου προβλήματος". Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 9

Καταστάσεις Διεργασιών (1) Τρεις (3) είναι οι δυνατές καταστάσεις Διεργασίας: 1. Εκτελούμενη (running), όταν εκείνη τη στιγμή αυτή η Διεργασία απασχολεί τη CPU, 2. Προς εκτέλεση (ready), όταν παρότι είναι η ίδια έτοιμη να χρησιμοποιήσει τη CPU, έχει διακοπεί προσωρινά επειδή η CPU διατίθεται για την εκτέλεση άλλων Διεργασιών, και 3. Σε αναστολή (blocked), περιμένοντας κάποιο συμβάν (για παράδειγμα, περιμένοντας να της διατεθούν κάποια δεδομένα τα οποία χρειάζεται ή να δοθεί εντολή από τον χρήστη κλπ) Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 10

Καταστάσεις Διεργασιών (2) Επιτρεπόμενες μεταβολές κατάστασης Διεργασίας: Με απόφαση του Χ/Π : 1. Από "εκτελούμενη" σε "προς εκτέλεση" (timer-run-out) 2. Από "προς εκτέλεση" σε "εκτελούμενη" (dispatch) Λόγω εξωτερικού συμβάντος: 3. Από "εκτελούμενη" σε "σε αναστολή" (block) Λόγω του ότι συνέβη το αναμενόμενο εξωτερικό γεγονός: 4. Από "σε αναστολή" σε "προς εκτέλεση" (wakeup) Απαγορεύεται η απευθείας μεταβολή από "σε αναστολή" σε "εκτελούμενη" Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 11

Καταστάσεις Διεργασιών (3) Ο χρήστης ή ο υπερχρήστης μπορεί να ζητήσει ΜΟΝΟ ΔΥΟ μεταβολές κατάστασης, την "3" και την "4": 3. Από "εκτελούμενη" σε "σε αναστολή" 4. Από "σε αναστολή" σε "προς εκτέλεση" ΕΠΙΣΗΣ, Ο χρήστης ή ο υπερχρήστης έχει συνήθως KAI ακυρωτική εξουσία: Η οποία συνήθως συνεπάγεται την καταστροφή μιας Διεργασίας (kill, cancel) Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 12

Καταστάσεις Διεργασιών (4) Η ακυρωτική εξουσία του υπερχρήστη είναι περιορισμένη: Ο υπερχρήστης συνήθως δεν εξουσιοδοτείται να καταστρέψει μία Διεργασία Συστήματος από την οποία εξαρτάται η καλή λειτουργία του Λ/Σ ΕΠΙΠΛΕΟΝ, Το Λ/Σ έχει και αυτό ακυρωτική εξουσία: Η οποία συνήθως εκτελείται αυτόματα και ο χρήστης δεν την αντιλαμβάνεται (transparent, invisible). Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 13

Καταστάσεις Διεργασιών (5) Επιτρεπόμενες μεταβολές κατάστασης Διεργασίας, σχηματικά: Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 14

Καταστάσεις Διεργασιών (6) Η καταστροφή Διεργασίας σημαίνει ουσιαστικά την ακύρωση - εξαφάνιση της από τον Η/Υ. Ταυτόχρονα, οι πόροι που χρησιμοποιούσε επιστρέφονται στον Η/Υ και σβήνεται σχεδόν κάθε σχετική πληροφορία. Η καταστροφή Διεργασίας που έχει ήδη δημιουργήσει Θυγατρικές είναι λίγο περισσότερο πολύπλοκη από το συνηθισμένο. Σε ορισμένα Λ/Σ, ή καταστροφή Γονικής εξαφανίζει αυτόματα και κάθε Θυγατρική της. Σε άλλα όμως, οι Θυγατρικές ανεξαρτητοποιούνται από τη Γονική. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 15

Καταστάσεις Διεργασιών (7) Οι "προς εκτέλεση" Διεργασίες καταγράφονται με τη χρονική σειρά που προετοιμάζονται στον Κατάλογο Προς Εκτέλεση Διεργασιών (ready list). Η σειρά καταγραφής συσχετίζεται χαλαρά με τη σειρά προτεραιότητας. Η σειρά προτεραιότητας κανονίζεται τελικά από τον Χ/Π. Οι "σε αναστολή" Διεργασίες καταγράφονται στον Κατάλογο των Σε Αναστολή Διεργασιών (blocked list). Δεν υπάρχει εκεί η έννοια της προτεραιότητας. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 16

Καταστάσεις Διεργασιών (8) ΓΙΑ ΜΟΝΟΕΠΕΞΕΡΓΑΣΤΙΚΑ ΣΥΣΤΗΜΑΤΑ: Μία CPU μπορεί να απασχολείται κάθε στιγμή από μία ΜΟΝΟ Διεργασία (1) 1. Αυτό επιτρέπεται να γίνεται μόνο για χρόνο Δt που ελέγχεται από τον Χ/Π, μετά η CPU ΠΡΕΠΕΙ να ασχοληθεί με άλλη Διεργασία. 2. Αν η Διεργασία ολοκληρωθεί σε χρόνο λιγότερο από τον Δt που της διατέθηκε, τότε η κατάστασή της μεταπίπτει σε "σε αναστολή" ή σε "προς εκτέλεση" ή καταστρέφεται και ο έλεγχος της CPU επιστρέφεται στο Λ/Σ. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 17

Καταστάσεις Διεργασιών (9) Μία CPU μπορεί να απασχολείται κάθε στιγμή από μία ΜΟΝΟ Διεργασία (2) 3. Αν η Διεργασία σταματήσει σε χρόνο λιγότερο από τον Δt που της διατέθηκε, διότι π.χ. ζητά δεδομένα, η κατάστασή της μεταπίπτει σε "σε αναστολή" και ο έλεγχος της CPU επιστρέφεται στο Λ/Σ. 4. Αν η Διεργασία ΔΕΝ ολοκληρωθεί στο χρόνο Δt που της διατέθηκε, τότε ο Χ/Π στέλνει στην CPU ένα σήμα διακοπής (interrupt) και η κατάστασή της μεταπίπτει σε "προς εκτέλεση". Ο έλεγχος της CPU επιστρέφεται στο Λ/Σ. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 18

Καταστάσεις Διεργασιών (10) Μία CPU μπορεί να απασχολείται κάθε στιγμή από μία ΜΟΝΟ Διεργασία (3) 5. Στις περιπτώσεις (2), (3) και (4) το Λ/Σ αναθέτει στην CPU επόμενη Διεργασία που επιλέγεται από το ready list. 6. Τυχόν μη ολοκληρωμένες Διεργασίες που σταμάτησαν να απασχολούν την CPU για κάποιο από τους πιο πάνω λόγους, περιμένουν στο blocked list ή στο ready list ώστε να ξαναέρθει η σειρά τους να απασχολήσουν την CPU. 7. Ο αλγόριθμος χρονοπρογραμματισμού 1-2-3-4-5-6 δεν είναι ο μοναδικός. Υπάρχουν και πολλοί άλλοι (ΔΕΙΤΕ ΤΙΣ ΣΗΜΕΙΩΣΕΙΣ ΣΑΣ). Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 19

Στόχοι Χρονοπρογραμματισμού & Αλγόριθμοι (1) Η αντιμετώπιση του μόνιμου προβλήματος, περιέχει κύριους αντικρουόμενους στόχους: Την Δικαιοσύνη: να λαμβάνει η κάθε Διεργασία ίσο ποσοστό χρήσης της CPU με όλες τις άλλες και την Αποδοτικότητα: να εξασφαλίζεται, δηλαδή, μέγιστο ποσοστό χρήσης της CPU. και δευτερεύοντες αντικρουόμενους στόχους: Την Ελαχιστοποίηση του χρόνου απόκρισης για τους χρήστες που εργάζονται διαλογικά (interactively) στον Η/Υ και την Ελαχιστοποίηση του χρόνου ολοκλήρωσης των εργασιών όταν χρησιμοποιείται η μέθοδος υποβολής εργασιών κατά δέσμες (batch). Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 20

Στόχοι Χρονοπρογραμματισμού & Αλγόριθμοι (2) Δύο είναι οι κλάσεις αλγορίθμων Χ/Π: 1. Κλάση "1": αλγόριθμοι που, από τη στιγμή που ξεκινήσει μια Διεργασία την εκτέλεσή της, δεν επιτρέπουν αυτή να διακοπεί πριν την ολοκλήρωσή της. Ονομάζονται αλγόριθμοι Χ/Π χωρίς προ-εκχώρηση (non-preemptive scheduling algorithms). Η χρήση τους δεν εξυπηρετεί Η/Υ με πολλούς χρήστες που ζητούν ανταγωνιστικά τη χρήση των πόρων. 2. Κλάση "2": αλγόριθμοι με προ-εκχώρηση (preemptive scheduling algorithms) που επιτρέπουν τη συνεχή και ελεγχόμενη εναλλαγή Διεργασιών στη CPU. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 21

Στόχοι Χρονοπρογραμματισμού & Αλγόριθμοι (3) Swapping: Επειδή οι Διεργασίες που είναι "προς εκτέλεση" ή "σε αναστολή" απασχολούν άδικα την Κεντρική Μνήμη, σπαταλώντας χρήσιμο αποθηκευτικό χώρο σε βάρος άλλων εκτελούμενων Διεργασιών, σε πολλά Λ/Σ κρίνεται σκόπιμο να εγκαταλείψουν αυτές προσωρινά την Κεντρική Μνήμη και να μεταφερθούν σε άλλο χώρο μέχρι να έρθει πάλι "η σειρά τους". Η προσωρινή απομάκρυνση από την Κεντρική Μνήμη (swapping) εξασφαλίζει τη διαθεσιμότητα του μεγαλύτερου τμήματος της Κεντρικής Μνήμης για τις εκτελούμενες Διεργασίες και μπορεί να διευκολύνει το έργο του Χ/Π. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 22

Περιγραφέας Διεργασίας (1) Μία Διεργασία σε ένα Λ/Σ γίνεται αντιληπτή από αυτό με τη βοήθεια του Περιγραφέα Διεργασίας (process descriptor, Π/Δ). Ο Π/Δ είναι το σύνολο πληροφοριών που αφορούν μια Διεργασία και μέσω αυτών μπορεί να ελέγχεται αυτή από το Λ/Σ. Ο Π/Δ ονομάζεται αλλιώς και μπλοκ ελέγχου της Διεργασίας (process control block, ή συντομογραφικά PCB). Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 23

Περιγραφέας Διεργασίας (2) Οι βασικές πληροφορίες που περιέχει ο Π/Δ είναι: την κατάσταση // πληροφορίες για τη μονοσήμαντη αναγνώριση κάθε Διεργασίας (συνήθως έναν αριθμό) // ένα δείκτη που δείχνει ποια είναι η Γονική Διεργασία // ένα ή περισσότερους δείκτες που καθορίζουν τις Θυγατρικές // την προτεραιότητα που κάθε στιγμή (δυναμικά) δίνεται στη Διεργασία // δείκτες που καθορίζουν το χώρο μνήμης που είναι συνδεδεμένος με τη Διεργασία // δείκτες που καθορίζουν Πόρους συνδεδεμένους με τη Διεργασία // τον επεξεργαστή στον οποίο "τρέχει" η Διεργασία αυτή // την περιοχή καταχώρησης της διεργασίας (register save area). Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 24

Περιγραφέας Διεργασίας (3) Η register save area χρειάζεται όταν η CPU, για οποιονδήποτε λόγο ασχολείται με άλλες Διεργασίες, οπότε εκεί αποθηκεύεται κάθε πληροφορία, η οποία θα χρειαστεί όταν η CPU επανέλθει στη Διεργασία αυτή. Ο Π/Δ είναι μια ουσιώδης ποσότητα που συνοδεύει κάθε Διεργασία για το Λ/Σ. Οι πληροφορίες στον Π/Δ πρέπει να χρησιμοποιούνται με μεγάλη ταχύτητα από το Λ/Σ, κάθε φορά που αυτό τις χρειάζεται. Για το λόγο αυτό, αρκετοί Η/Υ περιέχουν ειδικό Υλικό (hardware register), το οποίο πάντα "δείχνει" τον Π/Δ της Διεργασίας. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 25

Σήματα Διακοπών (1) Σε έναν Η/Υ το συμβάν εκείνο το οποίο μπορεί να μεταβάλει τη σειρά με την οποία η CPU εκτελεί ορισμένες εργασίες ονομάζεται Σήμα Διακοπής (interrupt). Τα Σήματα Διακοπών (Σ/Δ) δημιουργούνται από το Υλικό του Η/Υ. Για παράδειγμα, στο Υλικό υπάρχουν χρονομετρητές διαστημάτων (interval timers) που, κυρίως για Η/Υ με πολλούς χρήστες, αποτρέπουν τη μονοπώληση της CPU ή άλλων πόρων από τον ίδιο χρήστη ή την ίδια Διεργασία. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 26

Σήματα Διακοπών (2) Όταν η CPU λάβει ένα Σ/Δ συμβαίνουν, τα εξής : 1. Το Λ/Σ ξαναπαίρνει τον έλεγχο της CPU 2. Το Λ/Σ φροντίζει να αποθηκευτεί η τρέχουσα κατάσταση της διακοπείσας Διεργασίας 3. Το Λ/Σ αναλύει τη διακοπή μέσω Υλικού και Λογισμικού (το σχετικό λογισμικό ονομάζεται υποπρόγραμμα διαχείρισης διακοπών interrupt handler routine), 4. Ανακτάται κάθε πληροφορία σχετικά με την κατάσταση της "επόμενης" Διεργασίας που θα εκτελεστεί στη CPU, και 5. Ξεκινά η εκτέλεση της Διεργασίας αυτής. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 27

Σήματα Διακοπών (3) Η χρήση Σ/Δ για την επανάκτηση του ελέγχου της CPU από το Λ/Σ έχει το πλεονέκτημα του χαμηλού πρόσθετου κόστους (overhead). Η εκτέλεση ενός Σ/Δ στοιχίζει σε χρόνο και πόρους, όμως το κόστος είναι πολύ μικρότερο από αυτό που θα υπήρχε αν η ίδια η CPU έπρεπε διαρκώς να ασχολείται με το αν κάτι "άλλο" συσκευή, χρήστης, λογισμικό κλπ χρειάζεται την "προσοχή" της. Από την άλλη πλευρά, το μειονέκτημα των Η/Υ που η οργάνωσή τους οφείλεται στην τεχνική των Σ/Δ είναι ο κίνδυνος της υπερφόρτωσης (overloading). Υπερφόρτωση μπορεί να συμβεί όταν οι διακοπές φτάνουν τόσο γρήγορα που ο Η/Υ αδυνατεί να τις εξυπηρετήσει. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 28

Σήματα Διακοπών (4) Κατηγορίες Σ/Δ: 1. Σ/Δ κλήσης επόπτη (supervisor call interrupts ή svc) 2. Σ/Δ εισόδου / εξόδου (Ι/Ο interrupts) 3. Εξωτερικά Σ/Δ (external interrupts) 4. Σ/Δ επανεκκίνησης (restart interrupts) 5. Σ/Δ ελέγχου προγράμματος (program check interrupts) 6. Σ/Δ ελέγχου μηχανής (machine check interrupts) Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 29

Σήματα Διακοπών (5) 1. Σ/Δ κλήσης επόπτη: Αυτά τα Σ/Δ προκαλούνται από το χρήστη όταν ζητά υπηρεσίες από τον Η/Υ (λ.χ. ζητά εργασίες Ι/Ο ή ίσως περισσότερο αποθηκευτικό χώρο). Στην πραγματικότητα, τα Σ/Δ svc προστατεύουν έναν Η/Υ από τις αδεξιότητες ή τις παράλογες απαιτήσεις χρηστών. Ο κάθε χρήστης, αν θέλει να ζητήσει κάποια υπηρεσία από το Λ/Σ, αυτό το κάνει με ένα Σ/Δ svc. Έτσι, το Λ/Σ είναι κάθε στιγμή ενήμερο των απαιτήσεων και των διαθέσεων των χρηστών και φυσικά μπορεί να αρνηθεί κάποια από αυτά τα Σ/Δ. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 30

Σήματα Διακοπών (6) 2. Σ/Δ Ι/Ο: Είναι τα Σ/Δ που έχουν προέλευση το Υλικό Ι/Ο. Προκαλούνται όταν π.χ. ολοκληρωθεί μια Διεργασία Ι/Ο, όταν δηλαδή μια συσκευή Ι/Ο γίνει πάλι διαθέσιμη. 3. Εξωτερικά Σ/Δ: Είναι τα Σ/Δ που προκαλούνται από διάφορα συμβάντα, συμπεριλαμβανομένων και των Σ/Δ που οφείλονται στο ότι εξέπνευσε το Δt που ο Χ/Π διέθεσε σε μια διεργασία. Στην ίδια κατηγορία ανήκουν και τα Σ/Δ που φθάνουν σε μία CPU από άλλες CPU, σε ένα παράλληλο πολυ-επεξεργαστικό H/Y. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 31

Σήματα Διακοπών (7) 4. Σ/Δ επανεκκίνησης: Όταν ξεκινά ή επανεκκινεί το σύστημα 5. Σ/Δ ελέγχου προγράμματος: Τέτοιο Σ/Δ λ.χ. θα προκαλέσει τη διακοπή ενός Προγράμματος που εκτελείται αν επιχειρηθεί διαίρεση με το μηδέν ή ο υπολογισμός της τετραγωνικής ρίζας αρνητικού αριθμού. 6. Σ/Δ ελέγχου μηχανής: Σ/Δ που προκύπτουν λόγω δυσλειτουργίας Υλικού Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 32

Πυρήνας του Λ/Σ (1) Ό,τι συμβαίνει στον Η/Υ σε σχέση με τις Διεργασίες ελέγχεται και υλοποιείται σε ένα τμήμα του Λ/Σ που ονομάζεται Πυρήνας (kernel, core ή nucleus). Ο Πυρήνας συνήθως αποτελεί ένα μικρό μόνο τμήμα του Λογισμικού του Λ/Σ, αλλά είναι εκείνο το τμήμα που χρησιμοποιείται περισσότερο εντατικά από οτιδήποτε άλλο. Για το λόγο αυτό, ο Πυρήνας του Λ/Σ βρίσκεται πάντοτε στον πρωτεύοντα αποθηκευτικό χώρο, στην Κεντρική Μνήμη, ενώ άλλα τμήματα του Λ/Σ είναι πιθανόν να βρίσκονται άλλοτε στον πρωτεύοντα και άλλοτε στο δευτερεύοντα χώρο. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 33

Πυρήνας του Λ/Σ (2) Κατάσταση Πυρήνα (kernel mode): Το Λ/Σ είναι σχεδόν το μοναδικό τμήμα του Λογισμικού, το οποίο "τρέχει" σε κατάσταση Πυρήνα (kernel mode). Σε αυτή την κατάσταση το Λ/Σ έχει πλήρη και απεριόριστη πρόσβαση σε όλο το Υλικό. Μπορεί να εκτελέσει όλες τις εντολές της CPU και να χρησιμοποιήσει όλες τις θέσεις μνήμης. Η κατάσταση Πυρήνα χρησιμοποιείται από τις κυριότερες και απαραίτητες λειτουργίες ενός Λ/Σ. Αστοχίες στην κατάσταση αυτή (kernel crashes) είναι καταστροφικές και σταματούν τον Η/Υ. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 34

Πυρήνας του Λ/Σ (3) Κατάσταση Χρήστη (user mode): Όλο το υπόλοιπο Λογισμικό (και είναι το συντριπτικά περισσότερο), δηλ. πολλά από τα Προγράμματα Συστήματος και τα Προγράμματα Εφαρμογών "τρέχουν" πάντοτε στη λεγόμενη κατάσταση χρήστη (user mode). Σε αυτή τα εκτελούμενα προγράμματα δεν έχουν δικαιώματα άμεσης πρόσβασης στο Υλικό ή στις θέσεις μνήμης αλλά μόνο έμμεση μέσω του Λ/Σ. Η κατάσταση χρήστη προστατεύει τον Η/Υ από τα λάθη ή την κακόβουλη δραστηριότητα ενός χρήστη. Αστοχίες στην κατάσταση χρήστη δεν πρέπει κανονικά να οδηγούν στο σταμάτημα του Η/Υ. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 35

Πυρήνας του Λ/Σ (4) Διαχείριση Σ/Δ (1): Μια από τις πιο σημαντικές εργασίες που αναλαμβάνει ο Πυρήνας είναι η διαχείριση των Σ/Δ γρήγορα και αποδοτικά ώστε να υπάρχουν ικανοποιητικοί χρόνοι απόκρισης για τους διαλογικούς χρήστες. Τη στιγμή που ο Πυρήνας ασχολείται με ένα Σ/Δ αφήνει σε αναμονή όλα τα άλλα Σ/Δ. Ένα από τα επόμενα Σ/Δ θα ενεργοποιηθεί και θα απασχολήσει τον Πυρήνα μόλις αυτός ολοκληρώσει το προηγούμενο. Αν ένα Σ/Δ απασχολεί τον Πυρήνα για σημαντικό χρόνο, είναι ιδιαίτερα άσχημο για τους διαλογικούς χρήστες και δημιουργεί μεγάλους χρόνους απόκρισης. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 36

Πυρήνας του Λ/Σ (5) Διαχείριση Σ/Δ (2): Σε τέτοια περίπτωση, λόγω του μεγάλου αριθμού Σ/Δ που ενδεχόμενα θα συνεχίσουν να φθάνουν, θα μεγάλωνε δραματικά και η λίστα αναμονής Σ/Δ προς εξυπηρέτηση. Για να αποφευχθούν τέτοιες καταστάσεις, ο Πυρήνας κάνει το ελάχιστο δυνατό για κάθε Σ/Δ που φθάνει σε αυτόν και αμέσως μετά την παραπέμπει σε άλλα τμήματα του Λ/Σ. Έτσι, ο Πυρήνας ελευθερώνεται και απασχολείται με την επόμενη διακοπή. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 37

Διαδιεργασιακή Επικοινωνία & Ανταγωνισμός (1) Επιγραμματική παρουσίαση (1): Δύο ή περισσότερες Διεργασίες οι οποίες συνυπάρχουν χρονικά ονομάζονται ταυτόχρονες ή παράλληλες (concurrent). Οι παράλληλες Διεργασίες μπορεί να είναι τελείως ανεξάρτητες ή να είναι ασύγχρονες (asynchronous) και περιοδικά να απαιτούν συγχρονισμό και συνεργασία. Η συνεργασία Διεργασιών μπορεί να γίνει με τη λεγόμενη διαδιεργασιακή επικοινωνία (inter-process communication). Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 38

Διαδιεργασιακή Επικοινωνία & Ανταγωνισμός (2) Επιγραμματική παρουσίαση (2): Πολλές φορές δυο ή περισσότερες Διεργασίες χρειάζεται να επικοινωνήσουν διότι έχουν πρόσβαση στις ίδιες θέσεις μνήμης του Η/Υ, π.χ. χρειάζεται να χειριστούν κοινές μεταβλητές (shared variables) που χρησιμοποιούνται, ως δείκτες (flags) ή π.χ. για τη σωρευτική αποθήκευση αποτελεσμάτων κλπ. Αν η χρήση (γράψιμο-διάβασμα) των ίδιων θέσεων μνήμης γίνει ανεξέλεγκτα, τότε μπορούν να συμβούν πολλά προβλήματα και λάθη στη λειτουργία του Η/Υ. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 39

Διαδιεργασιακή Επικοινωνία & Ανταγωνισμός (4) Παράδειγμα Παραγωγού Καταναλωτή (1): Ένα τυπικό πρόβλημα διαδιεργασιακής επικοινωνίας, είναι το πρόβλημα του παραγωγού-καταναλωτή (producer-consumer relationship). Αφορά δύο Διεργασίες, από τις οποίες η πρώτη (ο παραγωγός) παράγει πληροφορία την οποία η δεύτερη (καταναλωτής) χρησιμοποιεί. Για την ανταλλαγή αυτή της πληροφορίας, χρησιμοποιούν ενδιάμεση μνήμη (buffer). Έστω για παράδειγμα ότι η πρώτη Διεργασία - παραγωγός εκτελεί υπολογισμούς και το αποτέλεσμα τους γράφεται στην μεταβλητή numberbuffer, την οποία πρέπει να διαβάσει η δεύτερη Διεργασία καταναλωτής. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 40

Διαδιεργασιακή Επικοινωνία & Ανταγωνισμός (5) Παράδειγμα Παραγωγού Καταναλωτή (2): Όσο οι δυο διεργασίες ακολουθούν μια συντονισμένη χρονική ροή, κατά την οποία ο παραγωγός δίνει τιμή στην κοινή μεταβλητή numberbuffer πριν τη διαβάσει ο καταναλωτής και της ξαναδίνει νέα τιμή αμέσως μετά, η συνεργασία τους είναι απόλυτα αρμονική. Αν όμως λ.χ. ο καταναλωτής ενεργεί ταχύτερα από τον παραγωγό, τότε ενδεχομένως θα διαβάσει και θα τυπώσει πολλαπλές φορές τον ίδιο αριθμό, πράγμα που είναι ανεπιθύμητο. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 41

Διαδιεργασιακή Επικοινωνία & Ανταγωνισμός (6) Παράδειγμα Παραγωγού Καταναλωτή (3): Στην αντίθετη περίπτωση, ένας γρήγορος παραγωγός θα γράφει αρκετές φορές την πληροφορία του στην κοινή μεταβλητή πριν τη διαβάσει ο καταναλωτής. Τότε, μόνο ορισμένες τιμές θα φθάνουν στον καταναλωτή και όλες οι ενδιάμεσες θα χάνονται λόγω της επικαλυπτόμενης εγγραφής (overwriting) στην ίδια μεταβλητή. Το πρόβλημα είναι ένα πρόβλημα Ανταγωνισμού και πρέπει να λυθεί εισάγοντας διαδικασίες ελέγχου για το πότε μπορεί να γραφεί η κοινή μεταβλητή από τον παραγωγό και για το πότε αυτή πρέπει να διαβαστεί από τον καταναλωτή. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 42

Διαδιεργασιακή Επικοινωνία & Ανταγωνισμός (7) Παράδειγμα Παραγωγού Καταναλωτή (4): Τα συγκεκριμένα τμήματα των Διεργασιών του παραγωγού και του καταναλωτή που χρειάζονται κοινές μεταβλητές ή γενικότερα κοινές περιοχές στο χώρο διευθύνσεων της μνήμης λέγονται κρίσιμα τμήματα (critical parts). Αν είχε εξασφαλιστεί ότι δύο ή περισσότερες Διεργασίες δε θα βρεθούν ποτέ ταυτόχρονα στα κρίσιμα τμήματά τους το πρόβλημα Ανταγωνισμού δεν θα υπήρχε. Αυτό βέβαια δεν είναι δυνατό να εξασφαλισθεί και για αυτό δίνονται τέσσερις κανόνες που πρέπει να διέπουν κάθε διαδιεργαστική επικοινωνία. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 43

Διαδιεργασιακή Επικοινωνία & Ανταγωνισμός (8) Τέσσερις κανόνες επικοινωνίας: 1. Δύο Διεργασίες δεν πρέπει να βρίσκονται ταυτόχρονα στα κρίσιμα τμήματα τους όταν επικοινωνούν. 2. Δεν επιτρέπεται ο προγραμματισμός με βάση υποθέσεις σε ότι αφορά την ταχύτητα ή το πλήθος των επεξεργαστών. 3. Διεργασία που δε βρίσκεται σε κρίσιμο τμήμα της δεν επιτρέπεται να αναστείλει άλλες Διεργασίες. 4. Δεν επιτρέπεται η επ αόριστο αναμονή μιας Διεργασίας για να εισέλθει στο κρίσιμο τμήμα της. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 44

Διαδιεργασιακή Επικοινωνία & Ανταγωνισμός (9) Αμοιβαίος αποκλεισμός (mutual exclusion): Πρόκειται για τον αποκλεισμό μιας Διεργασίας από κάποια ενέργεια που ταυτόχρονα εκτελεί μια άλλη Διεργασία. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 45

Κλήσεις Συστήματος & Διεργασίες (1) Η συνεργασία των Προγραμμάτων Εφαρμογών (αυτών δηλαδή των προγραμμάτων με τα οποία αλληλεπιδρά ο χρήστης) με το Λ/Σ σύστημα ενός Η/Υ γίνεται με τις λεγόμενες Κλήσεις Συστήματος (system calls). Παράδειγμα: Ο χρήστης λ.χ. ζητά, με μία εντολή που πληκτρολογεί στο τερματικό του, τη φόρτωση στην Κεντρική Μνήμη και το τρέξιμο ενός προγράμματός του. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 46

Κλήσεις Συστήματος & Διεργασίες (2) Παράδειγμα (συνέχεια): Ένα από τα Προγράμματα Συστήματος, το ονομαζόμενο "Φλοιός" (shell) "διαβάζει" εντολές από το τερματικό και έτσι αντιλαμβάνεται την απαίτηση του χρήστη. Ο Φλοιός τότε δημιουργεί μία Κλήση Συστήματος, μέσω της οποίας ξεκινά μία Διεργασία που τελικά θα τρέξει το πρόγραμμα του χρήστη. Όταν τελειώσει το "τρέξιμο" που ζητήθηκε, δηλαδή η σχετική Διεργασία, τότε δημιουργείται μία άλλη Διεργασία που εκτελεί μία άλλη Κλήση Συστήματος για να τερματίσει την αρχική Διεργασία αλλά και τον εαυτό της. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 47

Κλήσεις Συστήματος & Διεργασίες (3) Οι Κλήσεις Συστήματος σκοπό έχουν να δημιουργούν, να καταστρέφουν και να χρησιμοποιούν οντότητες λογισμικού, όπως είναι οι Διεργασίες και τα Αρχεία. Τυπικές Κλήσεις Συστήματος (Κ/Σ): CREATE // DELETE // ABORT // FORK // JOIN // SUSPEND // CHANGE_PRIORITY // GET_ATTRIBUTES κ.ά. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 48

Κλήσεις Συστήματος & Διεργασίες (4) Κανόνας: Μία Διεργασία πρέπει πάντοτε να δημιουργηθεί από μια άλλη Διεργασία με μία Κ/Σ. 1. Κ/Σ CREATE: Με την κλήση CREATE το Λ/Σ δημιουργεί μια νέα Διεργασία και της δίνει τα βασικά ιδιοχαρακτηριστικά της (attributes) και επιλέγει ένα νέο Περιγραφέα Διεργασίας από τους διαθέσιμους, τον αντιστοιχεί στη νέα Διεργασία και τον ελέγχει στον κατάλογο των "προς εκτέλεση" Διεργασιών ώστε να μπορέσει, με τη σειρά της, να γίνει "εκτελούμενη". Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 49

Κλήσεις Συστήματος & Διεργασίες (5) 2. Κ/Σ DELETE: Αλλιώς: DESTROY ή TERMINATE. Με την Κ/Σ DELETE προκαλείται ο συνήθως ομαλός τερματισμός (δηλ. αφού ολοκληρωθεί) μίας Διεργασίας και η απελευθέρωση του Περιγραφέα της για επόμενη διαφορετική χρήση. Η Κ/Σ DELETE συνήθως συνδέεται με τον τερματισμό της εκτέλεσης ενός Προγράμματος. 3. Κ/Σ ABORT: Αλλιώς: KILL. Με την Κ/Σ ABORT προκαλείται ο βίαιος και εξαναγκασμένος τερματισμός μίας Διεργασίας. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 50

Κλήσεις Συστήματος & Διεργασίες (6) 4. Κ/Σ FORK: Με την Κ/Σ FORK προκαλείται τη δημιουργία νέας Διεργασίας με τη διάσπαση μιας αλληλουχίας εντολών σε δυο τμήματα που θα εκτελεστούν ταυτόχρονα. Η νέα Θυγατρική Διεργασία θα εκτελέσει ένα τμήμα των εντολών, την ώρα που οι υπόλοιπες θα εκτελούνται από τη Γονική Διεργασία. 5. Κ/Σ JOIN: Με την Κ/Σ JOIN καταστρέφει τη Θυγατρική Διεργασία που προκλήθηκε από μια προηγούμενη Κ/Σ FORK. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 51

Κλήσεις Συστήματος & Διεργασίες (7) 6. Κ/Σ SUSPEND: Αλλιώς: BLOCK ή SLEEP. Με την Κ/Σ SUSPEND μια Διεργασία τίθεται σε "σε αναστολή". Μια Διεργασία μπορεί να χρησιμοποιήσει την κλήση αυτή για να θέσει σε αναστολή τον εαυτό της ή μια οποιαδήποτε άλλη Διεργασία, αρκεί να έχει αυτό το δικαίωμα (και τη σχετική προτεραιότητα). 7. Κ/Σ CHANGE_PRIORITY: Με αυτήν την Κ/Σ προκαλείται αλλαγή προτεραιότητας σε μια Διεργασία. Η προτεραιότητα μίας Διεργασίας μπορεί να αυξάνεται ή να ελαττώνεται για να διευκολύνεται ο Χ/Π. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 52

Κλήσεις Συστήματος & Διεργασίες (8) 8. Κ/Σ GET_ATTRIBUTES: Γίνεται από το Λ/Σ και είναι μια αίτηση αλλαγής των ιδιοχαρακτηριστικών μίας Διεργασίας, με τροποποίηση μέρους των περιεχομένων του Περιγραφέα. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 53