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

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

  • Εαρινό εξάμηνο - Τμήμα άρτιων αριθμών μητρώου.
  • Μάθημα: Δευτέρα 13:00-15:00 (Αιθ. A1) και Τρίτη 11:00-13:00 (Αιθ. A1).
  • Διδάσκων: Αλέξανδρος Ντούλας A44, Ώρες γραφείου: Τρίτη 13:00-14:00 (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 του τμήματος.


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

  • 02/06: Ανακοινώθηκε η 3η άσκηση.
  • 06/05: Ανακοινώθηκε η 2η άσκηση.
  • 10/03: Αναστολή μαθημάτων μέχρι και 24/03 με απόφαση του Υπουργείου Υγείας.
  • 08/03: Ανακοινώθηκε η 1η άσκηση.
  • 16/02: Το μάθημα ξεκινάει Δευτέρα 17 Φεβρουαρίου.

Προγραμματιστικές Ασκήσεις

Άσκηση 3
Μπορείτε να βρείτε την Άσκηση 3 εδώ. Προθεσμία παράδοσης Δευτέρα 22 Ιουνίου, 23:59.
Οδηγίες για την υποβολή της άσκησης.
Άσκηση 2
Μπορείτε να βρείτε την Άσκηση 2 εδώ. Προθεσμία παράδοσης Τετάρτη 27 Μαϊου, 23:59.
Οδηγίες για την υποβολή της άσκησης.
Άσκηση 1
Μπορείτε να βρείτε την Άσκηση 1 εδώ. Προθεσμία παράδοσης Παρασκευή 27 Μαρτίου, 23:59.
Οδηγίες για την υποβολή της άσκησης.

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


Syllabus & Πρόγραμμα

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


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

  • Οι προγραμματιστικές ασκήσεις δεν παραδίδονται μέσω 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 σας.
    • Επίσης πριν ξεκινήσετε την άσκηση βεβαιωθείτε πως έχετε γράψει το user ID σας στο χαρτί που περνάει στην τάξη ώστε να έχει δημιουργηθεί ο κατάλληλος κατάλογος για εσάς για να μπορέσετε να παραδώσετε την άσκηση.
    • Όταν βγει η ανακοίνωση πως έχουν ανοίξει οι κατάλογοι για την υποβολή των ασκήσεων θα πρέπει οπωσδήποτε να κάνετε μια δοκιμαστική υποβολή. Αυτό γίνεται τρέχοντας τις εξής εντολές από ένα μηχάνημα Unix/Linux του τμήματος:

      touch Test-FirstLast-projectX.tar
      chmod 755 Test-FirstLast-projectX.tar
      cp Test-FirstLast-projectX.tar /home/users/k24/projectX/sdiABCDEFG/
      ls -l /home/users/k24/projectX/sdiABCDEFG/*


      Όπου First είναι το όνομά σας, Last είναι το επώνυμό σας, Χ είναι είναι ο αριθμός του project (π.χ. 1, 2, 3) και sdiABCDEFG είναι το user ID σας. Θα πρέπει να δείτε ένα άδειο αρχείο με όνομα Test-FirstLast-projectX.tar. Αν υπάρξει κάποιο λάθος κατά τη δοκιμαστική αυτή υποβολή επικοινωνείστε μαζί μου άμεσα. Είστε υπεύθυνοι να βεβαιωθείτε πως μπορείτε να υποβάλλετε ασκήσεις κανονικά τουλάχιστον μία εβδομάδα πριν την προθεσμία υποβολής. Αν αφήσετε την υποβολή τελευταία στιγμή και υπάρχει κάποιο πρόβλημα πιθανώς θα καταλήξετε να υποβάλλετε την άσκηση εκπρόθεσμα.
    • Βάζετε όλο τον κώδικα σε ένα directory. Βεβαιωθείτε πως ο κώδικας κάνει compile. Θα πρέπει να έχετε ένα Makefile, οπότε οι εντολές make και make clean θα πρέπει να δουλεύουν. Βεβαιωθείτε πως έχετε στο directory μόνο κώδικα, README, Makefile και άλλα αρχεία που χρειάζεται ο κώδικάς σας αλλά όχι τα binaries. Ο κώδικάς σας θα γίνει compile από την αρχή κατά την εξέταση της άσκησης.
    • Φτιάχνετε ένα tar-ball με το directory στο οποίο έχετε τον κώδικά σας. Για παράδειγμα αν έχετε τον κώδικα στο directory projectX/ τότε δημιουργείτε το tar-ball ως εξής:

      tar cvf FirstLast-projectX.tar projectX

      Πριν κάνετε το ο,τιδήποτε φυσικά βεβαιωθείτε πως έχετε αντίγραφο του κώδικά σας (π.χ. cp -r project2 project2.bak)
    • Αλλάξτε τα permissions του tar-ball που πρόκειται να υποβάλλετε.

      chmod 755 FirstLast-projectX.tar

    • Υποβάλλετε το tar-ball προς βαθμολόγηση με την εντολή

      cp FirstLast-projectX.tar /home/users/k24/projectX/sdiABCDEFG/

      Όπου First είναι το όνομά σας, Last είναι το επώνυμό σας, Χ είναι είναι ο αριθμός του project (π.χ. 1, 2, 3) και sdiABCDEFG είναι το user ID σας.
    • Για να ελέγξετε αν η άσκηση έχει υποβληθεί σωστά μπορείτε να χρησιμοποιείσετε την εντολή:

      ls -l /home/users/k24/projectX/sdiABCDEFG/*

      Μπορείτε να ελέγξετε αν το αρχείο που μόλις υποβάλλατε έχει το ίδιο μέγεθος με αυτό που είναι στο δικό σας directory.
    • Με την εντολή

      rm /home/users/k24/projectX/sdiABCDEFG/old-version.tar

      μπορείτε να σβήσετε παλαιότερες εκδόσεις της άσκησης ή αν έχετε δώσει λάθος ονομασία στο αρχείο σας. Μπορείτε φυσικά να υποβάλλετε το ίδιο όνομα αρχείου όσες φορές θέλετε. Βεβαιωθείτε πως ο κατάλογος projectX έχει μόνο ένα .tar αρχείο το οποίο είναι και αυτό που επιθυμείτε να βαθμολογηθεί.
    • Καλό θα είναι να έχετε ένα backup .tar της άσκησής σας όπως ακριβώς αυτή υποβλήθηκε σε κάποιο εύκολα προσπελάσιμο μηχάνημα (server του τμήματος, github, cloud).
    • Η σωστή υποβολή ενός σωστού tar.gz που περιέχει τον κώδικα της άσκησής σας και ό,τι αρχεία χρειάζονται είναι αποκλειστικά ευθύνη σας. Άδεια tar/tar.gz ή tar/tar.gz που έχουν λάθος και δεν γίνονται extract δεν βαθμολογούνται.


Frequently Asked Questions

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


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