Λειτουργικά Συστήματα Εργασίες Εξαμήνου 2013 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org 1
Εργασία εξαμήνου: The Bidding Game (1) Καλείστε να υλοποιήσετε στο ΛΣ FreeBSD σε POSIX C το γνωστό παιχνίδι The Bidding Game. Στο παιχνίδι αυτό, 2 παίχτες βρίσκονται στις 2 άκρες μιας ευθείας που έχει σημειωμένες τις ακέραιες θέσεις από 0 έως και 8 (9 θέσεις). Οι παίκτες λοιπόν βρίσκονται στη θέση 0 και στη θέση 8. Στη θέση 4 βρίσκεται ένα ακριβό αντικείμενο που θέλουν να το αποκτήσουν και οι δυο. Το αντικείμενο θα το αποκτήσουν όταν έρθει στη θέση τους. Και οι δυο παίκτες ξεκινάνε με το ίδιο ποσό χρημάτων. 2
Εργασία εξαμήνου: The Bidding Game (2) Στην έναρξη του γύρου, κάθε παίκτης ποντάρει κρυφά ένα ποσό, το οποίο του αφαιρείται από τα χρήματα που διαθέτει. Σε κάθε γύρο λοιπόν μειώνονται τα χρήματα του, κατά ίδιο ποσό. Ταυτόχρονα αποκαλύπτονται και οι 2 προσφορές και συμβαίνει κάτι από τα παρακάτω: Αν ένας παίκτης έχει ποντάρει μεγαλύτερο ποσό, το αντικείμενο μεταφέρεται από την τρέχουσα θέση κατά μια θέση προς αυτόν. Αν και οι δυο παίκτες έχουν ποντάρει το ίδιο ποσό, τότε το αντικείμενο προχωράει προς τον παίκτη που έχει το πλεονέκτημα (επόμενη διαφάνεια) 3
Το πλεονέκτημα: Εργασία εξαμήνου: The Bidding Game (3) Κάθε γύρο ένας από τους παίκτες έχει το πλεονέκτημα. Το πλεονέκτημα του δίνει την υπεροχή, σε περίπτωση που υπάρξει ισοπαλία. Αρχικά το πλεονέκτημα το έχει ο 1ος παίκτης. Στον επόμενο γύρο το πλεονέκτημα το έχει ο 2ος παίκτης. Κάθε γύρο το πλεονέκτημα πηγαίνει στον άλλο παίκτη. 4
Το κρυφό bid: Εργασία εξαμήνου: The Bidding Game (3) Κάθε bid είναι μια ακέραια τιμή που κυμαίνεται από 0 έως το μέγιστο ποσό που έχει διαθέσιμο ο παίκτης εκείνη τη στιγμή. Τα bids είναι κρυφά, αλλά στο τέλος κάθε γύρου αποκαλύπτονται και στους 2 παίκτες. 5
Υλοποίηση (1) Στην εργασία αυτή θα υλοποιηθούν τα παρακάτω: Ένα πρόγραμμα πελάτης. Ένα πρόγραμμα διακομιστής. Η επικοινωνία θα γίνεται μέσω TCP/IP. Ο διακομιστής θα δέχεται στη γραμμή εντολών 3 παραμέτρους, οι οποίοι θα είναι η θύρα επικοινωνίας, η IP ακρόασης και το αρχικό ποσό που έχει ο κάθε παίκτης. Ο πελάτης θα δέχεται στη γραμμή εντολών 2 παραμέτρους, οι οποίοι θα είναι η θύρα επικοινωνίας και η IP του διακομιστή, στον οποίο θα συνδεθεί. 6
Υλοποίηση (2) Η ροή εκτέλεσης είναι η εξής: Ο διακομιστής εκτελείται με τις κατάλληλες παραμέτρους. Ανοίγει την IP και τη θύρα και περιμένει 2 πελάτες. Ο πρώτος πελάτης τοποθετεί την IP και τη θύρα του διακομιστή και συνδέεται. Του εμφανίζεται κατάλληλο μήνυμα, ότι έχει συνδεθεί και είναι ο Νο1. Ο δεύτερος πελάτης τοποθετεί την IP και τη θύρα του διακομιστή και συνδέεται. Του εμφανίζεται κατάλληλο μήνυμα, ότι έχει συνδεθεί και είναι ο Νο2. Ο διακομιστής τότε ενημερώνει και τους 2 ότι το παιχνίδι ξεκινάει. 7
Υλοποίηση (3) Ο κάθε πελάτης ενημερώνεται αν έχει το πλεονέκτημα, την τρέχουσα θέση του μπουκαλιού,το προηγούμενο bid του άλλου παίκτη, και την προηγούμενη έκβαση του αποτελέσματος (αν νίκησε ή έχασε). Ο κάθε πελάτης στέλνει μια ακέραια τιμή στο διακομιστή, που αντιστοιχεί στο bid. Μόλις ο διακομιστής λάβει τις 2 τιμές, τότε κάνει τους κατάλληλους ελέγχους και αποφασίζει για την έκβαση του αποτελέσματος, και στέλνει πάλι τα δεδομένα της προηγούμενης παραγράφου. Αν κάποιος νικήσει, τότε ενημερώνει και τους 2 παίκτες για το αποτέλεσμα και το ποιος νίκησε. 8
Ο πελάτης Ο διακομιστής στέλνει τις άκρως απαραίτητες πληροφορίες. Ο πελάτης θα πρέπει να χρησιμοποιεί αυτές τις πληροφορίες που δέχεται για να: σχεδιάζει τις γραμμές και τη θέση που βρίσκεται το αντικείμενο. π.χ. P1 _ o _ P2 Εμφανίζει σε ένα σημείο της οθόνης αν ο παίκτης έχει το πλεονέκτημα ή όχι. [π.χ. P1 ADVANTAGE] Υπολογίζει το υπόλοιπο των χρημάτων που έχει ο τρέχων παίκτης, όπως και ο άλλος παίκτης.[ π.χ. P1 $40, P2 $10] 9
Ο διακομιστής Ο διακομιστής ρυθμίζει όλη την επικοινωνία. Διατηρεί την κατάσταση για κάθε παίκτη, όπως και τη θέση του αντικειμένου. Έχει ένα ξεχωριστό νήμα για κάθε παίκτη. Ελέγχει ότι το bid που έστειλε ο κάθε παίκτης είναι έγκυρο. Αποφασίζει το νικητή σε κάθε γύρο, όπως και στο τέλος. 10
Υλοποίηση (4) Προκειμένου να υπάρχει μια συνέπεια και διαλειτουργικότητα, θα χρησιμοποιήσετε το παρακάτω πρωτόκολλο επικοινωνίας, ώστε ο κάθε πελάτης που θα αναπτυχθεί από κάποια ομάδα να μπορεί να επικοινωνήσει με κάθε διακομιστή που θα αναπτυχθεί από άλλη ομάδα. 11
Πρωτόκολλο επικοινωνίας Όταν συνδέεται ο πελάτης στέλνει το όνομα του παίκτη: HELLO όνομα Ο διακομιστής του απαντάει με τον αριθμό που έχει: WELCOME αριθμός Όταν έρθουν 2 παίκτες, τότε ξεκινάει το παιχνίδι με το μήνυμα από το διακομιστή προς τους 2 παίκτες μαζί με το αρχικό balance που έχουν: STARTINGGAME 100 12
Πρωτόκολλο επικοινωνίας Ο πελάτης στέλνει το BID BID 10 Ο διακομιστής απαντάει OKBID Αν το δέχεται ή INVALIDBID αν είναι πολύ μεγάλο, οπότε ο πελάτης πρέπει να στείλει ξανά έγκυρο bid. 13
Πρωτόκολλο επικοινωνίας Μόλις στείλουν και οι 2 το BID τότε ο διακομιστής στέλνει το παρακάτω ίδιο πακέτο και στους δύο: OBJECT θέση#p1 bid1#p2 bid2#advantage pnumber#win pnumber Τα πεδία διαχωρίζονται με # Ο διακομιστής αναφέρει: Την τρέχουσα θέση του αντικειμένου. Το bid του P1. Το bid του P2. Το ποιος έχει τώρα το πλεονέκτημα. Το ποιος νίκησε στον προηγούμενο γύρο. 14
Πρωτόκολλο επικοινωνίας Αν νικήσει κάποιος παίκτης, τότε μετά από το προηγούμενο μήνυμα, ακολουθεί το μήνυμα νίκης: WINNER pnumber Δηλαδή, ότι έχει νικήσει ο παίκτης με τον αριθμό pnumber. Ο διακομιστής καθυστερεί κάθε φορά κατά ένα μικρό χρονικό διάστημα, ώστε να διατηρείται και κάποιο suspense στους παίκτες. 15
Βαθμολογικά Στοιχεία Υλοποίηση Πελάτη 30% Υλοποίηση Διακομιστή 30% Χρήση Νημάτων 20% Χρήση αρχείων για αποθήκευση των scores από το διακομιστή 20% +++BONUS +3.5 μονάδες 16
Bonus... +++BONUS Αυτοματοποίησης+++ Αν εκτός από τον πελάτη, δημιουργηθεί και ένα αυτόνομο bot-πελάτης που αποφασίζει, παίζει μόνο του και νικάει έναν άνθρωπο τουλάχιστον 1 στις 3 φορές, τότε θα υπάρχει BONUS +1 μονάδα. +++BONUS Πολλαπλών παικτών+++ Αν υποστηρίζονται ταυτόχρονα 4 παίκτες (client + server), οπότε δημιουργείται ένα πλέγμα 9x9 σημείων, και κάθε φορά που νικάει κάποιος, τότε μεταφέρεται το αντικείμενο μια θέση πιο κοντά οριζόντια (και μόλις έρθει στην ίδια κατακόρυφο, τότε μετατοπίζεται κατακόρυφα, αν υπάρχει λόγος), τότε θα υπάρχει BONUS +2 μονάδες. 17
Αναφορά Τo project θα συνοδεύεται από μια PDF αναφορά 10 σελίδων κειμένου με εισαγωγή, παρουσίαση ενεργειών & πρωτοκόλλου, ανάλυση σημαντικών τμημάτων κώδικα, αποτελέσματα λειτουργίας, μετρικά και screenshots, χωρίς ορθογραφικά και συντακτικά λάθη. Μια προβληματική αναφορά μειώνει έως και 30% την τελική βαθμολογία. Αν η αναφορά είναι γραμμένη στο πρόγραμμα στοιχειοθεσίας Latex (ή MikTex ή XeteX) και παραδοθεί το πηγαίο αρχείο χωρίς errors/warnings BONUS +0.50 μονάδες. 18
Επιπρόσθετα bonus Όποιοι απαντήσουν σωστά 20 ερωτήσεις συναδέλφων στο eclass θα πάρουν +0.5 bonus εργαστηρίου. Κάθε ερώτηση θα δίνει μια +1 point απάντηση, σε αυτόν που απάντησε σωστά και πρώτος από όλους (θα καταγράφω εγώ το +1 point). Ασφαλώς, στο τέλος θα γίνουν έλεγχοι για καρτέλ δημιουργίας εικονικών ερωτήσεων. Τα 4 άτομα με τις περισσότερες απαντήσεις (και εφόσον έχουν πάνω από 20 points), θα μετέχουν ως υποψήφιοι για το bonus Most Valuable Helper, για το άτομο που βοήθησε περισσότερο τους συναδέλφους τους, σε online ψηφοφορία. Το άτομο αυτό θα πάρει επιπρόσθετο +0.50 bonus. Σε περίπτωση ισοβαθμίας θα μοιραστεί το 0.50. 19
Επιπρόσθετα Bonus μαθήματος Ομιλία 1.5 ώρας στο αμφιθέατρο με θέμα Hacking in C με παραδείγματα σε FreeBSD (υπάρχει βιβλίο με οδηγίες) (+1.5 μονάδα Θ). Ομιλία 1.5 ώρας στο αμφιθέατρο με θέμα python και δημιουργία 1 εργ. Φυλλαδίου 2 ωρών με ασκήσεις σε python (+1.5 μονάδα Θ). Μίνι διαλέξεις κατά το τελευταίο πεντάλεπτο της θεωρίας (+0.75 μονάδες Θ). Μεταφράσεις κειμένων (από +0.25 έως 1 μονάδα Θ/Ε). Δημιουργία αρχείων παρουσιάσεων για awk ή sed ή perl ή python ή Posix ή άλλα θέματα (+1 μονάδα Ε). 20
Επιπρόσθετα bonus Αρχείο παρουσίασης (πάνω από 90 διαφάνειες) για: "Εικονοποίηση λειτουργικών συστημάτων, hypervisors,supervisors,θέματα απόδοσης, στοιχεία αρχιτεκτονικής CPU, συστήματα αρχείων για virtual machines, ομοιότητες και διαφορές στις διάφορες τεχνικές/προγράμματα εικονοποίησης (virtualbox,vmware,esx,zen,kvm κ.α.). (+1 μονάδα Θ) Λειτουργικά συστήματα σε πολυ-πύρηνους επεξεργαστές ή πολυ-επεξεργαστές. Λειτουργικά Συστήματα για κατανεμημένα συστήματα. Εισαγωγή με ποιοι ήταν οι κλασσικοί αλγόριθμοι χρονοδρομολόγησης που χρησιμοποιήθηκαν στα linux/windows/bsd και πως τροποποιήθηκαν για να υποστηρίζουν πολύεπεξεργαστές. (+1 μονάδα Θ) 21
Επιπρόσθετα bonus Αρχείο παρουσίασης για: Αναλυτικός αλγόριθμος χρονοδρομολόγησης του FreeBSD, ποιες συναρτήσεις χρησιμοποιούνται μέσα στα πηγαία αρχεία, σε ποια πηγαία αρχεία και πως λειτουργεί, παραδείγματα, εκδόσεις (στην πρώτη έκδοση τι μορφή είχε ο αλγόριθμος, μετά τι αλλαγές έγιναν και γιατί (χρονοδρομολογητές BSD_SCHED και SCHED_ULE) (+2 μονάδες Θ) Αρχείο παρουσίασης για: Αναλυτικός αλγόριθμος χρονοδρομολόγησης του linux, ποιες συναρτήσεις χρησιμοποιούνται μέσα στα πηγαία αρχεία, σε ποια πηγαία αρχεία και πως λειτουργεί, παραδείγματα, εκδόσεις (στην πρώτη έκδοση τι μορφή είχε ο αλγόριθμος, μετά τι αλλαγές έγιναν και γιατί. (+2 μονάδες Θ) 22
Επιπρόσθετα bonus Αρχείο παρουσίασης (τουλάχιστον 90 διαφάνειες) για τα δημοφιλή συστήματα αρχείων των ΛΣ (FreeBSD, Linux, Windows, MacOS, Android, Windows Mobile, Haiku, iphone, solaris, όπως και τα virtual filesystem containers vdi, vmdk, vhd). Θα αναλυθούν θέματα απόδοσης, αξιοπιστίας, ευελιξίας κ.α. (+1 μονάδα Θ) Αρχείο παρουσίασης (τουλάχιστον 30 διαφάνειες) και δημιουργία εργαστηριακού φυλλαδίου (τουλάχιστον 10 σελίδες) για την ομάδα εργαλείων δυναμικής αποσφαλμάτωσης Valgrind http://valgrind.org/ (+1 μονάδα Ε) 23
Επιπρόσθετα bonus 30 διαφάνειες για το εργαλείο SVN και πως μπορεί να χρησιμοποιηθεί τοπικά ή δικτυακά (εφαρμογή στο zafora.icte.uowm.gr) (+0.75 μον. Ε) Αρχείο παρουσίασης (90 διαφάνειες) για ΛΣ πραγματικού χρόνου. (+1 μονάδα Θ). Αρχείο παρουσίασης (90 διαφάνειες) για ΛΣ πολυεπεξεργαστών (+1.5 μονάδα Θ). Ανάπτυξη εκπαιδευτικού υλικού για κανονικές εκφράσεις (~διαλέξεις θεωρία και 1 εργαστηριακό φυλλάδιο 10 σελίδων μαζί με τις λύσεις) (+1 μονάδα Ε). 24
Επιπρόσθετα bonus Δημιουργία παρουσίασης για το πρόγραμμα στοιχειοθεσίας Latex (+1 μονάδα Θ). Ανάπτυξη εκπαιδευτικού υλικού για το Minix ( επαναχρησιμοποιώντας υλικό από αντίστοιχο μάθημα άλλου τμήματος http://www.cs.uoi.gr/~faturu/courses/2005/operating-systems.html ) (+2 μονάδες Ε/Θ). Δημιουργία παρουσίασης τουλάχιστον 90 διαφανειών για την ιστορία των ΛΣ (+1 μονάδα Θ). Συγκέντρωση VHDL κώδικα για τον επεξεργαστή PDP11 και εκτέλεση του ΛΣ 2.11 BSD UNIX (1992) { http://opencores.org/project,w11} (+2 μονάδες Ε/Θ) 25
Επιπρόσθετα bonus Μεταφορά του syslog NetBSD στο syslog του FreeBSD ( This is how the traditional BSD syslog was designed (and standardized by RFC 3164). It has timestamp of fixed format: "Mmm dd hh:mm:ss". In IETF this RFC is marked obsolete and replaced with RFC 5424 with different timestamp format in ISO 8601 form. FreeBSD doesn't implement 5424 yet. Almost complete implementation was done in NetBSD in that regard in 2008. NetBSD before RFC 5424 changes has had pretty similar syslogd source, so if one could analyze and port that changes to FreeBSD, that would be pretty nice. ) (+3 μονάδες Θ/Ε). Δημιουργία driver για USB Webcam στο ΛΣ FreeBSD (+4 μονάδες Θ/Ε). 26
Μίνι Διαλέξεις - Οδηγίες O φοιτητής που ενδιαφέρεται για μια μίνι-διάλεξη, στέλνει email στο διδάσκοντα με το τίτλο και 2-3 παραγράφους που εξηγεί τι θα παρουσιάσει. Αν επιλεχθεί τότε θα πρέπει: 5 μέρες πριν την παρουσίαση πρέπει να στείλει ένα κείμενο παρουσίασης ppt και ένα έγγραφο σημειώσεων doc. Στο PPT θα υπάρχουν 5-10 διαφάνειες. Στο doc θα έχει γραφεί το σενάριο της ομιλίας, δηλαδή τι θα παρουσιάζει ο φοιτητής για κάθε διαφάνεια. Θα πρέπει να είναι όσο πιο κοντά σε αυτά που θα παρουσιάσει. Να υπάρχει αριθμός σελίδων σε κάθε διαφάνεια (εκτός από την πρώτη). 1η διαφάνεια: Τίτλος,τμήμα,ημερομηνία,όνομα φοιτητή, επιβλέπων καθηγητής και το κείμενο: "Διάλεξη 5λεπτών για το μάθημα XXX" Προτελευταία διαφάνεια: Συμπεράσματα / Μελλοντικές επεκτάσεις Τελευταία διαφάνεια: Βιβλιογραφία (όχι ευχαριστώ, ερωτήσεις και άλλα) Επιτρέπεται η χρήση ενός video έως 1 λεπτό, το οποίο θα έχει μεταφορτωθεί από το internet στον τοπικό υπολογιστή (υπάρχουν προγράμματα που μπορούν να αντιγράψουν από το youtube ή άλλο site με streaming περιεχόμενο). ------------------------------------------------------------------------------------ Εναλλακτικά, η παρουσίαση μπορεί να γίνει όλη με video, στο οποίο όμως θα παρουσιάζει ο φοιτητής (δε θα έχει ήχο) και θα δίνει τις λεπτομέρειες που απεικονίζονται ή άλλα 27 στοιχεία που δε φαίνονται με ακρίβεια.