Εργαστήριο Λειτουργικών Συστημάτων Ακ. Έτος Άσκηση 3

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

Προγραμματισμός συστημάτων UNIX/POSIX. Χρονομέτρηση

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

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

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

ΑΣΚΗΣΗ 2 -ΑΚΥΡΩΣΗ ΣΗΜΑΣΙΑΣ ΕΙΔΙΚΩΝ ΧΑΡΑΚΤΗΡΩΝ

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

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

Ενσωματωμένα Συστήματα

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

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

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

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Ιδιοκτησία Αντικειµένου

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

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

Επεξεργασία Αρχείων Κειµένου

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

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

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

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

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

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

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 2. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης

Ενδεικτικές λύσεις και στατιστικά

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

CE121 Προγραµµατισµός ΙΙ. Χρόνος εκτέλεσης. Βάνα Ντουφεξή

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

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

Προγραμματισμό για ΗΜΥ

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

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

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

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

Κλείδωμα αρχείων (file locking) Προγραμματισμός II 1

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Προγραμματισμός συστημάτων UNIX/POSIX. Διαδιεργασιακή επικοινωνία: αγωγοί (IPC inter-process communication: pipes)

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

Αγωγοί/Σωλήνες (Pipes) Προγραμματισμός II 1

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

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

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

είκτες και Πίνακες (2)

Πως θα αποθηκεύσει τη λίστα με τα ψώνια του και θα την ανακτήσει στο Σ/Μ; και πως θα προσθέσει στη λίστα του επιπλέον προϊόντα;

Ε-85: Ειδικά Θέµατα Λογισµικού

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Εργαστήριο 9: Αρχεία

Μη ανασταλτική/πολυπλεξία Ε/Ε (non-blocking/multiplexed I/O) Προγραμματισμός II 1

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

Εργαστήριο 2: Πίνακες

Διαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διεργασίες και Νήματα Εργαστηριακές Ασκήσεις

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

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

Πως δημιουργούμε ένα νέο αρχείο κειμένου; Με τρεις τρόπους:

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

Εισαγωγή στον προγραμματισμό. Τμήμα Πληροφορικής & Επικοινωνιών ΤΕΙ Σερρών Εργαστήριο 2

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

ΑΡΧΕΙΑ ΚΕΙΜΕΝΟΥ ΣΤΗΝ C

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

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης

Αντικειµενοστρεφής Προγραµµατισµός

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

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

Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

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

... s12 s13 s14. Σχήμα1: ΙεραρχίαΔιεργασιώνμε l=3καιβάθος d=3. Οκάθεεργάτης(worker)δουλεύειμετο 1/27του αρχείου των ψήφων.

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

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

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

Σημειώσεις όγδοης εβδομάδας

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

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

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

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

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

Δομές Επανάληψης. Εισαγωγή στη C++

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

Transcript:

Εργαστήριο Λειτουργικών Συστημάτων Ακ. Έτος 0- Άσκηση Να τροποποιηθεί ο αλγόριθμος χρονοπρογραμματισμού του Minix ώστε σε κάθε σειρά προτεραιότητας, ώστε να «ευνοούνται» οι διεργασίες που χρησιμοποιούν κατά κύριο λόγο το CPU (CPU bound) έναντι των διεργασιών που προκαλούν πολλά I/O interrupts (I/O bound). Ο αλγόριθμός σας θα δουλεύει ως εξής:. Κάθε διεργασία λαμβάνει ένα quantum όπως έχουμε δει. Αν μια διεργασία καταναλώνει το quantum πλήρως, σημαίνει ότι όλη η δουλειά που έχει να κάνει γίνεται στον επεξεργαστή. Αντίθετα, όταν η διεργασία χρειάζεται πόρους από το σκληρό δίσκο, τότε δεν προλαβαίνει να καταναλώσει όλο το quantum, καθώς μπλοκάρει περιμένοντας την ανάγνωση του σχετικού αρχείου.. Εκμεταλλευόμενοι αυτό το φαινόμενο, θα τροποποιήσετε τον αλγόριθμο χρονοπρογραμματισμού στο minix (user- space scheduling) ώστε αν μια διεργασία δεν καταναλώσει όλο της το quantum, να μετατίθεται στην τελευταία ουρά προτεραιότητας. Οι διεργασίες που καταναλώνουν όλο τους το quantum θα παραμένουν στην ουρά που βρίσκονται. Διευκρινίσεις: Διαβάστε πολύ καλά την εισαγωγή στο user- space scheduling εδώ http://wiki.minix.org/en/userspace_scheduling Επίσης χρήσιμη θα σας φανεί η αναφορά του Swift για το πως δουλεύει το user- space scheduling στο Minix που θα βρείτε εδώ http://www.minix.org/docs/scheduling/report.pdf Για να δοκιμάσετε τον κώδικά σας, θα πρέπει να δείτε πως συμπεριφέρεται το λειτουργικό με και χωρίς τον τροποποιημένο σας αλγόριθμο, παρατηρώντας τον χρόνο εκτέλεσης δύο προγραμμάτων: Γράψτε ένα απλό πρόγραμμα (io_bound.c) το οποίο λαμβάνει σαν παράμετρο εκτέλεσης το όνομα ενός αρχείου (χρησιμοποιήστε π.χ. το clients.txt από την η άσκηση) και κατόπιν το ανοίγει, διαβάζει από αυτό 00 bytes και το κλείνει. Βάλτε τον κώδικα σε ένα loop ώστε να εκτελείται αυτή η διαδικασία κάποιες χιλιάδες (π.χ. 500) φορές. Γράψτε ένα απλό πρόγραμμα (cpu_bound.c) το οποίο λαμβάνει σαν παράμετρο εκτέλεσης μια λέξη και επαναλαμβάνει κάποιες χιλιάδες φορές έναν έλεγχο για να δει αν η λέξη είναι παλίνδρομο (δηλαδή διαβάζεται το ίδιο και από την ανάποδη, π.χ. το racecar). Και για τα δύο προγράμματα φροντίστε να κρατάτε τον χρόνο εκτέλεσης. Δίνεται ένας βασικός σκελετός για δομή των προγραμμάτων πιο κάτω. Φτιάξτε επίσης ένα bash script το οποίο με την κλήση του, εκτελεί ταυτόχρονα από τρία στιγμιότυπα και των δύο δοκιμαστικών προγραμμάτων, ώστε να μπορείτε να διεξάγετε πειράματα.

Οδηγίες υποβολής Τα παραδοτέα σας είναι:. Οι τροποποιήσεις στον κώδικα του Minix (γραπτά) και τα σχετικά τροποποιημένα αρχεία. Ο κώδικας των αρχείων των δοκιμαστικών προγραμμάτων (io_bound.c και cpu_bound.c) και του bash script. Screenshots που δείχνουν τον χρόνο εκτέλεσης των δοκιμαστικών προγραμμάτων με τον αλγόριθμό σας και με τον default αλγόριθμο του Minix 4. Πίνακες αποτελεσμάτων εκτέλεσης των προγραμμάτων 0 φορές με και χωρίς τον αλγόριθμό σας με σχετικά στατιστικά (μέσο όρο χρόνου εκτέλεσης, τυπικές αποκλίσεις) 5. Μισή το πολύ σελίδα Α4 με τα σχόλιά σας για την παρατηρούμενη συμπεριφορά του αλγορίθμου. Η υποβολή σας θα ακολουθεί απαρέγκλιτα τη δομής της φόρμας υποβολής που ακολουθεί και θα βρίσκεται ένα ενιαίο αρχείο Word / PDF. Μαζί με αυτό θα υποβάλλετε τα αρχεία του τροποποιημένου κώδικα και των δοκιμαστικών προγραμμάτων. Συμπιέστε όλα τα σχετικά αρχεία της υποβολής και υποβάλλετέ τα σύμφωνα με τις εξής οδηγίες: Να ονομάσετε το συμπιεσμένο αρχείο σε [ΑΜ]_ex.[zip rar] (π.χ. 45_ex.rar ή 45_ex.zip) Το συμπιεσμένο αρχείο θα πρέπει να υποβληθεί ηλεκτρονικά στην ιστοσελίδα http://diogenis.ceid.upatras.gr/~akomninos/oslab Σημειώνεται ότι η εργασία είναι ομαδική με επιθυμητό μέγεθος ομάδας το πολύ άτομα.

Φόρμα υποβολής ης Άσκησης Ονόματα φοιτητών ΑΜ φοιτητών Άσκηση. Τροποποιήσεις Minix Λίστα τροποποιηθέντων αρχείων Minix /usr/src/somedir/file.c /usr/src/somedir/file.c. Τροποποιήσεις αρχείων Minix /usr/src/somedir/file.c Line Code 50 if (var>0) { 5 var=var + 56; /usr/src/somedir/file.c.. Κώδικες δοκιμαστικών προγραμμάτων cpu_bound.c //cpu_bound.c dokimastiko programma io_bound.c //io_bound.c dokimastiko programma Bash script #!usr/pkg/bin/bash for i in do./cpu_bound racecar&./io_bound clients.txt& done echo All done!

. Screenshot εκτέλεσης προγραμμάτων [σχετικά screenshots τα οποία δείχνουν το output από τα δοκιμαστικά προγράμματα] 4. Πίνακες αποτελεσμάτων εκτελέσεων Πρόγραμμα cpu_bound.c # πειράματος Με default αλγόριθμο Με δικό μου αλγόριθμο.. 0 Μέσος όρος Τυπική απόκλιση Συνολικός Μ.Ο Πρόγραμμα io_bound.c # πειράματος Με default αλγόριθμο Με δικό μου αλγόριθμο.. 0 Μέσος όρος Τυπική απόκλιση Συνολικός Μ.Ο 5. Σχόλια για τη συμπεριφορά του αλγορίθμου [μέχρι μισή σελίδα Α4]

//skeletos dokimastikou programmatos #include <sys/times.h> static time_t real_start; static time_t real_end; static struct tms start_sys; static struct tms end_sys; static clock_t start; static clock_t end; void start_clock() { time(&real_start); start = times(&start_sys); void end_clock() { time(&real_end); end = times(&end_sys); void print_clock_results() { // real,system,user printf("%i,%jd,%jd\n", (int)(real_end - real_start), (intmax_t)(end_sys.tms_stime - start_sys.tms_stime), (intmax_t)(end_sys.tms_utime - start_sys.tms_utime)); int main(int arg, char **argv) { int i = 0; start_clock(); while(i < 500) { // do some stuff end_clock(); print_clock_results(); return 0;