UNIVERSITY OF ATHENS
Department of Informatics & Telecommunications
Spring Semester 2024
Mondays 13:00-15:00 in Room A2 and Tuesdays 11:00-13:00 in Room A2
Instructor: Mema Roussopoulou
Email: mema -at* di *dot- uoa -dot* gr
Office: A38
Office hours: Tuesdays 13:00-14:00
Announcements
1) Please sign up on the Piazza class forum here.
We will use the class forum to make any announcements regarding homeworks, lectures, exams, etc. You are required to read the class forum regularly.
Περιγραφή Μαθήματος
Σε αυτό το μάθημα θα μελετήσουμε το Λειτουργικό Σύστημα Unix από τη πλευρά του χρήστη. Τα θέματα που θα καλύψουμε συμπεριλαμβάνουν:
This class will also include an introduction to security including the concepts of software vulnerabilities and secure programming.
Assignments
Στο μάθημα αυτό θα έχουμε 2 εργασίες (προγραμματισμού). Οι ασκήσεις είναι ατομικές, εκτός αν ορίζεται διαφορετικά. Πρέπει να διεκπεραιώνονται από ένα φοιτητή/φοιτήτρια, αυτ-όν/-ή που τις παραδίδει. Ανταλλαγή απόψεων είτε δημόσια (μέσω της λίστας, στα εργαστήρια, στο μάθημα) με συναδέλφους, με τον μεταπτυχιακό συνεργάτη του μαθήματος και με τον διδάσκοντα, είτε ιδιωτικά με φίλους και γνωστούς, σχετικά με τις ασκήσεις, επιτρέπονται και, μάλλον, επιβάλλονται. Αυτό που αυστηρά απαγορεύεται είναι η αντιγραφή και παράδοση προγραμμάτων που δεν έχουν γίνει από τον/την παραδίδ-οντα/-ουσα την άσκηση. Όποι-ος/-α αποδεδειγμένα ενέχεται σε τέτοιες καταστάσεις, είτε δίνει, είτε παίρνει έτοιμο κώδικα, θα μηδενιστεί.
Βιβλία για το Κ24: · M.J.
Rochkind, Advanced
Unix Programming,
Prentice-Hall Software Series, · Kay
Robbins, Steven Robbins, "Unix
Systems Programming: Communication, Concurrency, and Threads", Prentice Hall PTR, 2003. Διαφάνειες: Οι διαφάνειες που
χρησιμοποιούνται σε αυτό το μάθημα είναι βασισμένες σε μεγάλο βαθμό στα σετ
διαφανειών που χρησιμοποίησαν οι κκ. Αλέξης Δελής και Αντώνης Δελιγιαννάκης σε
προηγούμενα εξάμηνα. Η αρχική πηγή του
περιεχομένου των διαφανειών είναι οι σημειώσεις του κ. Σταματόπουλου. Ευχαριστίες στον κ. Σταματόπουλο. Θα τις βρείτε παρακάτω. Αλλες Χρήσιμες Αναφορές: · Δωρεάν διαθεσιμότητα
του Linux και FreeBSD: Ubuntu, Debian, Suse, RedHat, και FreeBSD · Χρήσιμο F.A.Q.
για την γλώσσα προγραμματισμού C - faq-c · Εισαγωγικά tutorials
για Unix είναι εδώ
και εδώ . · Tutorials
για το πως να κάνετε compile προγράμματα στο Unix Tut-A, Tut-B,
και Tut-C · Οδηγίες για όσους
γράφουν C++ · A. D.
Downey, The
Little Book of Semaphores,
GreenTree Press, 2007. Grading
You may submit programming assignments at most three days after the deadline, with a penalty of
5% deduction per day. For example if you submit an assignment two days late, the maximum possible
grade you can receive for that assignment is 90%. Programming assignments will not be accepted
if they are submitted more than three days past the deadline.
There will be required oral examinations for each programming assignment. You will be examined via an online video conferencing tool (skype, zoom, etc.) and you are required to have your webcam enabled during the exam and to show photo ID.
Course Policy Assignments are due on the day listed on the class schedule below.
Should there be a change in deadline, this will be announced on eclass.
Cheating will NOT be tolerated and will result in immediate
failure of the class. Consider yourself warned. NO LAPTOP OR MOBILE PHONE USE ALLOWED IN CLASS. How to Submit Assignments: Create a tar-ball with all of your work
(source files, header files, Makefile,
README-file, etc) and give the tar file a name that easily distinguishes you
(e.g., "MemaRoussopoulou-projectX.tar")
where X is the number of your assignment (e.g., project 1).
· Upload your assignment to eclass. · You may submit (i.e., upload) your assignment multiple times before the deadline. The last submission is the one that is graded. · You must always include a README file with instructions for the grader of your assignment (e.g., how to make and run the assignment, design choices made, etc.)
Separate Compilation - C
(gcc): Tar-balls: · Δημιουργία ενός tar file: ας πούμε οτι έχουμε
ένα κατάλογο που ονομάζεται myproject και μέσα σε
αυτόν το κατάλογο υπάρχουν τα αρχεία: main.c, stack.c,
stack.h, main.o,
stack.o, a.out kai MyDatafile.
Για να δημιουργήσετε ένα αρχείο tar δώστε την εντολή · Βγάζοντας πληροφορία
από ενα tar-file: για
να κάνουμε την αντίστροφη διαδικασία ανάκλησης αρχείων/καταλόγων δίνουμε την
εντολή: Μεταφορές
Αρχείων
από και προς τα Συστήματα Unix του Τμήματος (iokasti.di.uoa.gr/linuxXX.di.uoa.gr): Date Topic Handouts, Assignments Lecture Notes Monday 4/3 Class overview. Topic
1: Intro to Unix, basic commands, file
processing, C shell, metacharacters, environment variables, process
management, makefiles. Class overview (pdf) Topic 1 (pdf) Tuesday 5/3 Topic
1 (cont'd)
Monday 11/3 Topic 1 (cont'd)
Tuesday 12/3 Topic 2 (cont'd). Topic 2 (pdf) Topic 2 (Sample
bash scripts) Tuesday 19/3 Topic 3:
Error handling, perror, errno, low-level I/O, system calls link, unlink,
mkdir, rmdir, rename, symlink, readlink, signals, signal handling actions,
syscalls raise, pause, alarm. Topic 3 (pdf) Topic 3 (Topic
3 sample programs ) Tuesday 26/3 Topic 3 (cont'd) Monday 1/4 Topic 3 (cont'd) Tuesday 2/4 Topic 3 (cont'd). Monday 8/4 Topic 4:
Process: concept, process state machine execution, syscalls getpid, getppid,
exit, fork, wait, waitpid, exec, orphan processes, zombie processes, pipes,
file descriptors after exec Topic 4 (pdf) Topic 4 (Topic
4 sample programs ) Tuesday 9/4 Topic 4 (cont'd). Monday 15/4 Topic 4 (cont'd).   Tuesday 16/4 Topic 5:
Interprocess Communication across the Net: client-server model, handling
client requests, socket syscalls, bind, connect, listen, accept, bzero,
bcopy, TCP, UDP Topic 5 (pdf) Topic 5 (Topic
5 sample programs ) Monday 22/4 Topic 5 (cont’d) Tuesday 23/4 Topic 5 (cont'd) Monday 29/4-Tuesday 7/5 Easter break – no class. Monday 13/5 Topic 6:
Threads: concept, thread creation, termination, going from single-threaded to
multi-threaded, synchronization, binary semaphores, conditional variables,
producer-consumer problem Topic 6 (pdf) Topic 6 (Topic
6 sample programs ) Tuesday 14/5 Monday 20/5 Tuesday 21/5 Topic 6 (cont'd) Monday 27/5 Topic 6 (Threads cont'd)
Topic 6 (cont'd) Monitor-style programming (acks to Y. Smaragdakis) ) Tuesday 28/5 Topic 6 (cont'd) Monday 3/6 Topic 6 (cont'd) Tuesday 4/6 Topic 7:
Interprocess Communication: System V,
message queues, shared memory, semaphores, deadlock Topic
7 (pdf) Topic 7 (Topic
7 sample programs ) Monday 10/6 Topic 7 (cont’d) Tuesday 11/6 Topic 7 (cont’d)
Class Forum
You are required to follow the class forum. Find our class forum page
here.
Programming Exam: 20%
Programming Assignments: 30%
Final Exam: 50%
Εδώ είναι ένα 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-file ειναι μια
επιπεδοποιημένη μορφή ενός αριθμού αρχείων (που μπορεί να περιλαμβάνει και
καταλόγους):
your_machine_prompt:>
tar cvf mine.tar myproject
Το νέο mine.tar θα
έχει όλες τις πληροφορίες που υπάρχουν στον κατάλογο myproject
και όλα τα σχετικά αρχεία. Αυτό διευκολύνει τα πράγματά αν χρειάζεται να
μετακινηθεί ένας μεγάλος αριθμός από λογικά συνδεδεμένα αρχεία/κατάλογους
μεταφέροντας απλά ένα file (το tar file εμπεριέχει όλη την πληροφορία της
ιεραρχίας καθώς και την δομή της).
your_machine_prompt:>
tar xvf mine.tar
που θα έχει σαν αποτέλεσμα την δημιουργία ενός κατάλογου (στην νέα θέση στο
σύστημα αρχείων) που ονομάζεται myproject και
περιέχει όλα τα αρχεία :main.c,
stack.c, stack.h,
main.o, a.out,
MyDatafile.
Μπορείτε να κάνετε την ανάπτυξη των ασκήσεων σας σε
"απομακρυσμένα" συστήματα αλλά θα πρέπει ΠΑΝΤΑ το τελικό αποτέλεσμα
να ΤΡΕΧΕΙ στα συστήματα Unix (Solaris/Linux)
του τμήματος. Τέτοιες μεταφορές μπορούν εύκολα να γίνουν με: sftp
η scp
Syllabus & Schedule (tentative)
Topic2: Bash shell programming: parameters,
arithmetics, expr, conditional statements, if stmt, case stmt, for loops,
while loops, sample script programs.
Topic 6 (cont'd)
Topic 6 (cont'd)