ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΥΣΤΗΜΑΤΟΣ

Χειμερινό Εξάμηνο 2007-08

Διαλέξεις Μαθήματος

17/10

Διαδικαστικά θέματα (κατανομή βαθμολογίας, εργαστήρια, σελίδα μαθήματος, mailing list). Περιεχόμενο του μαθήματος. Τι είναι λειτουργικό σύστημα. Γενικά περί Unix. Γενικά χαρακτηριστικά. Ιεραρχικό σύστημα αρχείων του Unix. Οργάνωση καταλόγων. Λογαριασμός χρήστη. Αρχική σύνδεση. Δικαιώματα προστασίας (ή εξουσιοδοτήσεις). Βασικές εντολές πλοήγησης και δημιουργίας (man, ls, pwd, cd, mkdir, rmdir, cp, mv, rm, cat, lpr, vi). Σκληροί και συμβολικοί σύνδεσμοι. Εντολές chmod, more, grep, wc, sort, touch και ln. Παραδείγματα δημιουργίας αρχείων, συνδέσμων. Τι γίνεται αν τροποποιηθεί (στο περιεχόμενο ή στα δικαιώματα) ή μετακινηθεί το αρχείο ή ο σύνδεσμος ? Παλιά θέματα.

18/10

Εντολές επεξεργασίας αρχείων (cut, tr, head, tail). Άλλες εντολές (echo, pwd, date, passwd, hostname, whoami, lpq, lprm, cmp, diff, umask). Προκαθορισμένη είσοδος, έξοδος και έξοδος για διαγνωστικά μηνύματα. Ανακατευθύνσεις. Φίλτρα και σωληνώσεις. Ακολουθίες και ομάδες εντολών. Μεταχαρακτήρες (*,?,[a-z]…). Παραδείγματα. Μεταβλητές περιβάλλοντος (PATH, LD_LIBRARY_PATH, TERM). Τοπικές μεταβλητές. Μηχανισμός ιστορίας. Προσαρμογές εντολών (aliases). Εντολές διεργασιών (bg, fg, ps, jobs, kill, top). Συμπίεση και αποσυμπίεση αρχείων. Εντολές tr, colrm, find, last, script, sleep, clear.

24/10

Περιγραφή Makefile. Εισαγωγικά για προγραμματισμό σε κέλυφος Bash. Παράμετροι προγράμματος, μεταβλητές, πράξεις μεταξύ αριθμών με χρήση των προγραμμάτων expr, bc. Τιμή εξόδου προγράμματος.

25/10

Συνθήκες αριθμητικές, για αρχεία, για ακέραιους, για strings, λογικές συνθήκες. Δομές ελέγχου if, case, for, while. Εντολές break, continue, set. Παραδείγματα.

31/10

Συνέχεια παραδειγμάτων. Εντολές shift, du. Χρήση πινάκων. Διάβασμα αρχείων γραμμή-γραμμή.

1/11

Χειρισμός λαθών. Μεταβλητή errno. Συνάρτηση perror. Είσοδος/έξοδος χαμηλού επιπέδου. Εντολές open, read, write, close, dup, dup2. Παραδείγματα. Συναρτήσεις stat, ctime, opendir, readdir, closedir. Παραδείγματα. Συναρτήσεις mkdir, rmdir, link, unlink, rename, chmod, symlink, readlink.

7/11

Σήματα: τι είναι, τρόποι αντιμετώπισης. Είδη σημάτων. Εντολές kill, pause, raise, alarm, signal. Μάσκες σημάτων και χειρισμός μασκών. Παραδείγματα. Εντολή sigaction για ορισμό δράσης σε σήματα. Εντολές sigsuspend, sigwait. Παραδείγματα. 

8/11

Χρήση valgrind για εύρεση λαθών προγραμμάτων ως προς την προσπέλαση περιοχών μνήμης. Σχεδίαση στην οθόνη με τη βιβλιοθήκη curses. Παραδείγματα.

14/11

Λύση πρώτης σειράς ασκήσεων

15/11

Δεν έγιναν μαθήματα λόγω επετείου πολυτεχνείου

21/11

Τι είναι διεργασία. Εικόνα προγράμματος. Όρια διεργασιών. Συναρτήσεις getrlimit, setrlimit. Συναρτήσεις getpid, getppid, exit. Δημιουργία διεργασίας με τη συνάρτηση fork. Παραδείγματα. Συναρτήσεις wait, waitpid. Ορφανές διεργασίες.

22/11

Ζωντανές νεκρές διεργασίες. Παραδείγματα. Κλήσεις execl, execv, execlp, execvp. Σωλήνες. Συμπεριφορά read, write σε σωλήνες. Παραδείγματα.

28/11

Παραδείγματα ανακατεύθυνσης εισόδου/εξόδου με χρήση συναρτήσεων της οικογένειας exec. Επικοινωνία διεργασιών με υποδοχές. Πρωτόκολλο TCP.

29/11

Πρωτόκολλο UDP. Διαφορές με το πρωτόκολλο TCP. Διαφορετικές οργανώσεις του εξυπηρετητή.

5/12

Συναρτήσεις βιβλιοθήκης htons, htonl, ntohs, ntohl, gethostbyname, gethostbyaddr, socket, bind, listen, accept, connect. Διαφορές και ομοιότητες δομών sockaddr και sockaddr_in. Συναρτήσεις βιβλιοθήκης bzero, bcopy. Δομή TCP επικοινωνίας. Παραδείγματα.

6/12

Δομή UDP επικοινωνίας. Συναρτήσεις βιβλιοθήκης recvfrom, sendto. Παραδείγματα.

12/12

Η έννοια των νημάτων. Διαφορές νημάτων/διεργασιών. Συναρτήσεις βιβλιοθήκης strerror, pthread_create, pthread_exit, pthread_join, pthread_self, pthread_detach.

13/12

Παραδείγματα. Εισαγωγή στους δυαδικούς σηματοφορείς (mutexes). Συνάρτηση βιβλιοθήκης pthread_mutex_init. 

19/12

Συναρτήσεις βιβλιοθήκης pthread_mutex_lock, pthread_mutex_unlock, pthread_mutex_destroy, pthread_mutex_trylock. Παραδείγματα. Μεταβλητές συνθήκης. Συναρτήσεις βιβλιοθήκης pthread_cond_init, pthread_cond_wait, pthread_cond_destroy, pthread_cond_signal, pthread_cond_broadcast. Παραδείγματα. 

20/12

Συνέχεια συζήτησης για μεταβλητές συνθήκης. Παραδείγματα. Ασφάλεια νημάτων. Παραδείγματα Παραγωγού-Καταναλωτή και παρουσίαση διαφόρων μεθόδων αντιμετώπισης παρόμοιων εφαρμογών.

09/01

Επικοινωνία διεργασιών a la System V. Συνάρτηση βιβλιοθήκης ftok. Ουρές μηνυμάτων. Συναρτήσεις βιβλιοθήκης msgget, msgrcv, msgsnd, msgctl. Δομή msqid_ds. Παραδείγματα. Κοινή μνήμη. Συναρτήσεις βιβλιοθήκης shmget, shmat, shmdt, shmctl. Δομή shmid_ds. Παραδείγματα.

10/01

Σηματοφόροι. Συναρτήσεις βιβλιοθήκης semget, semop, semctl. Δομή semid_ds. Παραδείγματα.

16/01

Επαναληπτικές Ασκήσεις. Θέματα συζήτησης: Κέλυφος Bash, επικοινωνία διεργασιών, όρια μηνυμάτων.

17/01

Επαναληπτικές Ασκήσεις. Θέματα συζήτησης: Ανακατευθύνσεις εισόδου/εξόδου με σωλήνες, συγχρονισμός νημάτων, επιστροφή τιμών διεργασιών/νημάτων, διαφορές μεταξύ διεργασιών/νημάτων σχετικά με τη δυνατότητα επικοινωνίας μέσω κοινών μεταβλητών.