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

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

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

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

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

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

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

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 7/1/2014, 22:00

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

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

$./jms console -w <jms in> -r <jms out> -o <operations file> namedpipe. (standard input).

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 18/12/12, 22:00

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

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

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

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

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

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

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

Εργαστήριο 7 fork(), exec(), signals

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσμία: 17/1/14, 22:00

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ

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

Προγραμματιστικό Περιβάλλον

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ

Εργαστήριο 5 fork(), exec(), signals

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

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

Διάλεξη 17: Συμφωνία με Βυζαντινά Σφάλματα. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

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

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

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

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

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

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

Δομημένος Προγραμματισμός

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

ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία

Εργαστήριο Λειτουργικών Συστημάτων Ακ. Έτος Άσκηση 4. Πλήθος οπών <tab> Μέσο μέγεθος σε mb

Α2. Να γράψετε στο τετράδιο απαντήσεών σας το κατάλληλο τμήμα κώδικα, κάνοντας τις απαραίτητες αλλαγές σύμφωνα με την εκάστοτε εκφώνηση:

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

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

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

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

Προγραμματισμός Ι (ΗΥ120)

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 5/12/10, 23:59

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

Εργαστήριο 5. Εαρινό Εξάμηνο

Διαδικασιακός Προγραμματισμός

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον (Εργαστήριο 2)

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 13/1/13, 22:00

Τι είναι υποπρόγραμμα; Τμήμα προγράμματος το οποίο επιτελεί ένα αυτόνομο υπολογιστικό έργο (γράφεται χωριστά από το υπόλοιπο πρόγραμμα)

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

ΦΡΟΝΤΙΣΤΗΡΙΑ ΠΡΟΟΔΟΣ

Κεφάλαιο 10. Ερωτήσεις ανάπτυξης

Διαγώνισμα Γ Λυκείου. Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

waitpid(), read(), write(), pipe(), mkfifo() κ.α.).

Επαναληπτικό Διαγώνισμα

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Πέµπτη 17/12/2015, 22:00

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ ΘΕΜΑ Α

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

Αριθμητική εύρεση ριζών μη γραμμικών εξισώσεων

10 η Διάλεξη C++ - Πίνακες. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

Προγραμματισμός Ι (ΗΥ120)

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

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης Τα Εργαστηριακά Προγράμματα. Η δομή Επιλογής στη PASCAL. H δομή Επανάληψης στη PASCAL. Η εντολή επανάληψης for

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

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

S, (5, -3, 34, -23, 7) ( *, _

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων

Α2. Δίνεται το επόμενο τμήμα προγράμματος σε ΓΛΩΣΣΑ:

Η βασική συνάρτηση προγράμματος main()

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

Η Απάντηση. Ενδεικτικές Απαντήσεις Φύλλου Εργασίας. Μηνύματα. 1. Πληκτρολογήστε την εντολή:

Αντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές»

1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ. Πληροφορική Α' Γυμν. Το Λειτουργικό Σύστημα του Υπολογιστή

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει;

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επανάληψης. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

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

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

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

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

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/09, 23:59

Transcript:

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος 2016-2017 Άσκηση 2: Διαχείριση Διεργασιών και Διαδιεργασιακή Επικοινωνία 1 Ασκήσεις 1 1.1 Δημιουργία δεδομένου δέντρου διεργασιών................ 1 1.2 Δημιουργία αυθαίρετου δέντρου διεργασιών................ 2 1.3 Αποστολή και χειρισμός σημάτων...................... 3 1.4 Παράλληλος υπολογισμός αριθμητικής έκφρασης............. 4 2 Εξέταση άσκησης και αναφορά 5 3 Προαιρετικές ερωτήσεις 5 1 Ασκήσεις Στην παρούσα άσκηση θα ασχοληθείτε με τη διαχείριση διεργασιών και την επικοινωνία ανάμεσά τους. Η άσκηση έχει δύο μέρη. Στο πρώτο μέρος σας ζητείται πρόγραμμα κατασκευής δεδομένου δέντρου διεργασιών ( 1.1) κι η επέκτασή του για οποιοδήποτε δέντρο, βάσει αρχείου εισόδου ( 1.2). Στο δεύτερο μέρος ενεργοποιείτε με συγκεκριμένη σειρά τις διεργασίες, χρησιμοποιώντας σήματα ( 1.3) και εκτελείτε παράλληλο υπολογισμό μιας αριθμητικής έκφρασης, χρησιμοποιώντας σωληνώσεις για τη διάδοση των ενδιάμεσων αποτελεσμάτων ( 1.4). 1.1 Δημιουργία δεδομένου δέντρου διεργασιών Ζητείται η κατασκευή προγράμματος το οποίο να δημιουργεί το δέντρο διεργασιών του Σχ. 1. Οι διεργασίες δημιουργούνται και διατηρούνται ενεργές για ορισμένο χρονικό διάστημα, ώστε ο χρήστης να έχει τη δυνατότητα παρατήρησης του δέντρου. Οι διεργασίες-φύλλα εκτελούν τη κλήση sleep(), ενώ οι διεργασίες σε ενδιάμεσους κόμβους περιμένουν τον τερματισμό των διεργασιών-παιδιών τους. Κάθε διεργασία εκτυπώνει κατάλληλο μήνυμα κάθε φορά που περνά από φάση σε φάση (π.χ., εκκίνηση, αναμονή για τερματισμό παιδιών, τερματισμό), ώστε να είναι δυνατή η επαλήθευση της σωστής

A B C D Σχήμα 1: Δέντρο διεργασιών λειτουργίας του προγράμματος. Για να ξεχωρίσετε τις διεργασίες, κάθε μία θα τερματίζει με διαφορετικό κωδικό επιστροφής: A = 16, B = 19, C = 17, D = 13. Δίδονται βοηθητικά αρχεία κώδικα στον κατάλογο /home/oslab/code/forktree: fork-example.c: παράδειγμα χρήσης των fork(), wait(). proc-common.{h,c}: βοηθητικές συναρτήσεις για το χειρισμό διεργασιών. Η συνάρτηση explain_wait_status() εκτυπώνει κατάλληλο μήνυμα ανάλογα με το επιστρεφόμενο status της wait(). Η συνάρτηση show_pstree() εμφανίζει το δέντρο διεργασιών με ρίζα δεδομένη διεργασία. ask2-fork.c: σκελετός του προγράμματος, απ όπου μπορείτε να ξεκινήσετε. Κατασκευάζει μια διεργασία-παιδί (τη ρίζα του δέντρου σας), περιμένει να κατασκευαστεί το δέντρο διεργασιών (κοιμάται για λίγο) και καλεί την show_pstree(). 1. Τι θα γίνει αν τερματίσετε πρόωρα τη διεργασία Α, δίνοντας kill -KILL <pid>, όπου <pid> το Process ID της; 2. Τι θα γίνει αν κάνετε show_pstree(getpid()) αντί για show_pstree(pid) στη main(); Ποιες επιπλέον διεργασίες φαίνονται στο δέντρο και γιατί; 3. Σε υπολογιστικά συστήματα πολλαπλών χρηστών, πολλές φορές ο διαχειριστής θέτει όρια στον αριθμό των διεργασιών που μπορεί να δημιουργήσει ένας χρήστης. Γιατί; 1.2 Δημιουργία αυθαίρετου δέντρου διεργασιών Ζητείται η κατασκευή προγράμματος που δημιουργεί αυθαίρετα δέντρα διεργασιών βάσει αρχείου εισόδου. Το πρόγραμμα θα βασιστεί σε αναδρομική συνάρτηση, η οποία θα καλείται για κάθε κόμβο του δέντρου. Αν ο κόμβος του δέντρου έχει παιδιά, η συνάρτηση θα δημιουργεί τα παιδιά και θα περιμένει να τερματιστούν. Αν όχι, η συνάρτηση θα καλεί τη sleep() με προκαθορισμένο όρισμα. Το αρχείο εισόδου περιέχει την περιγραφή ενός δέντρου κόμβο προς κόμβο, ξεκινώντας από τη ρίζα. Για κάθε κόμβο δίνεται το όνομά του, ο αριθμός των παιδιών του και τα ονόματά τους. Η περιγραφή ενός κόμβου από τον επόμενο χωρίζεται με κενή γραμμή. Η διαδικασία επαναλαμβάνεται αναδρομικά για κάθε ένα από τα παιδιά του, ενώ οι κόμβοι πρέπει να είναι διατεταγμένοι κατά βάθος. Για παράδειγμα, το το δέντρο διεργασιών του Σχ. 1 προέκυψε από το αρχείο εισόδου του Σχ. 2. Το σύμβολο δείχνει αλλαγή γραμμής. A 2 B C B 1 D D 0 C 0 Σχήμα 2: Αρχείο περιγραφής δέντρου

Σας δίνεται βιβλιοθήκη tree.{h,c} η οποία αναλαμβάνει να διαβάσει το αρχείο εισόδου και να κατασκευάσει την αναπαράστασή του στη μνήμη. Κάθε κόμβος ορίζεται από τη δομή struct tree_node, που περιέχει τον αριθμό των παιδιών nr_children, το όνομα του κόμβου και δείκτη προς περιοχή όπου βρίσκονται συνεχόμενα αποθηκευμένες nr_children δομές, μία για κάθε κόμβο-παιδί. Η βιβλιοθήκη προσφέρει δύο συναρτήσεις: get_tree_from_file(const char *filename): διαβάζει το δέντρο, κατασκευάζει την αναπαράστασή του στη μνήμη κι επιστρέφει δείκτη στη ρίζα. print_tree(struct tree_node *root): διατρέχει το δέντρο με ρίζα root και εκτυπώνει τα στοιχεία του στο standard output. Το tree-example.c περιέχει παράδειγμα χρήσης της βιβλιοθήκης. Διαβάζει το αρχείο εισόδου, κατασκευάζει το δέντρο και το εμφανίζει στην οθόνη. Για να το εμφανίσει, το διατρέχει ακολουθώντας τους δείκτες children των δομών struct tree_node. 1. Με ποια σειρά εμφανίζονται τα μηνύματα έναρξης και τερματισμού των διεργασιών; γιατί; 1.3 Αποστολή και χειρισμός σημάτων Ζητείται η επέκταση του προγράμματος της 1.2 έτσι ώστε οι διεργασίες να ελέγχονται με χρήση σημάτων, για να εκτυπώνουν τα μηνύματά τους κατά βάθος (Depth-First). Κάθε διεργασία δημιουργεί τις διεργασίες-παιδιά της και αναστέλλει τη λειτουργία της έως ότου λάβει κατάλληλο σήμα εκκίνησης (SIGCONT). Όταν το λάβει, εμφανίζει ενημερωτικό μήνυμα κι ενεργοποιεί διαδοχικά τις διεργασίες-παιδιά: ξυπνάει μια διεργασία, περιμένει τον τερματισμό της και εκτυπώνει ανάλογο διαγνωστικό. Η διαδικασία εξελίσσεται αναδρομικά ξεκινώντας από τη διεργασία-ρίζα του δέντρου. Η αρχική διεργασία του προγράμματος στέλνει SIGCONT στη διεργασία-ρίζα, αφού παρουσιάσει το δέντρο διεργασιών στο χρήστη. Στην περίπτωση του δέντρου του Σχ. 1, τα μηνύματα ενεργοποίησης εκτυπώνονται με τη σειρά A, B, D, C. Υποδείξεις: Μια διεργασία αναστέλλει τη λειτουργία της με χρήση της εντολής raise(sigstop). Πριν το κάνει αυτό, έχει βεβαιωθεί ότι όλα τα παιδιά της έχουν αναστείλει τη λειτουργία τους με χρήση της συνάρτησης wait_for_ready_ children() που σας δίνεται. Χρησιμοποιήστε τη συνάρτηση explain_wait_status() μετά από wait() ή waitpid(). Κατά την ανάπτυξη του προγράμματος μπορείτε να στείλετε μηνύματα χειροκίνητα, με χρήση της εντολής kill από κάποιο άλλο παράθυρο. Χρησιμοποιήστε την εντολή strace -f -p <pid> για να παρακολουθήσετε τις κλήσεις συστήματος που εκτελεί η διεργασία <pid> κι όλα τα παιδιά της. Ξεκινήστε από τον σκελετό ask2-signals.c που σας δίνεται. 1. Στις προηγούμενες ασκήσεις χρησιμοποιήσαμε τη sleep() για τον συγχρονισμό των διεργασιών. Τι πλεονεκτήματα έχει η χρήση σημάτων;

2. Ποιος ο ρόλος της wait_for_ready_children(); Τι εξασφαλίζει η χρήση της και τι πρόβλημα θα δημιουργούσε η παράλειψή της; 1.4 Παράλληλος υπολογισμός αριθμητικής έκφρασης Ζητείται η επέκταση του προγράμματος της 1.2 ώστε να υπολογίζει δέντρα που αναπαριστούν αριθμητικές εκφράσεις. Για παράδειγμα, το δέντρο του Σχ. 3 αναπαριστά την έκφραση 10 (5 + 6). Θεωρήστε ότι τα αρχεία και κατά συνέπεια τα παραγόμενα δέντρα έχουν τους παρακάτω περιορισμούς: Κάθε μη τερματικός κόμβος¹ έχει ακριβώς δύο παιδιά, αναπαριστά τελεστή και το όνομά του είναι "+" ή "*". Το όνομα κάθε τερματικού κόμβου είναι ακέραιος αριθμός. * + 10 5 6 Σχήμα 3: Δέντρο έκφρασης 10 (5 + 6) Η αποτίμηση της έκφρασης θα γίνεται παράλληλα, δημιουργώντας μία διεργασία για κάθε κόμβο του δέντρου. Κάθε τερματική διεργασία επιστρέφει στη γονική την αριθμητική τιμή που της αντιστοιχεί. Κάθε μη-τερματική διεργασία λαμβάνει από τις διεργασίεςπαιδιά τις τιμές των υπο-εκφράσεών τους, υπολογίζει την τιμή της και την επιστρέφει στη γονική της διεργασία. Η διεργασία-ρίζα επιστρέφει το συνολικό αποτέλεσμα στην αρχική διεργασία του προγράμματος, η οποία το εμφανίζει στην οθόνη. Υποδείξεις: Χρησιμοποιήστε σωληνώσεις του Unix (pipes) για την επικοινωνία από τις διεργασίεςπαιδιά στη γονική διεργασία. Κάθε διεργασία οφείλει να περιμένει τον τερματισμό των παιδιών της και να εκτυπώνει κατάλληλο διαγνωστικό, για να εντοπίζετε εγκαίρως προγραμματιστικά σφάλματα. Εκτυπώνετε ενδιάμεσα αποτελέσματα από κάθε διεργασία, βοηθά στο debugging. 1. Πόσες σωληνώσεις χρειάζονται στη συγκεκριμένη άσκηση ανά διεργασία; Θα μπορούσε κάθε γονική διεργασία να χρησιμοποιεί μόνο μία σωλήνωση για όλες τις διεργασίες παιδιά; Γενικά, μπορεί για κάθε αριθμητικό τελεστή να χρησιμοποιηθεί μόνο μια σωλήνωση; 2. Σε ένα σύστημα πολλαπλών επεξεργαστών, μπορούν να εκτελούνται παραπάνω από μια διεργασίες παράλληλα. Σε ένα τέτοιο σύστημα, τι πλεονέκτημα μπορεί να έχει η αποτίμηση της έκφρασης από δέντρο διεργασιών, έναντι της αποτίμησης από μία μόνο διεργασία; ¹τερματικοί κόμβοι είναι οι κόμβοι που αντιστοιχούν σε φύλλα

2 Εξέταση άσκησης και αναφορά Η προθεσμία για την εξέταση της άσκησης στο εργαστήριο είναι η Πέμπτη 10/11/2016 (Παρασκευή 11/11/2016 για τις αντίστοιχες βάρδιες). Μετά την εξέταση η κάθε ομάδα θα πρέπει να συντάξει μια (σύντομη) αναφορά και να τη στείλει μέσω e-mail στους βοηθούς εργαστηρίου. Η προθεσμία για την αναφορά είναι μια εβδομάδα μετά την προθεσμία εξέτασης της άσκησης. Η αναφορά αυτή θα περιέχει: - Τον πηγαίο κώδικα (source code) των ασκήσεων. - Την έξοδο εκτέλεσης των προγραμμάτων για διάφορα αρχεία εισόδου, ενδεικτικά. - Σύντομες απαντήσεις στις ερωτήσεις. 3 Προαιρετικές ερωτήσεις (επιπλέον βαθμoί: 0) 1. Έστω σύστημα με N επεξεργαστές. Ποιοι παράγοντες καθορίζουν αν ο παράλληλος υπολογισμός μιας αριθμητικής έκφρασης όπως στην άσκηση θα είναι ταχύτερος από τον αντίστοιχο υπολογισμό σε μία μόνο διεργασία (σειριακή εκτέλεση). 2. Έστω υβριδική υλοποίηση του παράλληλου υπολογισμού αριθμητικής έκφρασης: από ένα συγκεκριμένο βάθος (µ) και μετά οι υπολογισμοί γίνονται στην ίδια διεργασία (σειριακά). Τι πλεονεκτήματα έχει η υβριδική υλοποίηση; Πως επηρεάζει η παράμετρος µ την επίδοση του υπολογισμού, ως προς τον χρόνο εκτέλεσης; Από ποιους παράγοντες εξαρτάται η βέλτιση τιμή της µ; Σκιαγραφήστε την παραπάνω υλοποίηση.