ΠΟΛΥΤΕΧΝΕΙΟ
ΚΡΗΤΗΣ Τμήμα Ηλεκτρονικών Μηχ. και Μηχ. Υπολογιστών ΛΟΓ 201: Τεχνολογία Λογισμικού
ΙΙ |
Ημερομηνία παράδοσης: | Τρίτη 16 Μαΐου 2000 |
Ποσοστό επί της συνολικής βαθμολογίας: |
20% |
Η παράδοση των ασκήσεων μπορεί να γίνει με έναν από τους ακόλουθους τρόπους κατά σειρά προτίμησης:
Ζητείται ένα πρόγραμμα C++ σε περιβάλλον Unix που να αποτελείται από δυο διεργασίες, η εκτέλεση των οποίων θα συνεχίζεται μέχρι να διακοπεί από το λειτουργικό σύστημα (άπειρος βρόχος).
Η πρώτη διεργασία θα έχει ρόλο παραγωγού (producer) και θα παράγει τυχαίους ακέραιους αριθμούς μεταξύ 0 και 999. Τους αριθμούς αυτούς θα τους μεταβιβάζει στη δεύτερη διεργασία.
Η δεύτερη διεργασία θα έχει ρόλο καταναλωτή (consumer) και θα απορροφά τους ακέραιους αριθμούς που προέρχονται από την πρώτη διεργασία. Στη συνέχεια, για κάθε αριθμό που δέχεται, θα εκτυπώνει μια γραμμή της μορφής:
min = 4, max = 983, avg = 342.830, count = 2031, number = 432
Τα στοιχεία που εμφανίζονται σε αυτή τη γραμμή είναι τα ακόλουθα:
min , max |
ο ελάχιστος και ο μέγιστος αριθμός που έχουν εμφανιστεί μέχρι αυτή τη στιγμή |
avg |
η μέση τιμή όλων των αριθμών που έχουν εμφανιστεί μέχρι αυτή τη στιγμή |
count |
το πλήθος των αριθμών που έχουν εμφανιστεί μέχρι αυτή τη στιγμή |
number |
ο τελευταίος αριθμός που εμφανίστηκε. |
Να υλοποιηθεί το παραπάνω πρόγραμμα χρησιμοποιώντας για την επικοινωνία των δυο διεργασιών την προγραμματιστική διαπροσωπεία των διασωληνώσεων (pipes) του Unix.
Να υλοποιηθεί το παραπάνω πρόγραμμα χρησιμοποιώντας για την επικοινωνία των δυο διεργασιών την προγραμματιστική διαπροσωπεία των μηνυμάτων (messages) του Unix System V.
Να υλοποιηθεί το παραπάνω πρόγραμμα χρησιμοποιώντας για την επικοινωνία των δυο διεργασιών την προγραμματιστική διαπροσωπεία των σηματοφορέων (semaphores) και της κοινής μνήμης (shared memory) του Unix System V.
Νίκος Παπασπύρου (
nickie@softlab.ntua.gr
).
17/4/2000.