18/4/2007 Διαδικαστικά θέματα. Περιεχόμενο του μαθήματος. Επανάληψη περί διεργασιών. Συζήτηση επί απλών προγραμμάτων με παραδείγματα χρήσης των κλησεων συστήματος fork, execXX, getpid, getppid, wait, open και dup2.
24/4/2007 Γενικά περί λειτουργικών συστημάτων και ιστορική αναδρομή του Unix. Γενικά χαρακτηριστικά. Ιεραρχικό σύστημα αρχείων του Unix. Λογαριασμός χρήστη. Αρχική σύνδεση. Διάφορες εντολές (man, ls, pwd, cd, mkdir, rmdir, cp, mv, rm, cat, lpr και vi). Δικαιώματα προστασίας (ή εξουσιοδοτήσεις). Οργάνωση καταλόγων και I-κόμβων. Σκληροί σύνδεσμοι. Εντολές chmod και ln.
25/4/2007 Συνέχεια περί εξουσιοδοτήσεων και σκληρών συνδέσμων. Συμβολικοί σύνδεσμοι. Επίλυση προηγούμενων θεμάτων εξετάσεων.
1/5/2007 Πρωτομαγιά. Δεν έγινε μάθημα.
2/5/2007 Αλλες εντολές (more, grep, wc, sort, touch, echo, date, passwd, hostname, whoami, lpq, lprm, cmp, diff, head και tail). Κέλυφος C. Προκαθορισμένη είσοδος, έξοδος και έξοδος για διαγνωστικά μηνύματα. Ανακατευθύνσεις. Φίλτρα και σωληνώσεις. Ακολουθίες και ομάδες εντολών. Περί umask. Στοίβες καταλόγων. Μεταχαρακτήρες.
8/5/2007 Συνέχεια περί μεταχαρακτήρων στα κελύφη. Επίλυση προηγούμενων θεμάτων εξετάσεων. Μεταβλητές περιβάλλοντος. Τοπικές μεταβλητές. Μηχανισμός ιστορίας. Προσαρμογές εντολών (aliases). Διάφορες εντολές (ps, jobs, kill, bg και fg). Εντολή find και χρήση της με μεταχαρακτήρες στο κριτήριο "-name". Κι άλλες εντολές (du, file, od, tr, colrm, last, script, sleep και clear). Προγράμματα mail και cc. Αναφορά στα προγράμματα sed και awk.
9/5/2007 Φοιτητικές εκλογές. Δεν έγινε μάθημα.
15/5/2007 Προγραμματισμός κελύφους Bourne. Γενικά. Ορίσματα προγράμματος. Μεταβλητές. Συνθήκες. Δομές ελέγχου. Υπολογισμός εκφράσεων.
16/5/2007 Προγράμματα κελύφους Bourne lsdir, math, once, factorial, revstrs και maxsize.
22/5/2007 Γενικά περί προγραμματισμού λειτουργιών του Unix σε C. Χειρισμός λαθών. Συνάρτηση perror. Πρόγραμμα errors_demo.c. Διαχείριση διεργασιών. Κλήση exit. Πρόγραμμα exit_code.c. Κλήσεις fork, getpid και getppid. Πρόγραμμα fork_a_process.c. Ορφανές διεργασίες. Πρόγραμμα orphan_process.c. Κλήση wait. Πρόγραμμα wait_usage.c.
23/5/2007 Ζωντανές-νεκρές διεργασίες. Πρόγραμμα zombie_process.c. Κλήσεις execl, execv, execlp και execvp. Προγράμματα execl_demo.c και execvp_demo.c. Πρόγραμμα kind_of_shell.c. Πρόγραμμα process_tree.c. Εισαγωγή στην αποστολή/παραλαβή σημάτων.
29/5/2007 Συνέχεια περί αποστολής/παραλαβής σημάτων. Συνάρτηση alarm. Πρόγραμμα alarm_demo.c. Κλήση signal. Πρόγραμμα critical.c. Κλήση pause. Πρόγραμμα new_handler.c. Κλήση kill. Πρόγραμμα pulse.c. Πρόγραμμα timeout.c. Πρόγραμμα persistent.c. Είσοδος/έξοδος χαμηλού επιπέδου. Κλήσεις open, read, write και close.
30/5/2007 Πρόγραμμα io_demo.c. Κλήσεις dup και dup2. Πρόγραμμα duplicate_fd.c. Πρόγραμμα append_file.c. Γενικά περί επικοινωνίας μεταξύ διεργασιών μέσω σωλήνων και υποδοχών. Ομοιότητες και διαφορές. Κλήση pipe. Πρόγραμμα pipe_demo.c. Πρόγραμμα connect.c. Υλοποίηση σωλήνωσης δύο εντολών χωρίς ορίσματα, όπως γίνεται από το κέλυφος.
5/6/2007 Πεδία υποδοχών και είδη υποδοχών. Διάγραμμα TCP επικοινωνίας client/server. TCP επικοινωνία client/server στο πεδίο του Internet. Συναρτήσεις htons, htonl, ntohs και ntohl. Συναρτήσεις gethostbyname και gethostbyaddr. Κλήσεις socket, bind, listen, accept και connect. Συναρτήσεις bzero και bcopy. Προγράμματα int_str_server.c και int_str_client.c.
6/6/2007 TCP επικοινωνία client/server στο πεδίο του Unix. Προγράμματα un_str_server.c και un_str_client.c. Αποφυγή δημιουργίας zombie διεργασιών-παιδιών του server. Διάγραμμα UDP επικοινωνίας client/server. UDP επικοινωνία client/server στο πεδίο του Internet και στο πεδίο του Unix. Κλήσεις recvfrom, sendto και getsockname. Προγράμματα int_dgr_server.c και int_dgr_client.c. Προγράμματα un_dgr_server.c και un_dgr_client.c.
12/6/2007 Γενικά περί νημάτων. Δημιουργία και τερματισμός νημάτων. Συναρτήσεις pthread_create, pthread_exit, pthread_join, pthread_self και pthread_detach. Πρόγραμμα create_a_thread.c. Πρόγραμμα detached_thread.c. Πρόγραμμα random_sleeps.c.
13/6/2007 Συγχρονισμός νημάτων με δυαδικούς σηματοφόρους. Συναρτήσεις pthread_mutex_init, pthread_mutex_lock, pthread_mutex_unlock και pthread_mutex_destroy. Πρόγραμμα sync_by_mutex.c. Πρόγραμμα sum_of_squares.c. Σηματοφόροι και μεταβλητές συνθήκης. Συναρτήσεις pthread_cond_init, pthread_cond_wait, pthread_cond_signal και pthread_cond_broadcast. Πρόγραμμα mutex_condvar.c. Πρόγραμμα counter.c. 'Αλλες συναρτήσεις διαχείρισης νημάτων.
19/6/2007 Επικοινωνία μεταξύ διεργασιών a la System V. Ουρές μηνυμάτων. Κλήσεις msgget, msgrcv, msgsnd και msgctl. Προγράμματα msgq_server.c και msgq_client.c. Κοινή μνήμη. Κλήσεις shmget, shmat, shmdt και shmctl. Σηματοφόροι. Κλήσεις semget, semop και semctl. Προγράμματα shm_sem_server.c και shm_sem_client.c.
20/6/2007 Προγραμματιστική διαχείριση συστήματος αρχείων. Κλήσεις stat και fstat. Συνάρτηση ctime. Πρόσβαση σε περιεχόμενα καταλόγων. Συναρτήσεις opendir, readdir και closedir. Πρόγραμμα myls. Κλήσεις unlink, link, mkdir, rmdir, rename, chmod, fchmod, symlink και readlink. Οδηγίες για τις εξετάσεις. Επίλυση προηγούμενων θεμάτων εξετάσεων.
26/6/2007 Επίλυση προηγούμενων θεμάτων εξετάσεων.
27/6/2007 Επίλυση προηγούμενων θεμάτων εξετάσεων.