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

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

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

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

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

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

Διεργασίες - Σύνοψη. Διακοπές, προνομιούχος κατάσταση Κλήσεις συστήματος. Ορισμός, μεταβάσεις κατάστασης κύκλος ζωής

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

Διαχείριση Διεργασιών και Διαδιεργασιακή Επικοινωνία

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

Εικονική Μνήμη (1/2)

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

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

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

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

Διαχείριση Διεργασιών και Διαδιεργασιακή Επικοινωνία

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

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

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

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

Εζληθό Μεηζόβην Πνιπηερλείν Σρνιή Ηιεθηξνιόγσλ Μερ. θαη Μεραληθώλ Υπνινγηζηώλ Εξγαζηήξην Υπνινγηζηηθώλ Σπζηεκάησλ.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εργαστηριακή Άσκηση. Τμήμα Μηχανικών Πληροφορικής ΤΕ

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

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

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

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

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

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

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

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκό Έτος Κανονική Εξέταση Λύσεις

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Unix: Εντολές, οργάνωση και χειρισµός αρχείων, διεργασίες

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

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

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

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

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

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

Ο βασικός παράγοντας είναι ο χρόνος αξιοποίησης του επεξεργαστή Ελάχιστος αριθµός πράξεων και όχι µακρόχρονες αιτήσεις Ε/Ε

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

ΛΥΜΕΝΑ ΠΡΟΒΛΗΜΑΤΑ. Γράψτε τις επόμενες διαδικασίες σε όποια γλώσσα προγραμματισμού προτιμάτε:

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

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

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

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

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

ιεργασίες και Επεξεργαστές στα Κατανεµηµένων Συστηµάτων

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

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

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

Χρονοδρομολόγηση Ι Μοντέλα διεργασιών, Προθεσμίες και Αλγόριθμοι

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

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

UNIX System Programming

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

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

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

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

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

Εισαγωγή στους Υπολογιστές

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

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

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

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

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

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

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

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

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

Τεχνολογία Υπολογιστικών Συστηµάτων & Λειτουργικά Συστήµατα Κεφάλαιο 8

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

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

Ηρώων Πολυτεχνείου 9, Ζωγράφου, Αθήνα, Τηλ: , Fax: URL

Transcript:

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

Σύνοψη Χρονοδρομολόγηση κυκλικής επαναφοράς (RR) Ζητούμενο 1: Χρονοδρομολογητής RR Ασύγχρονη σχεδίαση, βασισμένη σε σήματα Χειρισμός SIGALRM, SIGCHLD Ζητούμενο 2: Αλληλεπίδραση με φλοιό Δυναμική δημιουργία και καταστροφή εργασιών Επικοινωνία φλοιού χρονοδρομολογητή

Χρονοδρομολόγηση Κυκλικής Επαναφοράς Χρονοδρομολογητής Round-Robin (RR) Κυκλική ανάθεση κβάντων χρόνου (tq) Για N διεργασίες:, P 1,, P N-1, P N,, P 1,, P N,, Νέα Εργασία Ουρά Έτοιμων Διεργασιών (Ready List) CPU kill() ήexit() Εκπνοή κβάντου χρόνου

Καταμερισμός Χρόνου: η γενική ιδέα CPU t Ο υπολογιστικός χρόνος κατανέμεται ανάμεσα στις διεργασίες που είναι έτοιμες να τρέξουν (P1, P2, P3) Κάθε διεργασία τρέχει για χρόνο <= του κβάντου χρόνου (time quantum) Το χρονοδρομολογητή ενεργοποιούν διακοπές χρονιστή (timer interrupts) interrupt User Kernel

Καταμερισμός Χρόνου: η γενική ιδέα CPU P 1 timer t Ο υπολογιστικός χρόνος κατανέμεται ανάμεσα στις διεργασίες που είναι έτοιμες να τρέξουν (P1, P2, P3) Κάθε διεργασία τρέχει για χρόνο <= του κβάντου χρόνου (time quantum) Το χρονοδρομολογητή ενεργοποιούν διακοπές χρονιστή (timer interrupts) interrupt User Kernel

Καταμερισμός Χρόνου: η γενική ιδέα CPU P 1 S timer t Ο υπολογιστικός χρόνος κατανέμεται ανάμεσα στις διεργασίες που είναι έτοιμες να τρέξουν (P1, P2, P3) Κάθε διεργασία τρέχει για χρόνο <= του κβάντου χρόνου (time quantum) Το χρονοδρομολογητή ενεργοποιούν διακοπές χρονιστή (timer interrupts) interrupt User Kernel

Καταμερισμός Χρόνου: η γενική ιδέα CPU P 1 S P 2 S S P 1 timer timer timer t Ο υπολογιστικός χρόνος κατανέμεται ανάμεσα στις διεργασίες που είναι έτοιμες να τρέξουν (P1, P2, P3) Κάθε διεργασία τρέχει για χρόνο <= του κβάντου χρόνου (time quantum) Το χρονοδρομολογητή ενεργοποιούν διακοπές χρονιστή (timer interrupts) interrupt User Kernel

Καταμερισμός Χρόνου: η γενική ιδέα tq CPU P 1 S P 2 S S P 1 timer timer timer t Ο υπολογιστικός χρόνος κατανέμεται ανάμεσα στις διεργασίες που είναι έτοιμες να τρέξουν (P1, P2, P3) Κάθε διεργασία τρέχει για χρόνο <= του κβάντου χρόνου (time quantum) Το χρονοδρομολογητή ενεργοποιούν διακοπές χρονιστή (timer interrupts) interrupt User Kernel

Ζητούμενο 1: Χρονοδρομολογητής Υλοποίηση ενός RR Στοχώροχρήστη Μια γονική διεργασία (scheduler) κατανέμει τον υπολογιστικό χρόνο ανάμεσα σε διεργασίες-παιδιά Εκκίνηση παύση διεργασιών με σήματα SIGCONT και SIGSTOP Η τρέχουσα διεργασία διακόπτεται μετά από tq sec

Ζητούμενο 1: Χρονοδρομολογητής Υλοποίηση ενός RR Στοχώροχρήστη Μια γονική διεργασία (scheduler) κατανέμει τον υπολογιστικό χρόνο ανάμεσα σε διεργασίες-παιδιά Εκκίνηση παύση διεργασιών με σήματα SIGCONT και SIGSTOP Η τρέχουσα διεργασία διακόπτεται μετά από tq sec SIGCONT

Ζητούμενο 1: Χρονοδρομολογητής Υλοποίηση ενός RR Στοχώροχρήστη Μια γονική διεργασία (scheduler) κατανέμει τον υπολογιστικό χρόνο ανάμεσα σε διεργασίες-παιδιά Εκκίνηση παύση διεργασιών με σήματα SIGCONT και SIGSTOP Η τρέχουσα διεργασία διακόπτεται μετά από tq sec SIGCONT

Ζητούμενο 1: Χρονοδρομολογητής Υλοποίηση ενός RR Στοχώροχρήστη Μια γονική διεργασία (scheduler) κατανέμει τον υπολογιστικό χρόνο ανάμεσα σε διεργασίες-παιδιά Εκκίνηση παύση διεργασιών με σήματα SIGCONT και SIGSTOP Η τρέχουσα διεργασία διακόπτεται μετά από tq sec SIGCONT

Ζητούμενο 1: Χρονοδρομολογητής Υλοποίηση ενός RR Στοχώροχρήστη Μια γονική διεργασία (scheduler) κατανέμει τον υπολογιστικό χρόνο ανάμεσα σε διεργασίες-παιδιά Εκκίνηση παύση διεργασιών με σήματα SIGCONT και SIGSTOP Η τρέχουσα διεργασία διακόπτεται μετά από tq sec

Ζητούμενο 1: Χρονοδρομολογητής Υλοποίηση ενός RR Στοχώροχρήστη Μια γονική διεργασία (scheduler) κατανέμει τον υπολογιστικό χρόνο ανάμεσα σε διεργασίες-παιδιά Εκκίνηση παύση διεργασιών με σήματα SIGCONT και SIGSTOP Η τρέχουσα διεργασία διακόπτεται μετά από tq sec

Ζητούμενο 1: Χρονοδρομολογητής Υλοποίηση ενός RR Στοχώροχρήστη Μια γονική διεργασία (scheduler) κατανέμει τον υπολογιστικό χρόνο ανάμεσα σε διεργασίες-παιδιά Εκκίνηση παύση διεργασιών με σήματα SIGCONT και SIGSTOP Η τρέχουσα διεργασία διακόπτεται μετά από tq sec SIGSTOP

Ζητούμενο 1: Χρονοδρομολογητής Υλοποίηση ενός RR Στοχώροχρήστη Μια γονική διεργασία (scheduler) κατανέμει τον υπολογιστικό χρόνο ανάμεσα σε διεργασίες-παιδιά Εκκίνηση παύση διεργασιών με σήματα SIGCONT και SIGSTOP Η τρέχουσα διεργασία διακόπτεται μετά από tq sec SIGSTOP

Ζητούμενο 1: Χρονοδρομολογητής Υλοποίηση ενός RR Στοχώροχρήστη Μια γονική διεργασία (scheduler) κατανέμει τον υπολογιστικό χρόνο ανάμεσα σε διεργασίες-παιδιά Εκκίνηση παύση διεργασιών με σήματα SIGCONT και SIGSTOP Η τρέχουσα διεργασία διακόπτεται μετά από tq sec

Ζητούμενο 1: Χρονοδρομολογητής Υλοποίηση ενός RR Στοχώροχρήστη Μια γονική διεργασία (scheduler) κατανέμει τον υπολογιστικό χρόνο ανάμεσα σε διεργασίες-παιδιά Εκκίνηση παύση διεργασιών με σήματα SIGCONT και SIGSTOP Η τρέχουσα διεργασία διακόπτεται μετά από tq sec SIGCONT

Ζητούμενο 1: Χρονοδρομολογητής Υλοποίηση ενός RR Στοχώροχρήστη Μια γονική διεργασία (scheduler) κατανέμει τον υπολογιστικό χρόνο ανάμεσα σε διεργασίες-παιδιά Εκκίνηση παύση διεργασιών με σήματα SIGCONT και SIGSTOP Η τρέχουσα διεργασία διακόπτεται μετά από tq sec SIGCONT P 1

Ζητούμενο 1: Χρονοδρομολογητής Υλοποίηση ενός RR Στοχώροχρήστη Μια γονική διεργασία (scheduler) κατανέμει τον υπολογιστικό χρόνο ανάμεσα σε διεργασίες-παιδιά Εκκίνηση παύση διεργασιών με σήματα SIGCONT και SIGSTOP Η τρέχουσα διεργασία διακόπτεται μετά από tq sec SIGCONT P 1

Ζητούμενο 1: Χρονοδρομολογητής Υλοποίηση ενός RR Στοχώροχρήστη Μια γονική διεργασία (scheduler) κατανέμει τον υπολογιστικό χρόνο ανάμεσα σε διεργασίες-παιδιά Εκκίνηση παύση διεργασιών με σήματα SIGCONT και SIGSTOP Η τρέχουσα διεργασία διακόπτεται μετά από tq sec P 1

Ζητούμενο 1: Χρονοδρομολογητής Υλοποίηση ενός RR Στοχώροχρήστη Μια γονική διεργασία (scheduler) κατανέμει τον υπολογιστικό χρόνο ανάμεσα σε διεργασίες-παιδιά Εκκίνηση παύση διεργασιών με σήματα SIGCONT και SIGSTOP Η τρέχουσα διεργασία διακόπτεται μετά από tq sec P 1

Ζητούμενο 1: Χρονοδρομολογητής Υλοποίηση ενός RR Στοχώροχρήστη Μια γονική διεργασία (scheduler) κατανέμει τον υπολογιστικό χρόνο ανάμεσα σε διεργασίες-παιδιά Εκκίνηση παύση διεργασιών με σήματα SIGCONT και SIGSTOP Η τρέχουσα διεργασία διακόπτεται μετά από tq sec SIGSTOP P 1

Ζητούμενο 1: Χρονοδρομολογητής Υλοποίηση ενός RR Στοχώροχρήστη Μια γονική διεργασία (scheduler) κατανέμει τον υπολογιστικό χρόνο ανάμεσα σε διεργασίες-παιδιά Εκκίνηση παύση διεργασιών με σήματα SIGCONT και SIGSTOP Η τρέχουσα διεργασία διακόπτεται μετά από tq sec SIGSTOP P 1

Ζητούμενο 1: Χρονοδρομολογητής Υλοποίηση ενός RR Στοχώροχρήστη Μια γονική διεργασία (scheduler) κατανέμει τον υπολογιστικό χρόνο ανάμεσα σε διεργασίες-παιδιά Εκκίνηση παύση διεργασιών με σήματα SIGCONT και SIGSTOP Η τρέχουσα διεργασία διακόπτεται μετά από tq sec P 1

Ζητούμενο 1: Χρονοδρομολογητής Υλοποίηση ενός RR Στοχώροχρήστη Μια γονική διεργασία (scheduler) κατανέμει τον υπολογιστικό χρόνο ανάμεσα σε διεργασίες-παιδιά Εκκίνηση παύση διεργασιών με σήματα SIGCONT και SIGSTOP Η τρέχουσα διεργασία διακόπτεται μετά από tq sec SIGCONT P 1

Ζητούμενο 1: Χρονοδρομολογητής Υλοποίηση ενός RR Στοχώροχρήστη Μια γονική διεργασία (scheduler) κατανέμει τον υπολογιστικό χρόνο ανάμεσα σε διεργασίες-παιδιά Εκκίνηση παύση διεργασιών με σήματα SIGCONT και SIGSTOP Η τρέχουσα διεργασία διακόπτεται μετά από tq sec SIGCONT P 1 P 2

Ζητούμενο 1: Χρονοδρομολογητής Υλοποίηση ενός RR Στοχώροχρήστη Μια γονική διεργασία (scheduler) κατανέμει τον υπολογιστικό χρόνο ανάμεσα σε διεργασίες-παιδιά Εκκίνηση παύση διεργασιών με σήματα SIGCONT και SIGSTOP Η τρέχουσα διεργασία διακόπτεται μετά από tq sec SIGCONT P 1 P 2

Ζητούμενο 1: Χρονοδρομολογητής Υλοποίηση ενός RR Στοχώροχρήστη Μια γονική διεργασία (scheduler) κατανέμει τον υπολογιστικό χρόνο ανάμεσα σε διεργασίες-παιδιά Εκκίνηση παύση διεργασιών με σήματα SIGCONT και SIGSTOP Η τρέχουσα διεργασία διακόπτεται μετά από tq sec P 1 P 2

Σχεδίαση Χρονοδρομολογητή (1)

Σχεδίαση Χρονοδρομολογητή (1) Ασύγχρονη σχεδίαση, βασισμένη στα σήματα SIGALRM και SIGCHLD. Όταν εκπνεύσει το κβάντο χρόνου, σταμάτα την τρέχουσα διεργασία. Όταν η τρέχουσα διεργασία σταματήσει, βρες την επόμενη και ενεργοποίησέ τη. Χρονιστής βασισμένος στην κλήση συστήματος alarm().

Σχεδίαση Χρονοδρομολογητή (1) Ασύγχρονη σχεδίαση, βασισμένη στα σήματα SIGALRM και SIGCHLD. Όταν εκπνεύσει το κβάντο χρόνου, σταμάτα την τρέχουσα διεργασία. Όταν η τρέχουσα διεργασία σταματήσει, βρες την επόμενη και ενεργοποίησέ τη. Χρονιστής βασισμένος στην κλήση συστήματος alarm().

Σχεδίαση Χρονοδρομολογητή (1) Ασύγχρονη σχεδίαση, βασισμένη στα σήματα SIGALRM και SIGCHLD. Όταν εκπνεύσει το κβάντο χρόνου, σταμάτα την τρέχουσα διεργασία. SIGALRM Όταν η τρέχουσα διεργασία σταματήσει, βρες την επόμενη και ενεργοποίησέ τη. Χρονιστής βασισμένος στην κλήση συστήματος alarm().

Σχεδίαση Χρονοδρομολογητή (1) Ασύγχρονη σχεδίαση, βασισμένη στα σήματα SIGALRM και SIGCHLD. Όταν εκπνεύσει το κβάντο χρόνου, σταμάτα την τρέχουσα διεργασία. SIGALRM Όταν η τρέχουσα διεργασία σταματήσει, βρες την επόμενη και ενεργοποίησέ τη. SIGCHLD Χρονιστής βασισμένος στην κλήση συστήματος alarm().

Σχεδίαση Χρονοδρομολογητή (1) Ασύγχρονη σχεδίαση, βασισμένη στα σήματα SIGALRM και SIGCHLD. Όταν εκπνεύσει το κβάντο χρόνου, σταμάτα την τρέχουσα διεργασία. SIGALRM Όταν η τρέχουσα διεργασία σταματήσει, βρες την επόμενη και ενεργοποίησέ τη. SIGCHLD Χρονιστής βασισμένος στην κλήση συστήματος alarm().

Σχεδίαση Χρονοδρομολογητή (2) sigalrm_handler() σταμάτα την τρέχουσα διεργασία. sigchld_handler() διάλεξε την επόμενη, ρύθμισε τον χρονιστή, ενεργοποίησέ τη. P 2 /* Κύριο πρόγραμμα */ while(pause()) ;

Σχεδίαση Χρονοδρομολογητή (2) sigalrm_handler() σταμάτα την τρέχουσα διεργασία. sigchld_handler() διάλεξε την επόμενη, ρύθμισε τον χρονιστή, ενεργοποίησέ τη. P 2 /* Κύριο πρόγραμμα */ while(pause()) ;

Σχεδίαση Χρονοδρομολογητή (2) sigalrm_handler() σταμάτα την τρέχουσα διεργασία. sigchld_handler() διάλεξε την επόμενη, ρύθμισε τον χρονιστή, ενεργοποίησέ τη. SIGCONT P 2 /* Κύριο πρόγραμμα */ while(pause()) ;

Σχεδίαση Χρονοδρομολογητή (2) sigalrm_handler() σταμάτα την τρέχουσα διεργασία. SIGCONT sigchld_handler() διάλεξε την επόμενη, ρύθμισε τον χρονιστή, ενεργοποίησέ τη. P 2 /* Κύριο πρόγραμμα */ while(pause()) ;

Σχεδίαση Χρονοδρομολογητή (2) sigalrm_handler() σταμάτα την τρέχουσα διεργασία. sigchld_handler() διάλεξε την επόμενη, ρύθμισε τον χρονιστή, ενεργοποίησέ τη. P 2 /* Κύριο πρόγραμμα */ while(pause()) ;

Σχεδίαση Χρονοδρομολογητή (2) sigalrm_handler() σταμάτα την τρέχουσα διεργασία. sigchld_handler() διάλεξε την επόμενη, ρύθμισε τον χρονιστή, ενεργοποίησέ τη. P 2 /* Κύριο πρόγραμμα */ while(pause()) ;

Σχεδίαση Χρονοδρομολογητή (2) sigalrm_handler() σταμάτα την τρέχουσα διεργασία. SIGALRM sigchld_handler() διάλεξε την επόμενη, ρύθμισε τον χρονιστή, ενεργοποίησέ τη. P 2 /* Κύριο πρόγραμμα */ while(pause()) ;

Σχεδίαση Χρονοδρομολογητή (2) sigalrm_handler() σταμάτα την τρέχουσα διεργασία. SIGALRM SIGSTOP sigchld_handler() διάλεξε την επόμενη, ρύθμισε τον χρονιστή, ενεργοποίησέ τη. P 2 /* Κύριο πρόγραμμα */ while(pause()) ;

Σχεδίαση Χρονοδρομολογητή (2) sigalrm_handler() σταμάτα την τρέχουσα διεργασία. SIGALRM SIGSTOP sigchld_handler() διάλεξε την επόμενη, ρύθμισε τον χρονιστή, ενεργοποίησέ τη. P 2 /* Κύριο πρόγραμμα */ while(pause()) ;

Σχεδίαση Χρονοδρομολογητή (2) sigalrm_handler() σταμάτα την τρέχουσα διεργασία. SIGALRM sigchld_handler() διάλεξε την επόμενη, ρύθμισε τον χρονιστή, ενεργοποίησέ τη. P 2 /* Κύριο πρόγραμμα */ while(pause()) ;

Σχεδίαση Χρονοδρομολογητή (2) sigalrm_handler() σταμάτα την τρέχουσα διεργασία. sigchld_handler() διάλεξε την επόμενη, ρύθμισε τον χρονιστή, ενεργοποίησέ τη. P 2 /* Κύριο πρόγραμμα */ while(pause()) ;

Σχεδίαση Χρονοδρομολογητή (2) sigalrm_handler() σταμάτα την τρέχουσα διεργασία. sigchld_handler() διάλεξε την επόμενη, ρύθμισε τον χρονιστή, ενεργοποίησέ τη. SIGCHLD P 2 /* Κύριο πρόγραμμα */ while(pause()) ;

Σχεδίαση Χρονοδρομολογητή (2) sigalrm_handler() σταμάτα την τρέχουσα διεργασία. sigchld_handler() διάλεξε την επόμενη, ρύθμισε τον χρονιστή, ενεργοποίησέ τη. SIGCHLD P 2 /* Κύριο πρόγραμμα */ while(pause()) ;

Σχεδίαση Χρονοδρομολογητή (2) sigalrm_handler() σταμάτα την τρέχουσα διεργασία. sigchld_handler() διάλεξε την επόμενη, ρύθμισε τον χρονιστή, ενεργοποίησέ τη. SIGCHLD SIGCONT P 2 /* Κύριο πρόγραμμα */ while(pause()) ;

Σχεδίαση Χρονοδρομολογητή (2) sigalrm_handler() σταμάτα την τρέχουσα διεργασία. sigchld_handler() διάλεξε την επόμενη, ρύθμισε τον χρονιστή, ενεργοποίησέ τη. SIGCHLD SIGCONT P 2 P 1 /* Κύριο πρόγραμμα */ while(pause()) ;

Σχεδίαση Χρονοδρομολογητή (2) sigalrm_handler() σταμάτα την τρέχουσα διεργασία. SIGCHLD sigchld_handler() διάλεξε την επόμενη, ρύθμισε τον χρονιστή, ενεργοποίησέ τη. P 2 P 1 /* Κύριο πρόγραμμα */ while(pause()) ;

Σχεδίαση Χρονοδρομολογητή (2) sigalrm_handler() σταμάτα την τρέχουσα διεργασία. sigchld_handler() διάλεξε την επόμενη, ρύθμισε τον χρονιστή, ενεργοποίησέ τη. P 2 P 1 /* Κύριο πρόγραμμα */ while(pause()) ;

Σχεδίαση Χρονοδρομολογητή (2) sigalrm_handler() σταμάτα την τρέχουσα διεργασία. sigchld_handler() διάλεξε την επόμενη, ρύθμισε τον χρονιστή, ενεργοποίησέ τη. P 2 P 1 /* Κύριο πρόγραμμα */ while(pause()) ;

Σχεδίαση Χρονοδρομολογητή (2) sigalrm_handler() σταμάτα την τρέχουσα διεργασία. SIGALRM sigchld_handler() διάλεξε την επόμενη, ρύθμισε τον χρονιστή, ενεργοποίησέ τη. P 2 P 1 /* Κύριο πρόγραμμα */ while(pause()) ;

Σχεδίαση Χρονοδρομολογητή (2) sigalrm_handler() σταμάτα την τρέχουσα διεργασία. sigchld_handler() διάλεξε την επόμενη, ρύθμισε τον χρονιστή, ενεργοποίησέ τη. SIGALRM SIGSTOP P 2 P 1 /* Κύριο πρόγραμμα */ while(pause()) ;

Ζητήματα Υλοποίησης (1) Δομές δεδομένων Δομή ανάλογη του Process Control Block (αριθμός εργασίας, PID εργασίας, όνομα εκτελέσιμου) Ουρά διεργασιών (συνδεδεμένη λίστα ή πίνακας) Μπορείτε να θεωρήσετε ένα μέγιστο αριθμό εργασιών αν διευκολύνει την υλοποίηση Τι πρόγραμμα θα εκτελούν οι εργασίες; Σας δίνεται prog.c: εκτυπώνει NMSG μηνύματα, με τυχαία καθυστέρηση ανάμεσά τους. Δημιουργία διεργασιών με fork() + execve() δίνεται execve-example.c.

Δημιουργία στο μοντέλο του UNIX: fork() Όλες οι διεργασίες προκύπτουν με fork() [σχεδόν όλες] Ίδιο πρόγραμμα με γονική διεργασία, αντίγραφο χώρου μνήμης, κληρονομεί ανοιχτά αρχεία, συνδέσεις, δικαιώματα πρόσβασης Αντικατάσταση προγράμματος διεργασίας: execve() Η γονική διεργασία ενημερώνεται για το θάνατο του παιδιού με wait() συλλογή τιμής τερματισμού (exit status) Μέχριτότε, παιδίπουέχεικαλέσειτηνexit() είναιzombie Αν ο γονέας πεθάνει πρώτα, η διεργασία γίνεται παιδί της init (PID = 1), που κάνει συνεχώς wait() prog-a 981 fork Prog-A 981 wait Prog-A 987 execve Prog-B 987 Prog-B exit 987 (zombie)

Ζητήματα Υλοποίησης (2)

Ζητήματα Υλοποίησης (2) Πώςθαξεχωρίζουνταμηνύματατουκάθε προγράμματος; Διαφορετικό εκτελέσιμο, εκτυπώνει argv[0] Αντιγραφή του εκτελέσιμου prog στα prog1, prog2, Ή σύνδεση: $ ln -s prog prog1 $ ln -s prog prog2 $ ls -l prog* -rwxr-xr-x 1 vangelis vangelis 9177 2009-12-08 23:22 prog* lrwxrwxrwx 1 vangelis vangelis 4 2009-12-08 23:22 prog1 -> prog* lrwxrwxrwx 1 vangelis vangelis 4 2009-12-08 23:22 prog2 -> prog*...

Ζητούμενο 2: Αλληλεπίδραση με φλοιό P 1 P 2 Ο φλοιός αλληλεπιδρά με το χρήστη Εντολές για δυναμική δημιουργία και καταστροφή εργασιών Πώς επικοινωνεί ο φλοιός με το χρονοδρομολογητή; Δίνονται request.h, shell.c.

Ζητούμενο 2: Αλληλεπίδραση με φλοιό P 1 Shell P 2 Ο φλοιός αλληλεπιδρά με το χρήστη Εντολές για δυναμική δημιουργία και καταστροφή εργασιών Πώς επικοινωνεί ο φλοιός με το χρονοδρομολογητή; Δίνονται request.h, shell.c.

Ζητούμενο 2: Αλληλεπίδραση με φλοιό P 1 Shell P 2 Ο φλοιός αλληλεπιδρά με το χρήστη Εντολές για δυναμική δημιουργία και καταστροφή εργασιών Πώς επικοινωνεί ο φλοιός με το χρονοδρομολογητή; Δίνονται request.h, shell.c.

Επικοινωνία φλοιού χρονοδρομολογητή (1)

Επικοινωνία φλοιού χρονοδρομολογητή (1) write fd[1] read fd[0] άκρο εγγραφής άκρο ανάγνωσης

Επικοινωνία φλοιού χρονοδρομολογητή (1) Shell write fd[1] read fd[0] write fd[1] read fd[0] άκρο εγγραφής άκρο ανάγνωσης

Επικοινωνία φλοιού χρονοδρομολογητή (1) Shell write fd[1] read fd[0] write fd[1] άκρο εγγραφής άκρο ανάγνωσης

Επικοινωνία φλοιού χρονοδρομολογητή (1) read fd[0] Shell write fd[1] άκρο εγγραφής άκρο ανάγνωσης

Επικοινωνία φλοιού χρονοδρομολογητή (1) read fd[0] Shell write fd[1] Αποστολή αιτήσεων

Επικοινωνία φλοιού χρονοδρομολογητή (1) read fd[0] Shell write fd[1] Αποστολή αιτήσεων Λήψη απαντήσεων

Επικοινωνία φλοιού χρονοδρομολογητή (1) read fd[0] Shell write fd[1] Αποστολή αιτήσεων Δύο σωληνώσεις Λήψη απαντήσεων μία για αποστολή αιτήσεων από φλοιό προς χρονοδρομολογητή μία για λήψη απαντήσεων σε κάθε αίτηση Οφλοιόςείναιάλλο πρόγραμμα: πώς μαθαίνει τους περιγραφητές;

Επικοινωνία φλοιού χρονοδρομολογητή (1) read fd[0] Shell write fd[1] Αποστολή αιτήσεων Δύο σωληνώσεις Λήψη απαντήσεων μία για αποστολή αιτήσεων από φλοιό προς χρονοδρομολογητή μία για λήψη απαντήσεων σε κάθε αίτηση Οφλοιόςείναιάλλο πρόγραμμα: πώς μαθαίνει τους περιγραφητές;

Ζητήματα Υλοποίησης (3)

Ζητήματα Υλοποίησης (3) Ο φλοιός μαθαίνει τους περιγραφητές αρχείων για τις σωληνώσεις από ορίσματα της γραμμής εντολών Αν οι δύο σωληνώσεις είναι οι [3, 5] και [7, 9]: ο φλοιός έχει το «5» και το «7» ως ορίσματα στη γραμμή εντολών (execve()) Ο φλοιός πρέπει να χρονοδρομολογείται μαζί με τις υπόλοιπες εργασίες

Ζητήματα Υλοποίησης (3) Ο φλοιός μαθαίνει τους περιγραφητές αρχείων για τις σωληνώσεις από ορίσματα της γραμμής εντολών Αν οι δύο σωληνώσεις είναι οι [3, 5] και [7, 9]: ο φλοιός έχει το «5» και το «7» ως ορίσματα στη γραμμή εντολών (execve()) Ο φλοιός πρέπει να χρονοδρομολογείται μαζί με τις υπόλοιπες εργασίες

Ζητούμενο 2: Αλληλεπίδραση με φλοιό sigalrm_handler() sigchld_handler() Shell P 2 P 1 /* Κύριο πρόγραμμα */ for (;;) read_request_from_shell(); process_shell_request(); write_reply_to_shell();

Ερωτήσεις;

Ερωτήσεις; και στη λίστα: OS@lists.cslab.ece.ntua.gr