Κ24: Προγραμματισμός Συστήματος

Πληροφορίες Μαθήματος

  • Εαρινό εξάμηνο - Τμήμα άρτιων αριθμών μητρώου.
  • Μάθημα: Δευτέρα 13:00-15:00 (A1) και Τρίτη 11:00-13:00 (A1).
  • Διδάσκων: Αλέξανδρος Ντούλας
    (antoulas -*at*- di -*dot*- uoa +*dot*+ gr)
  • Απαιτήσεις μαθήματος
  • Forum μαθήματος στο piazza

Περιγραφή Μαθήματος

Ο στόχος αυτού του μαθήματος είναι να εξετάσει σε βάθος το περιβάλλον Linux ως περιβάλλον ανάπτυξης. Θα εξετάσουμε την προγραμματιστική διεπαφή (API) του Linux για τις γλώσσες C/C++ καθώς επίσης και το κέλυφος (shell) του Linux. Θα καλύψουμε θέματα όπως: βοηθητικά προγράμματα του Linux, προγραμματισμός σε κέλυφος (shell programming), γλώσσες σεναρίων (script languages), προγραμματισμός λειτουργιών συστήματος σε C/C++ για χειρισμό λαθών, δημιουργία και τερματισμός διεργασιών, αποστολή/παραλαβή σημάτων, είσοδος/έξοδος χαμηλού επιπέδου επικοινωνία μεταξύ τοπικών διεργασιών, δημιουργία, τερματισμός και συγχρονισμό νημάτων, καθώς επίσης και μηχανισμοί απομακρυσμένης επικοινωνίας. Από την φύση του, το μάθημα αυτό χρειάζεται αυτενέργεια και συνεχή προσωπική προσπάθεια. Θα πρέπει να γνωρίζετε δομές δεδομένων και να έχετε ολοκληρώσει το μάθημα Κ22: Λειτουργικά Συστήματα. Το αποτέλεσμα της προγραμματιστικής δουλειάς σας θα πρέπει να τρέχει στα Linux Workstations του τμήματος.


Ανακοινώσεις

  • 18/03: Το μάθημα της Δευτέρας 21 Μαρτίου δε θα πραγματοποιηθεί. Κανονικά θα συνεχίσει το μάθημα την Τρίτη 21 Μαρτίου.
  • 21/02: Το μάθημα ξεκινάει Τρίτη 22 Φεβρουαρίου.


Βιβλιογραφία


Syllabus & Πρόγραμμα

Date Topic Handouts/Assignments Slides/Notes
Tue, Feb 22 Course logistics. Introduction to Unix, basic commands lecture 01
Mon, Feb 28 File processing, basic commands (cont'd)
lecture 02
Tue, Mar 01 csh, bash, environment variables,
input/output, process management, makefiles.
Mon, Mar 07 No class - Καθαρά Δευτέρα
Tue, Mar 08 Shell scripting, parameters, simple arithmetic, if, case, sample programs lecture 04
Mon, Mar 14 Shell scripting, for, while, file contents, exec
Tue, Mar 15 Error handling, Low-level I/O lecture 06
Mon, Mar 21 Low-level I/O, signals
Tue, Mar 22 Processes, Process Control lecture 08
Mon, Mar 28 Process Control, Pipes
Tue, Mar 29 Internetworking with Sockets lecture 10
Mon, Apr 04 Internetworking with Sockets
Tue, Apr 05 Threads lecture 12
Mon, Apr 11 Threads
Tue, Apr 12 IPC, Message Queues, Shared Memory lecture 14
Mon, Apr 18 No class - Πάσχα
Tue, Apr 19 No class - Πάσχα
Mon, Apr 25 No class - Πάσχα
Tue, Apr 26 No class - Πάσχα
Mon, May 02 Shared Memory, Semaphores lecture 15
Tue, May 03 Semaphores, Locking
Mon, May 09 Advanced Threads, Monitors lecture 17
Tue, May 10 Semaphores, Locking
Mon, May 16 Advanced Threads, Monitors lecture 17
Tue, May 17 sed lecture 18
Mon, May 23 awk lecture 19
Tue, May 24 Επανάληψη
Mon, May 30 Επανάληψη
Tue, May 31 Επανάληψη


Οδηγίες Παράδοσης των Ασκήσεων

  • Οι προγραμματιστικές ασκήσεις δεν παραδίδονται μέσω email. Ασκήσεις που στέλνονται μέσω email θεωρούνται πως δεν έχουν υποβληθεί. Η όλη διαδικασία είναι στο πνεύμα του προγραμματισμού συστήματος που είναι και το θέμα του μαθήματος και είναι αρκετά απλή.
  • Τις ασκήσεις πρέπει να τις παραδώσετε στην ώρα τους, δηλαδή μέχρι τις 23:59:59 της ημέρας που έχει ανακοινωθεί ως προθεσμία για την παράδοση της άσκησης. Παραδόσεις μπορείτε να κάνετε και αργότερα όμως θα υπάρχει η αντίστοιχη ποινή που περιγράφεται στην εκάστοτε άσκηση.
  • Το Unix user ID σας είναι sdiXYABCDE όπου XY είναι ο χρόνος εγγραφής και ABCDE είναι τα 5 τελευταία ψηφία του Α.Μ. σας. Εάν ξεκινήσατε σπουδές έως και το 2010 έχετε Unix user ID της μορφής stdXYABC όπου XY είναι ο χρόνος εγγραφής και ABC τα 3 τελευταία ψηφία του Α.Μ.
  • Για οποιοδήποτε πρόβλημα σχετικά με τα μηχανήματα Unix/Linux του τμήματος θα πρέπει να επικοινωνήσετε απευθείας με τους administrators στο admin -*at*- di -*dot*- uoa +*dot*+ gr.
  • Βήματα για την υποβολή των ασκήσεων:
    • Πριν ξεκινήσετε την άσκηση βεβαιωθείτε πως έχετε χώρο στο δίσκο. Αυτό γίνεται με την εντολή quota -v στο home directory σας.
    • Βάζετε όλο τον κώδικα σε ένα directory. Βεβαιωθείτε πως ο κώδικας κάνει compile. Θα πρέπει να έχετε ένα Makefile, οπότε οι εντολές make και make clean θα πρέπει να δουλεύουν. Βεβαιωθείτε πως έχετε στο directory μόνο κώδικα, README, Makefile και άλλα αρχεία που χρειάζεται ο κώδικάς σας αλλά όχι τα binaries. Ο κώδικάς σας θα γίνει compile από την αρχή.
    • Φτιάχνετε ένα tar-ball με το directory στο οποίο έχετε τον κώδικά σας. Για παράδειγμα αν έχετε τον κώδικα στο directory projectX/ τότε δημιουργείτε το tar-ball ως εξής:

      (πριν κάνετε το ο,τιδήποτε φυσικά βεβαιωθείτε πως έχετε αντίγραφο του κώδικά σας π.χ. cp -r project2 project2.bak)

      tar cvf FirstLast-projectX.tar projectX

    • Αλλάξτε τα permissions του tar-ball που πρόκειται να υποβάλλετε.

      chmod 755 FirstLast-projectX.tar

    • Υποβάλλετε το tar-ball προς βαθμολόγηση στο eClass
      Όπου First είναι το όνομά σας, Last είναι το επώνυμό σας, Χ είναι είναι ο αριθμός του project (π.χ. 1, 2, 3) και sdiABCDEFG είναι το user ID σας.
    • Καλό θα είναι να έχετε ένα backup .tar της άσκησής σας όπως ακριβώς αυτή υποβλήθηκε σε κάποιο εύκολα προσπελάσιμο μηχάνημα (server του τμήματος, github, cloud).
    • Είστε υπεύθυνοι για να διασφαλίσετε τον κώδικά σας, είτε από λάθος διαγραφές, αλλαγές είτε από τρίτους.
    • Η σωστή υποβολή ενός σωστού tar.gz που περιέχει τον κώδικα της άσκησής σας και ό,τι αρχεία χρειάζονται είναι αποκλειστικά ευθύνη σας. Άδεια tar/tar.gz ή tar/tar.gz που έχουν λάθος και δεν γίνονται extract δεν βαθμολογούνται.


Frequently Asked Questions

  • Μπορώ να παρακολουθήσω το τμήμα άρτιων ενώ έχω άρτιο Α.Μ. ή ανάποδα;
    Όχι.
  • Θα υπάρχει μετάδοση live stream;
    Όχι.
  • Είμαι μακριά/δουλεύω/δεν μπορώ να παρακολουθήσω τις διαλέξεις μπορώ να πάρω το μάθημα;
    Θα πρέπει να εμφανιστείτε με την ταυτότητα σας για την εξέταση.
  • Μπορώ να υποβάλλω τις προγραμματιστικές ασκήσεις με email;
    Όχι
  • Μπορείτε να μου κρατήσετε βαθμούς για επόμενες χρονιές;
    Όχι.
  • Μπορώ να πάρω ασκήσεις ή κομμάτια από άλλους, να βάλω φίλους μου να μου κάνουν τις ασκήσεις ή να τις βρω επί πληρωμή;
    Η αντιγραφή και αντίστοιχες πρακτικές απαγορεύoνται αυστηρά. Όλοι όσοι εμπλέκονται παίρνουν μηδέν στο μάθημα.
  • Συντρέχει είτε από την αρχή του εξαμήνου είτε ξαφνικά κάποια πολύ σοβαρή, ανυπέρβλητη δυσκολία που με εμποδίζει να ολοκληρώσω το μάθημα. Τι να κάνω;
    Επικοινωνήστε μαζί μου άμεσα και αναλόγως την περίπτωση θα αποφασίσουμε τι είναι εφικτό για την εκάστοτε περίπτωση.


Χρήσιμοι Σύνδεσμοι