Κ22-ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ
Χειμερινό Εξάμηνο, Τμήμα Περιττών Αριθμών, Δευτέρα 18:00-20:00 (Αιθ. Α2) και Τετάρτη 13:00-15:00 (Α2).
Διδάσκων:
Αλέξης Δελής, ad -at*- di -dot+ uoa +dot- gr, A37, til: 210-727.5212, ώρες γραφείου
Δευτέρα 17:00-18:00.
Απαιτήσεις Μαθήματος:
Εδώ είναι η σελίδα
με τα προκαταρκτικά και τις απαιτήσεις του μαθήματος (pdf).
Θέματα Διαδικασίας:
Το μάθημα αρχίζει και-τέταρτο. Διαγωνίσματα αρχίζουν ακριβώς.
Κινητά τηλέφωνα και PCs/PDAs οποιασδήποτε μορφής είναι εκτός λειτουργίας
στην διάρκεια των μαθημάτων (και των διαγωνισμάτων).
Συμμετοχή στα διαγωνίσματα και επίδειξη προγραμμάτων γίνεται
με ταυτότητα (Φοιτητική, Αστυνομική, ή/και Διαβατήριο).
Το κάπνισμα απαγορεύεται σε όλους τους δημόσιους χώρους με
νόμο του Υπουργείου
Υγείας από τον Ιούλιο του 2002.
Όταν στέλνετε email:
Πάντα χρησιμοποιείτε
το userid σας: stdxxxxx.
Email από οποιοδήποτε άλλο λογαριασμό προωθείται δυστυχώς δεν μπορεί να
ληφθεί υπ'-όψη.
Στο Subject γράφετε 3-4 λέξεις που δίνουν στον αναγνώστη σας μια ιδέα για το τι θα διαβάσει.
Στο κείμενο με συντομία γράφετε αυτό που θέλετε να αναφέρετε.
Στο τέλος του κειμένου σας, ΠΑΝΤΑ αναγράφετε το πλήρες ή το πρώτο όνομα σας.
Είναι απλός κανόνας ευγένειας
για τον αναγνώστη σας.
Προγραμματιστική Άσκηση ΙV:
Η περιγραφή της άσκησης είναι εδώ:
ps
ή
pdf
Μερικές διαφάνειες που μπορεί να βοηθήσουν στην υλοποίηση της άσκησης σε
ps ή
pdf
Άσκηση IIΙ(για το σπίτι):
ps ή
pdf
(υποβολή στήν τάξη 6/2).
Μαθήματα(έξτρα ή αναπλήρωσης)
θα γίνει μάθημα στην Αίθουσα Ζ.
Τετάρτη 14/12(13:00-15:00) έγινε θα γίνει η παρουσίαση της 3ης Προγ. Άσκησης και του σχετικού υλικού για semaphores και shared segments.
Δευτέρα 5/12: έγινε θα γίνει τρίωρο μάθημα απο 18:00-21:00.
Δευτέρα 28/11: έγινε θα γίνει τρίωρο μάθημα από 18:00-21:00.
Δευτέρα 21/11: έγινε Θα γίνει τρίωρο μάθημα από 18:00-21:00.
Εβδομάδα 14/11: έγινε Θα γίνει μια έξτρα ώρα από 20:00-21:00 την Δευτέρα 14/11.
Σάββατο 12/11: έγινε θα γίνει έξτρα μάθημα
στην Αίθουσα Α2 από τις 10:00-14:00.
Διαγώνισμα Προόδου:
Δευτέρα 16/1 και ώρα 18:00-19:20.
Θα εξεταστεί όλη η ύλη που έχει καλυφθεί μέχρι και την 11/1.
Μπορείτε να έχετε μαζί σας ΈΝΑ βιβλίο Λ.Σ. χωρίς προσωπικές σημειώσεις πάνω στο βιβλίο.
Θα πρέπει να δείξετε ταυτοπροσωπία (με επίσημο τρίπτυχο -και όχι το πάσο
για τα ΜΜΜ- ή αστυνομική ταυτότητα ή διαβατήριο ή κάρτα μονίμου
κατοικίας ή άδεια οδήγησης).
Προγραμματιστική Άσκηση IIΙ:
Η περιγραφή της άσκησης είναι εδώ:
ps
ή
pdf
Την Τετάρτη 14/12
οι κ. N. Στρατής και Η. Παναγιωτόπουλος
θα παρουσιάσουν παρουσίασαν
την άσκηση στην τάξη.
Μερικές έξτρα μέρες:
Η υποβολή της Άσκησης IIΙ μπορεί να γίνει μέχρι και την Δευτέρα 30/1 και
ώρα 24:00. Λόγω αυτής της παράτασης δεν θα υπάρξει
έξτρα περίοδος υποβολής με μειωμένο βαθμό.
Η υποβολή της άσκησης ΔΕΝ μπορεί για κανέναν λόγο να γίνει μέσω Email (σχετικά Email μηνύματά δυστυχώς θα πρέπει να αγνοηθούν).
Υποβολή:
Φτιάχνετε ένα tar-ball
με ένα directory από όλη σας την
δουλειά -το οποίο καλό θα ήταν να έχει
το όνομά σας πχ.
AnastasiosVeikosProject3.tar.gz
Κάνετε ΠΡΩΤΑ αλλαγή στα access rights του αρχείου ως εξής:
chmod 755 AnastasiosVeikosProject3.tar.gz
H κατάθεση γίνεται με την απλή εντολή:
cp AnastasiosVeikosProject3.tar.gz /home/users/k22/project3/std01134
όπου
std01134
είναι το userID του φοιτητή (Αναστάσιου Βεϊκου). Το εν λόγω userID πρέπει να
μου έχει δοθεί στην τάξη.
Μπορείτε να ελέγξετε τι ακριβώς έχετε υποβάλλει με την εντολή:
ls /home/users/k22/project3/std01134/*
Οι κατάτολοι υποβολής άνοιξαν την 21/1.
:
θα πρέπει να δείξετε την άσκηση για να να βαθμολογηθήτε.
Η παρουσίαση της άσκησης θα γίνει στο γραφείο Α37
την Τετάρτη 1/2 (9:00-13:00) και την Πέμπτη 2/2 (10:00-18:00).
Στην πόρτα του Α37 (Γραφείο Δελή) υπάρχει μια λίστα: επιλέγετε την
ώρα που θέλετε να δείξετε την άσκησή σας και έρχεστε 2 λεπτά ΠΡΙΝ την
ώρα που έχετε δηλώσει.
Σηματοφόροι:
Ένα σετ από διαφάνειες για την χρήση των σηματοφόρων σε Linux/Unix είναι
εδώ.
Τα σχετικά προγράμματα είναι:
shareMem1.c,
shareMem2.c,
semtest.c,
semtest3.c,
semtest3a.c,
sysV-sems-sample.c
Σχετικά με τις ασκήσεις που βρέθηκαν να δίνουν τον ίδιο κώδικα:
στην 1η Προγραμματιστική Άσκηση βρέθηκε ένας
αριθμός εργασιών (μικρός, ωστόσο μεγαλύτερος από
τις δύο τελευταίες χρονιές 2009/10) που
ο κώδικας σε μεγάλα κομμάτια ήταν ίδιος ("ίδιος ίδιος" η με παραλλαγές).
Οι εμπλεκόμενοι ("παρέχοντες" και "λαμβάνοντες") παίρνουν μηδέν και αποχωρούν
από το μάθημα.
Η επόμενη ευκαιρία για το Κ22 για το εν λόγω γκρουπ είναι
στην επόμενη χρονιά.
Αν μέχρι το Σεπτέμβριο του 2012 το Πανεπιστήμιο ΔΕΝ έχει υιοθετήσει
εσωτερικό κανονισμό που να ασχολείται με το εν λόγω πρόβλημα,
οι εμπλεκόμενοι αποκλείονται και από την εξεταστική Σεπτεμβρίου.
Άσκηση IΙ(για το σπίτι):
ps ή
pdf
(υποβολή στήν τάξη 19/12).
Προγραμματιστική Άσκηση IΙ:
Η περιγραφή της άσκησης είναι εδώ:
ps
ή
pdf
Ένα σύντομο
write-up
για Named Pipes (FIFOs).
Μερικά τεστ
δεδομένα για την Άσκηση (προσφορά Η. Τζαφά/Κ. Μουντζούρης).
Προγράμματα για την δημιουργία και ανάγνωση δεδομένων (και ένα
readme αρχείο).
Υποβολή:
Φτιάχνετε ένα tar-ball
με ένα directory από όλη σας την
δουλειά -το οποίο καλό θα ήταν να έχει
το όνομά σας πχ.
AnastasiosVeikos.tar.gz
Κάνετε ΠΡΩΤΑ αλλαγή στα access rights του αρχείου ως εξής:
chmod 755 AnastasiosVeikos.tar.gz
H κατάθεση γίνεται με την απλή εντολή:
cp AnastasiosVeikos.tar.gz /home/users/k22/project2/std01134
όπου
std01134
είναι το userID του φοιτητή (Αναστάσιου Βεϊκου). Το εν λόγω userID πρέπει να
μου έχει δοθεί στην τάξη.
Μπορείτε να ελέγξετε τι ακριβώς έχετε υποβάλλει με την εντολή:
ls /home/users/k22/project2/std01134/*
Οι κατάτολοι υποβολής άνοιξαν την 13/12.
Παρουσίαση Άσκησης IΙ
:
θα πρέπει να δείξετε την άσκηση για να να βαθμολογηθήτε.
Η παρουσίαση της άσκησης θα γίνει στο γραφείο Α37
την Τετάρτη 11/1 και την Πέμπτη 12/1.
Στην πόρτα του Α37 (Γραφείο Δελή) υπάρχει μια λίστα: επιλέγετε την
ώρα που θέλετε να δείξετε την άσκησή σας και έρχεστε 2 λεπτά ΠΡΙΝ την
ώρα που έχετε δηλώσει.
Άσκηση Ι(για το σπίτι):
ps ή
pdf
(υποβολή στήν τάξη 5/12).
forks/execs/signals
παραδείγματα που συζητήσαμε
στην τάξη.
Προγραμματιστική Άσκηση Ι:
Η περιγραφή της άσκησης είναι εδώ:
ps
ή
pdf
Παρουσίαση Άσκησης Ι
:
θα πρέπει να δείξετε την άσκηση για να
να βαθμολογηθήτε. Η παρουσίαση της άσκησης θα γίνει στο γραφείο Α37
την Πέμπτη 1/12 και την Παρασκευή 2/12.
Στην πόρτα του Α37 (Γραφείο Δελή) υπάρχει μια λίστα: επιλέγετε την
ώρα που θέλετε να δείξετε την άσκησή σας και έρχεστε 2 λεπτά ΠΡΙΝ την
ώρα που έχετε δηλώσει.
Η υποβολή της Άσκησης Ι μπορεί να γίνει μέχρι και την Κυριακή 20/11 και
ώρα 23:00. Λόγω αυτής της παράτασης δεν θα υπάρξει
έξτρα περίοδος υποβολής με μειωμένο βαθμό.
Η υποβολή της άσκησης ΔΕΝ μπορεί για κανέναν λόγο να γίνει μέσω Email (σχετικά Email μηνύματά δυστυχώς θα πρέπει να αγνοηθούν).
Την Τετάρτη 2/11 ο Χ. Πατσωνάκης θα είναι στο Unix Lab για ερωτήσεις
σχετικά με την Άσκηση μεταξύ 18:00-20:00.
Την Πέμπτη 3/11 ο Π. Βινιεράτος
θα είναι στο ίδιο εργαστήριο για ερωτήσεις μεταξύ 18:00-20:00.
Μερικά αρχεία για τεστς μπορείτε να τα βρείτε
εδώ.
Υποβολή: φτιάχνετε ένα tar-ball με ένα directory από όλη σας την
δουλειά -το οποίο καλό θα ήταν να έχει το όνομά σας πχ. AnastasiosVeikos.tar.gz- και η κατάθεση γίνεται με την απλή εντολή:
cp AnastasiosVeikos.tar.gz /home/users/k22/project1/std01134
οπου
std01134
είναι το userID του φοιτητή (Αναστάσιου Βεϊκου). Το εν λόγω userID πρέπει να
μου έχει δοθεί στην τάξη.
Μπορείτε να ελέγξετε τι ακριβώς έχετε υποβάλλει με την εντολή:
ls /home/users/k22/project1/std01134/*
Οι κατάτολοι υποβολής άνοιξαν την 11/11.
Βιβλία για το Κ22:
Η θεωρία του μαθήματος καλύπτεται από ένα οποιοδήποτε βιβλίο από τα παρακάτω:
A.S. Tanenbaum, Modern Operating Systems,
2nd Edition, Παπασωτηριου, 2005
G. Nutt,
Operating Systems , 3rd Edition, Addison Wesley,
Boston, MA 2003.
A. Silberschatz P.B. Galvin and G. Gagne
Operating System Concepts
8th Edition, John Wiley & Sons, Inc., 2007.
Raphael A. Finkel,
An Operating System Vade Mekum, Prentice Hall, out-of-print, διαθέσιμο
με άδεια του συγγραφέα σε μορφή
PDF (διαβαζεται με acrobat reader, gv, xpdf, κλπ.)
Φυσικά για τις προγραμματιστικές ασκήσεις το standard βιβλίο είναι:
B.W. Kernigham, D. Ritchie, The
C Programming Language, Second Edition, Prentice Hall, 1988.
Αλλες Χρήσιμες Αναφορές:
Ένα σύνολο από σημειώσεις που έχουν γραφεί για
χρήση/προγραμματισμό Unix
σε συνεργασία με την
Μαρία Φραγκούλη, Δημήτρη Λεβέντη και Αργύρη Πετρόπουλο (πάντα σε beta-version).
Δωρεάν διαθεσιμότητα του Linux και FreeBSD:
Ubuntu,
Debian,
Suse,
RedHat, και
FreeBSD
Χρήσιμο F.A.Q. για την γλώσσα προγραμματισμού C - faq-c
Εισαγωγικά tutorials για Unix είναι
εδώ
και εδώ .
Tutorials για το πως να κάνετε compile προγράμματα στο Unix
Tut-A,
και
Tut-B
C Standard Library
Οδηγίες για όσους γράφουν C++
A. D. Downey, The Little Book of Semaphores, GreenTree Press, 2007.
Ακολουθώντας το
συνδεσμο
μπορείτε να βρείτε αυτά που ανέφερα στην πρώτη διάλεξη.
Βιβλία για το Unix:
Υπάρχει ένας πλούτος όσον αφορά στα διαθέσιμα βιβλία για το Unix
που έχουν βασικές αλλά και προχωρημένες ιδέες για την χρήση του.
Υπάρχει πάντα το κλασικό βιβλίο:
B.W. Kernigham and R. Pike, The
Unix Programming Environment, Prentice Hall Software Series, Englewood
Cliffs, NJ, 1984.
Πολλά βιβλία περιγράφουν βασικές προγραμματιστικές δυνατότητες
με χρήση system-calls, libraries, κλπ. Εδώ είναι μερικές επιλογές:
A. Robbins,
Linux Programming by Example: The Fundamentals
, Prentice Hall, Upper Saddle River, NJ, 2004.
M.J. Rochkind, Advanced
Unix Programming, Prentice-Hall Software Series, Englewood Cliffs,
NJ, 2004.
W.R. Stevens and S.A. Rago, Advanced Programming in the UNIX Environment, 2nd Edition, Addison-Wesley Professional Computing Series, Reading MA, 2005.
K. Haviland, D. Gray, and B. Salama,
System Programming, 2nd Edition, Addison-Wesley, Harlow, United
Kingdom, 1999 (διαθέσιμο από τον διδάσκοντα).
Unix (Solaris/Ubuntu) Accounts:
Αν έχετε γραφτεί στο τμήμα μπορείτε να έχετε και Unix/Linux
λογαριασμούς (Solaris 2.8/9.0, Ubuntu-Linux). Μπορείτε να
πάρετε τα passwords που χρειάζεστε απο τις κυρίες:
Μαριάννα Βλαστού (marianna@di.uoa.gr)
Φωφω Παπαμιχαλοπούλου (fofo@di.uoa.gr)
Το γραφείο τους βρίσκεται μέσα στο Unix Lab του πρώτου ορόφου.
Τα passwords που θα πρέπει να έχετε πρέπει να είναι ένας καλός
συνδυασμός από γράμματα και ψηφία.
Passwords δεν δανείζονται σε άλλους για κανένα λόγο και
πρέπει να αλλάζουν κάθε 3-4 μήνες.
Υποβολή Ασκήσεων:
Φτιάξτε ένα tar-ball με όλη την δουλειά σας (source files,
header files, Makefile, README-file, κλπ) και δώστε του ενα
όνομα που ΕΥΚΟΛΑ σας ξεχωρίζει (π.χ. "AlexiosDelis.tar")
Το παραπάνω αρχείο το αντιγράφετε στον παρακάτω κατάλογο:
/home/users/k22/project1/USER-ID
όπου USER-ID ειναι το login όνομα σας στον Unix Server.
Για το παραπάνω παράδειγμα η υποβολή θα γινόταν με την απλή εντολή
cp AlexiosDelis.tar /home/users/k22/project1/ad/
δεδομένου οτι το login id του χρήστη είναι ad.
Μπορείτε να κάνετε πολλαπλές υποβολές. Μόνο η τελευταία υποβολή λαμβάνεται
υπόψη
Πάντα βάζετε ενα README αρχείο με οδηγίες για τον εξεταστή της άσκησης.
List-Server:
Λειτουργεί μιά Mailing List που μπορείτε να διαβάσετε μέσω της ιστοσελίδας:
http://www.di.uoa.gr/~mailman/listinfo.cgi/info-k22
.
Ακολουθήστε τις οδηγίες που αναφέρει η εν λόγω σελίδα για να εγγραφείτε/διαγραφειτε
στην λίστα Γενικά είναι καλή ιδέα να παρακολουθείτε την λίστα μιας και κατά καιρούς
διάφορες ανακοινώσεις αποστέλλονται εκει.
Separate Compilation - C (gcc):
Εδώ είναι ένα tar file (απλό "επίπεδο" file) που ονομάζεται
sample-C-prog.tar
Κατεβάστε αυτό το αρχείο tar στον λογαριασμό σας και κάντε το un-tar
με την παρακάτω εντολή:
your-machine-prompt> tar xvf sample-C-prog.tar
Αυτό δημιουργεί ένα κατάλογο με όνομα SampleGCC
Το πρόγραμμα γίνεται "αυτόματα" compile με την βοήθεια του Makefile
(που θα βρείτε στο κατάλογο SampleGCC).
Για να διαγράψετε "παλιά" object files ή executables απλά γράψτε:
your-machine-prompt> make clean
Για να ξανακάνετε compile γράφετε:
your-machine-prompt> make
Για πιο πολλές πληροφορίες για το make kai gcc
πηγαινετε στην σελίδα.
Αν δεν γνωρίζετε τι είναι το "tar" "gcc" "make"
απλά γράφετε
"man tar", "man gcc", "man make" για να δειτε σκιαγραφήσεις των εν λόγω προγραμμάτων συστήματος
Tar-balls:
Ενα tar-file ειναι μια επιπεδοποιημένη μορφή ενός αριθμού αρχείων (που μπορεί να
περιλαμβάνει και καταλόγους):
Δημιουργία ενός tar file: ας πούμε οτι έχουμε ένα κατάλογο που ονομάζεται myproject
και μέσα σε αυτόν το κατάλογο υπάρχουν τα αρχεία: main.c, stack.c, stack.h,
main.o, stack.o, a.out kai MyDatafile.
Για να δημιουργήσετε ένα αρχείο tar δώστε την εντολή
your_machine_prompt:> tar cvf mine.tar myproject
Το νέο mine.tar θα έχει όλες τις πληροφορίες που υπάρχουν στον κατάλογο myproject
και όλα τα σχετικά αρχεία.
Αυτό διευκολύνει τα πράγματά αν χρειάζεται να μετακινηθεί ένας μεγάλος αριθμός
από λογικά συνδεδεμένα αρχεία/κατάλογους μεταφέροντας απλά ένα file (το tar file
εμπεριέχει όλη την πληροφορία της ιεραρχίας καθώς και την δομή της).
Βγάζοντας πληροφορία από ενα tar-file:
για να κάνουμε την αντίστροφη διαδικασία ανάκλησης αρχείων/καταλόγων δίνουμε
την εντολή:
your_machine_prompt:> tar -xvf mine.tar
που θα έχει σαν αποτέλεσμα την δημιουργία ενός κατάλογου (στην νέα θέση στο σύστημα
αρχείων) που ονομάζεται myproject και περιέχει όλα τα αρχεία
:main.c, stack.c, stack.h, main.o, a.out, MyDatafile.
Μεταφορές Αρχείων από και προς τα Συστήματα Unix tou Τμήματος (pubsrv1.di.uoa.gr/linuxXX.di.uoa.gr):
Μπορείτε να κάνετε την ανάπτυξη των ασκήσεων σας σε "απομακρυσμένα" συστήματα
αλλά θα πρέπει ΠΑΝΤΑ το τελικό αποτέλεσμα να ΤΡΕΧΕΙ στα συστήματα Unix (Solaris/Linux)
του τμηματος. Τέτοιες μεταφορές μπορούν εύκολα να γίνουν με: sftp η scp
ad[-*AT*-]di.uoa.gr