UNIVERSITY OF ATHENS
Department of Informatics & Telecommunications

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

Spring Semester 2025
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

EDIP: Nikos Perdikopanis
Email: nikosp -at* di *dot- uoa -dot* gr
Office: A33


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 από τη πλευρά του χρήστη.  Τα θέματα που θα καλύψουμε συμπεριλαμβάνουν:

  1. Βοηθητικά προγράμματα του Unix
  2. Προγραμματισμός σε κελύφη
  3. Προγραμματισμός λειτουργιών συστήματος σε C για
    1. χειρισμό λαθών
    2. δημιουργία και τερματισμό διεργασιών
    3. αποστολή/παραλαβή σημάτων
    4. είσοδο/έξοδο χαμηλού επιπέδου
    5. επικοινωνία μεταξύ διεργασιών μέσω
      1. σωλήνων
      2. υποδοχών
      3. ουρών μηνυμάτων
      4. κοινής μνήμης και σηματοφόρων
    6. δημιουργία, τερματισμό και συγχρονισμό νημάτων
    7. διαχείριση συστήματος αρχείων

This class will also include an introduction to security including the concepts of software vulnerabilities and secure programming.


Assignments

Στο μάθημα αυτό θα έχουμε 2 εργασίες (προγραμματισμού).   Οι ασκήσεις είναι ατομικές, εκτός αν ορίζεται διαφορετικά. Πρέπει να διεκπεραιώνονται από ένα φοιτητή/φοιτήτρια, αυτ-όν/-ή που τις παραδίδει. Ανταλλαγή απόψεων είτε δημόσια (μέσω της λίστας, στα εργαστήρια, στο μάθημα) με συναδέλφους, με τον μεταπτυχιακό συνεργάτη του μαθήματος και με τον διδάσκοντα, είτε ιδιωτικά με φίλους και γνωστούς, σχετικά με τις ασκήσεις, επιτρέπονται και, μάλλον, επιβάλλονται. Αυτό που αυστηρά απαγορεύεται είναι η αντιγραφή και παράδοση προγραμμάτων που δεν έχουν γίνει από τον/την παραδίδ-οντα/-ουσα την άσκηση. Όποι-ος/-α αποδεδειγμένα ενέχεται σε τέτοιες καταστάσεις, είτε δίνει, είτε παίρνει έτοιμο κώδικα, θα μηδενιστεί.



Class Forum

You are required to follow the class forum. Find our class forum page here.


Βιβλία για το Κ24:

·  M.J. Rochkind, Advanced Unix Programming, Prentice-Hall Software Series, Englewood Cliffs, NJ, 2004.

·  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 Standard Library

·  Οδηγίες για όσους γράφουν C++

·  A. D. Downey, The Little Book of Semaphores, GreenTree Press, 2007.


Grading

Programming Exam: 20%
Programming Assignments: 30%
Final Exam: 50%

There will be required oral examinations for each programming assignment.


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.



Syllabus & Schedule (tentative)

Date

Topic

Handouts, Assignments

Lecture Notes

Monday 17/2

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 18/2

 

Topic 1 (cont'd)

 

 

Monday 24/2

Topic 1 (cont'd)
Topic2: Bash shell programming: parameters, arithmetics, expr, conditional statements, if stmt, case stmt, for loops, while loops, sample script programs.

 

 

Tuesday 25/2

Topic 2 (cont'd).

 

Topic 2 (pdf)

Topic 2 (Sample bash scripts)

Tuesday 4/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 )

Monday 10/3

Topic 3 (cont'd)

 

 

Tuesday 11/3

Topic 3 (cont'd)

 

 

Monday 17/3

Topic 3 (cont'd).

 

 

Tuesday 18/3

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 )

Monday 24/3

Topic 4 (cont'd).

 

 

Monday 31/3

Topic 4 (cont'd).

 

 

Tuesday 1/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 7/4

Topic 5 (cont’d)

 

 

Tuesday 8/4

Topic 5 (cont'd)

 

 

Monday 14/4-Tuesday 22/4

Easter break – no class.

 

 

Monday 28/4

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 29/4

Topic 6 (cont'd)

 

 

Monday 5/5

Topic 6 (cont'd)

 

 

Tuesday 6/5

Topic 6 (cont'd)

 

Monday 12/5

Topic 6 (Threads cont'd)

Topic 6 (cont'd) Monitor-style programming (acks to Y. Smaragdakis) )

 

Tuesday 13/5

Topic 6 (cont'd)

 

 

Monday 19/5

Topic 6 (cont'd)

 

 

Tuesday 20/5

Topic 7: Interprocess Communication:  System V, message queues, shared memory, semaphores, deadlock

 

 Topic 7 (pdf)

Topic 7 (Topic 7 sample programs )

Monday 26/5

Topic 7 (cont’d)

 

 

Tuesday 27/5

Topic 7 (cont’d)