Μαθησιακοί στόχοι

Το μάθημα αυτό είναι εισαγωγικό στο γνωστικό αντικείμενο των Λειτουργικών Συστημάτων και έχει ως βασικό στόχο την κατανόηση των γενικών αρχών των Λειτουργικών Συστημάτων μέσω της χρήσης και προγραμματισμού στο UNIX.

Στόχος του μαθήματος είναι οι φοιτητές να μελετήσουν και να γνωρίσουν ένα Λ.Σ. που εξ’ αρχής δημιουργήθηκε για προγραμματιστές καθώς και να διακρίνουν την φιλοσοφία που κρύβει ένα Λ.Σ. «πίσω» από τα γραφικά περιβάλλοντα.

Οι φοιτητές καλούνται να κατανοήσουν και να εξετάσουν τον τρόπο χρήσης ενός κελύφους καθώς και πως αυτό αλληλεπιδρά με το λειτουργικό σύστημα.

Σκοπός του μαθήματος είναι οι φοιτητές να κατανοήσουν πως λειτουργεί ένα “Λειτουργικό Σύστημα” και πως μπορούν να το αξιοποιήσουν.

Κατά την διάρκεια του μαθήματος οι φοιτητές έχουν την δυνατότητα να γνωρίσουν τα ισχυρά όπλα που έχει ένας προγραμματιστής χρησιμοποιώντας ένα Λ.Σ. σε επίπεδο κελύφους και να γνωρίσουν την φιλοσοφία του «κάνω περίπλοκες ενέργειες συνδυάζοντας απλές αυτόνομες εντολές που επικοινωνούν μεταξύ τους».

Με την επιτυχή ολοκλήρωση του μαθήματος ο φοιτητής θα πρέπει να:

  1. έχει κατανοήσει τις βασικές αρχές του λειτουργικού συστήματος UNIX και του τρόπου λειτουργίας του Λ.Σ., Αρχεία, χρήστες, ομάδες χρηστών, διεργασίες, πυρήνας.
  2. έχει κατανοήσει την σχέση Εφαρμογές-Κέλυφος-Πυρήνας.
  3. είναι σε θέση να χρησιμοποιεί στο κέλυφος βασικές εντολές, μεταβλητές κελύφους, μεταβλητές περιβάλλοντος.
  4. έχει κατανοήσει την χρήση των “quotes”.
  5. μπορεί να εφαρμόσει βασικές εντολές διαχείρισης και επεξεργασίας αρχείων.
  6. έχει κατανοήσει την φιλοσοφία λειτουργίας των συστημάτων αρχείων.
  7. είναι σε θέση να χρησιμοποιεί τους χαρακτήρες μπαλαντέρ.
  8. έχει κατανοήσει την έννοια των διεργασιών, τις ιδιότητές τους και τα σήματα (signals) και να μπορεί να τα χειριστεί εποικοδομητικά.
  9. έχει γνωρίσει τους τρόπους επικοινωνίας των διεργασιών και να μπορεί να συνθέσει περίπλοκες εντολές με συνδυασμό απλών εντολών.
  10. έχει κατανοήσει την φιλοσοφία των φίλτρων και να μπορεί να δημιουργήσει φίλτρα ή να συνδυάσει εποικοδομητικά υπάρχοντα φίλτρα.
  11. έχει κατανοήσει την χρήση των κανονικών εκφράσεων και να μπορεί να δημιουργεί κανονικές εκφράσεις.
  12. έχει κατανοήσει τον τρόπο χειρισμού των σεναρίων και των γλωσσών τύπου “interpreter” από το Λειτουργικό Σύστημα.
  13. γνωρίζει τις δυνατότητες του κελύφους σε σχέση με τον έλεγχο εκτέλεσης εντολών, τους τελεστές εντολών και τις δομές επανάληψης.
  14. να γνωρίζει την δομή του Λειτουργικού Συστήματος Adnroid.

Γενικές Ικανότητες

Με την ολοκλήρωση του μαθήματος ο φοιτητής έχει αποκομίσει τις παρακάτω γνώσεις και ικανότητες:

  1. μέσα από τις εργαστηριακές ασκήσεις να έχει την ευχέρεια να χρησιμοποιήσει εποικοδομητικά ένα λειτουργικό σύστημα UNIX και να μπορεί να προγραμματίζει χρησιμοποιώντας γνωστά εργαλεία που του δίνονται από το Λειτουργικό σύστημα.
  2. έχει κατανοήσει τις βασικές αρχές λειτουργίας ενός Λειτουργικού Συστήματος ώστε να εμβαθύνει παρακάτω στο μάθημα “Αρχές Σχεδίασης Λειτουργικών Συστημάτων”.
  3. έχει διευρύνει τις γνώσεις του και τις ικανότητές του σε σχέση με τους τρόπους χρήσης υπολογιστών πέρα από την κλασσική χρήση μέσω των παραθυρικών περιβαλλόντων.

Περιεχόμενο του Μαθήματος

  1. Εισαγωγή στο UNIX: Κατανόηση του λειτουργικού συστήματος UNIX, Περιγραφή της φιλοσοφίας και του τρόπου λειτουργίας του Λ.Σ., Αρχεία, χρήστες, ομάδες χρηστών, διεργασίες, πυρήνας.
  2. Εφαρμογές-Κέλυφος-Πυρήνας: Εισαγωγή στην χρήση του κελύφους, χρήση βασικών εντολών, μεταβλητές κελύφους, μεταβλητές περιβάλλοντος, quotes, βασικές εντολές διαχείρισης και επεξεργασίας αρχείων.
  3. Σύστημα αρχείων: Πρόσβαση στο σύστημα αρχείων, διαδρομές, άδειες πρόσβασης, διαχείριση αρχείων, σύνδεσμοι, βασικοί τύποι συστημάτων αρχείων του UNIX και άλλων λειτουργικών συστημάτων (fat, ntfs, ext, ...), συσκευές στο UNIX.
  4. Κέλυφος και αρχεία: χρήση χαρακτήρων μπαλαντέρ.
  5. Διεργασίες: διαχείριση διεργασιών, ιδιότητες, σήματα, το σύστημα /proc.
  6. Επικοινωνία διεργασιών: διασωλήνωση & ανακατεύθυνση, χρήση και προγραμματισμός φίλτρων.
  7. Κανονικές εκφράσεις και η χρήση τους μέσα από εργαλεία του UNIX (grep, sed).
  8. Προγραμματισμός στο κέλυφος: Διερμηνευτές εντολών στο UNIX, Έλεγχος εκτέλεσης εντολών, τελεστές εντολών, δομές επανάληψης.
  9. Introduction to mobile Operating Systems: Kernel, Users, groups, Applications, File System.

Βιβλία

  1. Σημειώσεις και υλικό μπορείτε να βρείτε στον παρόντα ιστότοπο.
  2. Στον εύδοξο, θα πρέπει να επιλέξετε Βιβλίο Θεωρίας μεταξύ των:
    1. ΕΙΣΑΓΩΓΗ ΣΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΚΑΙ ΤΟ UNIX/LINUX, Σιδηρόπουλος Αντώνης, ISBN: 9786182210284, Κωδικός Βιβλίου στον Εύδοξο: 122077484
    2. Το περιβάλλον προγραμματισμού UNIX, Kernigham & Pike
    3. Linux, Μάργαρης Αθανάσιος, Κωδικός Βιβλίου στον Εύδοξο: 102072090
    Σχόλια για τα βιβλία:
    1. Το πρώτο βιβλίο καλύπτει το σύνολο της ύλης που θα δούμε στο μάθημα.
    2. Το δευτερο βιβλίο (Το περιβάλλον προγραμματισμού UNIX) έχει καθιερωθεί από τα περισσότερα πανεπιστήμια της χώρας. Καλύπτει μεγάλο ποσοστό της ύλης μας μέσα στα 5 πρώτα κεφάλαια (και παράρτημα 1). Τα υπόλοιπα 4 κεφάλαια αφορούν προγραμματισμό στο UNIX με την γλώσσα C, με το οποίο δεν θα ασχοληθούμε κατά την διάρκεια του μαθήματος. Αποτελούν όμως καλό βοήθημα για όσους θέλουν το κάτι παραπάνω.
    3. Το τρίτο βιβλίο (Linux) επικεντρώνεται στον προγραμματισμό του πυρήνα σε σχέση με το σύστημα αρχείων και την διαχείρηση διεγρασιών.

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

  1. Ελληνική
    1. Γαρμπής Αριστογιάννης, ΛΕΙΤΟΥΡΓΙΚΆ ΣΥΣΤΉΜΑΤΑ, Πανεπιστημιακές εκδόσεις Αρακυνθος.
    2. Ιωάννης Κάβουρας, “Λειτουργικά Συστήματα”, 6η έκδοση, Εκδόσεις Κλειδάριθμος, 2003.
    3. Μάργαρης Αθανάσιος, "Linux", 1η έκδοση, Εκδόσεις ΕΚΔΟΣΕΙΣ Α. ΤΖΙΟΛΑ & ΥΙΟΙ Α.Ε.
  2. Διεθνής
    1. Brian W. Kernighan, Rob Pike, "Το περιβάλλον Προγραμματισμού UNIX", εκδόσεις ΚΛΕΙΔΑΡΙΘΜΟΣ 1989
    2. Augie Hansen, "Εισαγωγή στο UNIX", εκδόσεις ΚΛΕΙΔΑΡΙΘΜΟΣ, 1994
    3. William Stallings, “Λειτουργικά Συστήματα - Αρχές Σχεδίασης”, 6η έκδοση, Εκδόσεις Τζιόλα, 2009
    4. Andrew S. Tanenbaum, "Σύγχρονα Λειτουργικά Συστήματα", 3η έκδοση, Εκδόσεις Κλειδάριθμος, 2009
    5. Abraham Silberschatz, Peter Baer Galvin and Greg Gagne, "Λειτουργικά Συστήματα", Εκδόσεις ΙΩΝ, 2007
    6. Paul Love, Joe Merlino, Craig Zimmerman, Jeremy C. Reed, and Paul Weinstein, “Beginning UNIX”, Wiley Publishing, Inc. 2005
    7. Neil Matthew, Richard Stones, “Beginning Linux®Programming”, Wiley Publishing, Inc. 2004