1 / 32

Δρ. Α. Κομνηνός akomninos@ceid.upatras.gr

Εργαστήριο Λειτουργικών Συστημάτων Μάθημα 6oυ Εξαμήνου, Τομέας Λογικού και Υπολογιστών - 2013-2014. Δρ. Α. Κομνηνός akomninos@ceid.upatras.gr. ́Εναρξη Μαθήματος . Ο σκοπός του μαθήματος: Εξοικείωση με την χρήση λειτουργικών συστημάτων τύπου UNIX

rhys
Download Presentation

Δρ. Α. Κομνηνός akomninos@ceid.upatras.gr

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Εργαστήριο Λειτουργικών Συστημάτων Μάθημα 6oυ Εξαμήνου, Τομέας Λογικού και Υπολογιστών - 2013-2014 Δρ. Α. Κομνηνός akomninos@ceid.upatras.gr

  2. ́Εναρξη Μαθήματος • Ο σκοπός του μαθήματος: • Εξοικείωση με την χρήση λειτουργικών συστημάτων τύπου UNIX • Επαφή με τον προγραμματισμό των συστημάτων • Εξοικείωση του με τον πυρήνα του λειτουργικού συστήματος • Μελέτη ορισμένων χαρακτηριστικών μηχανισμών • Μελέτη του πηγαίου κώδικα του πυρήνα του λειτουργικού • Παρέμβαση, μετατροπή, προσθήκη συγκεκριμένων λειτουργιών στο λειτουργικό σύστημα • Το μάθημα θα βασιστεί στο λειτουργικό σύστημα ‘ανοικτού κώδικα’ MINIX version 3.0 • Το μάθημα θα διεξαχθεί σε δύο άξονες • Παραδώσεις – ∆ιαλέξεις • Ασκήσεις

  3. Τυπικά Θέματα • Παραδώσεις • ∆ιαλέξεις 4 ώρες την εβδομάδα • Πέμπτη 18:00 - 20:00, ΒΑ • Παρασκευή 18:00 - 20:00, ΑΠ7 / B4 • 4 θεματικές ενότητες • Αντίστοιχα με τα θέματα που καλύφθηκαν στο προηγούμενο εξάμηνο • Ασκήσεις • 4 ασκήσεις (Ομαδικές) • Βαθμολογία • 100% Ασκήσεις

  4. Ασκήσεις – Εξέταση • Ασκήσεις • Ομαδικές (1-3άτομα) • Μικρές ασκήσεις • 2 ασκήσεις ανά θεματική ενότητα • ≃ 1-2 εβδομάδες ανά άσκηση • Κώδικας • Εξέταση • ∆εν θα υπάρχει εξέταση • Βαθμός 100% από ασκήσεις • Καθυστέρηση στην παράδοση = 10% μείωση βαθμού (ανά μέρα καθυστέρησης) • Αντιγραφή σε 1 άσκηση = μηδενισμός στο μάθημα

  5. Απορίες – Συναντήσεις • Για οτιδήποτε χρειαστείτε – θα με βρείτε στο ΤΜΗΥΠ: • Προκατασκευασμένα • ́Αλλες μέρες/ώρες κατόπιν συνεννοήσεως • Μέσω e-mail: akomninos@ceid.upatras.gr • Μέσω forum του μαθήματος στο my.ceid.upatras.gr • Μεταπτυχιακοί φοιτητές • Προς το παρόν δεν υπάρχουν

  6. ́Υλη Μαθήματος • Λειτουργικό Σύστημα MINIX 3 • Περιβάλλον προγραμματισμού • ∆ιεργασίες • ∆ιαχείριση ∆ιεργασιών Επικοινωνία ∆ιεργασιών • ∆ιαχείριση Μνήμης • Συστήματα Αρχείων • ∆ιαχείριση Αρχείων • Μονάδες Εισόδου - Εξόδου • Device Drivers

  7. Βιβλιογραφία • Βιβλία • B.Kernighan, R.Pike: ‘‘Το περιβάλλον Προγραμματισμού UNIX’’ • A.Tanenbaum: ‘‘Σύγχρονα Λειτουργικά Συστήματα" • A.Tanenbaum, A.Woodhull: ‘‘Operating Systems Design and Implementation, 3rd Edition" • Πανεπιστημιακές Σημειώσεις • Π.Τριανταφύλλου: ‘Εργαστήριο Λειτουργικών Συστημάτων • ∆ιαδίκτυο • Ιστοσελίδα Λειτουργικού Συστήματος MINIX 3

  8. Ιστοσελίδα και Ανακοινώσεις • Η ιστοσελίδα του μαθήματος σύντομα θα ανανεωθεί • Περιέχει : • ∆ιαφάνειες των διαλέξεων • Συμπληρωματικές σημειώσεις • Το υλικό των ασκήσεων • Υλικό από προηγούμενα έτη • ́Ολες οι ανακοινώσεις θα γίνονται στο forum του μαθήματος στο my.ceid.upatras.gr

  9. Σύνοψη 1ης ∆ιάλεξης • Θέματα Μαθήματος • Γενικά • ∆ιαδικασία • Υλικό • Λειτουργικό Σύστημα MINIX 3 • Εισαγωγή • Εγκατάσταση • Βασικές Εντολές Κονσόλας • Σύνοψη Μαθήματος • Σύνοψη Μαθήματος • Βιβλιογραφία • Επόμενη ∆ιάλεξη

  10. Γενικά Χαρακτηριστικά • Στόχοι σχεδιασμού • Αξιοπιστία • Ευελιξία • Ασφάλεια • Λογισμικό ‘Ανοιχτού Κώδικα’ • Ο κώδικας για τις λειτουργίες του συστήματος και όλες τις εντολές και εργαλεία προσφέρεται ελεύθερα μαζί με την εγκατάσταση των εκτελέσιμων • Απευθύνεται σε • Ενσωματωμένα συστήματα • Συστήματα υψηλής αξιοπιστίας • Συστήματα μικρού κόστους (π.χ. OLPC) • Συστήματα όπου η άδεια GPL είναι ιδιαίτερα περιοριστική • Εκπαίδευση

  11. Χαρακτηριστικά Συστήματος • Minimal Unix = MINIX • Ακολουθεί το μοντέλο μικρο-πυρήνα • Ο πυρήνας αποτελείται από 4000 γραμμές κώδικα • Συνολικά είναι ένα λειτουργικό μικρού μεγέθους • περίπου 25000 γραμμές κώδικα • Οι λειτουργίες του συστήματος • είναι χωρισμένες σε modules • τρέχουν σε user mode • επικοινωνούν με τον πυρήνα μέσω μηνυμάτων • αν πάει κάτι λάθος απλά γίνεται επανεκκίνηση του συγκεκριμένου module • Είναι συμβατό με POSIX (Portable OS Interface) • Υποστηρίζει όλες τις γνωστές γλώσσες προγραμματισμού • Προσφέρει περιβάλλον εργασίας X Windows

  12. Ιστορική Αναδρομή • Η πρώτη έκδοση εμφανίστηκε το 1987 – περίπου 12000 γραμμές κώδικα • Το πρώτο λειτουργικό ελεύθερου κώδικα βασισμένο στο UNIX Version 7 • Πολλά πανεπιστήμια δημιούργησαν ‘Εργαστήρια Λειτουργικών’ • Ενας από τους βασικούς στόχους ήταν ο εκπαιδευτικός χαρακτήρας • Στόχευε σε συστήματα 8088 με 256k μνήμη, χωρίς σκληρό δίσκο – απλά με δισκέτα • Η δεύτερη έκδοση εμφανίστηκε το 1997 • ́Εγινε συμβατό με POSIX (IEEE 1003.1, ISO 9945-1) • Επέκταση προς συστήματα 32-bit • Υποστήριξη σκληρού δίσκου και μεγαλύτερης μνήμης Υποστήριξη TCP/IP

  13. ́Εκδοση 3 • Ανακοινώθηκε τον Οκτώβριο του 2005 • Βασίζεται στην παρατήρηση ότι τα Λ.Σ. έχουν διογκωθεί, είναι αργά και αναξιόπιστα • Συνήθως όλο το Λ.Σ. είναι γραμμένο σε C++ μεταγλωττισμένο σε ένα εκτελέσιμο που τρέχει μέσα στον πυρήνα • ́Ενα bug σε μία από τις εκατομμύρια γραμμές είναι ικανό να οδηγήσει το σύστημα σε κατάρρευση • Το να διορθώσεις όλα τα bugs είναι αδύνατο – όσο χρόνο και αν διαθέσεις • ́Ερευνα έδειξε ότι τα bugs που έχουν εντοπιστεί είναι 6 . . . 16 ανά 1000 γραμμές κώδικα • ́Ερευνα έδειξε ότι μετά από τις δέκα πρώτες εκδόσεις, το 6% των αρχείων του κώδικα εξακολουθούν να περιέχουν bugs

  14. ́Εκδοση 3 – συνέχεια • Συνήθως το 70% του κώδικα αφορά τις συσκευές Ε/Ε και τους αντίστοιχους οδηγούς – υλοποιημένα από τρίτους • ́Ερευνες σε ‘σταθερές’ εκδόσεις Linux και OpenBSD εντόπισαν εκατοντάδες bugs στον πυρήνα και κυρίως στους οδηγούς συσκευών Ε/Ε • Για αυτόν τον λόγο οι οδηγοί μεταφέρθηκαν εκτός του πυρήνα • ́Ενας ειδικός δαίμονας παρακολουθεί την κατάσταση των οδηγών και τους επανεκκινεί εάν διαπιστώσει ότι υπάρχει κάποιο πρόβλημα • Υλοποιεί τεχνικές ‘αυτό-ίασης’ (self-healing) • ή αλλιώς τεχνικές ‘αυτό-σταθεροποίησης’ (self-stabilization) -- για τις οποίες μίλησε για πρώτη φορά ο Dijkstra περίπου το 1960 (περισσότερα στο μάθημα Κ.Σ.)

  15. Linus Benedict Torvalds • Κατά την διάρκεια των σπουδών του εγκατέστησε το Minix 1.5 – άρχισε τους πειραματισμούς μελετώντας τον κώδικα • Παρατήρησε ότι κάποια βασικά χαρακτηριστικά απουσίαζαν • ́Αρχισε να υλοποιεί τα προγράμματα ... • ∆ιαπίστωσε ότι χρειαζόταν διαφορετικό οδηγό για το τερματικό του, οπότε άρχισε να τον υλοποιεί... • Μετά αποφάσισε ότι χρειάζεται να σώσει τα μηνύματα της συζήτησης για το MINIX στο USENIX ... • Οπότε άρχισε να γράφει έναν οδηγό για τον σκληρό δίσκο • Στην συνέχεια υλοποίησε ένα απλό σύστημα αρχείων • Τον Αύγουστο του 1991 δημιούργησε την πρώτη έκδοση του πυρήνα του LINUX • Το ανακοίνωσε στο USENIX και με την συνδρομή άλλων προγραμματιστών η πρώτη έκδοση του LINUX ανακοινώθηκε τον Μάρτιο του 1994

  16. MINIX vsLINUX • Το Linux είναι ένα μονολιθικό σύστημα • Καμία δομή όσον αφορά την οργάνωση των λειτουργιών • Ο Tanenbaum ισχυρίστηκε ότι τα συστήματα μικροπυρήνα είναι ανώτερα από τα μονολιθικά • ... το Linux βασίζεται σε παρωχημένες τεχνολογίες • ο να προγραμματίζεις ένα μονολιθικό πυρήνα το 1991 είναι ‘‘a giant step back into the 1970s’’ • Το MINIX σχεδιάστηκε κυρίως για εκπαιδευτικό χαρακτήρα • Οφείλει να χρησιμοποιεί καλά σχολιασμένο κώδικα • Υλοποιήσεις ‘αναφοράς’ • Προσφέρει τα ‘θεμέλια’ – τις αποδεκτές αρχές – της ερευνητικής περιοχής • Το LINUX δεν έχει τέτοιου είδους στόχους • Πρέπει να είναι ένα ‘πραγματικό’ λειτουργικό σύστημα • Να βασίζεται σε συγκεκριμένες τεχνολογίες και αρχιτεκτονικές

  17. Ελάχιστες Απαιτήσεις • Αρχιτεκτονική IA-32 (386, 486, Pentium or compatible) • 16MB μνήμη • CDROM ή USB -- χρήση έκδοσης LiveCD • Αν θέλετε να το εγκαταστήσετε στον σκληρό τότε απαιτεί 50 MB • Για την χρήση του περιβάλλοντος X Windows -- χρειάζεται 256MB μνήμη • Για την εγκατάσταση όλου του κώδικα (εφαρμογές κλπ) χρειάζεται 600MB χώρο

  18. Εγκατάσταση: Εύκολη Λύση • Καμία αλλαγή στον σκληρό δίσκο • Χρήση του LiveCD • Κατέβασμα του image (.iso) από την ιστοσελίδα του συστήματος -- www.minix3.org • ∆ημιουργία ενός bootable CD-ROM • Επανεκκίνηση του συστήματος με την χρήση του CD-ROM • Χρήση USB Memory Stick • Κατέβασμα του usb_image (.zip) από την ιστοσελίδα του συστήματος -- www.minix3.org • Τοποθέτηση αρχείων στο USB Memory Stick • Επανεκκίνηση του συστήματος με την χρήση του USB Memory Stick • Sector – by – sector copy του .isoστο USB (π.χ. YUMI, XBOOT κτλ κτλ). • Επιλέγουμε ρυθμίσεις ‘‘regular’’ • Κάντε login ως root (δεν χρειάζεται password)

  19. Εγκατάσταση: Πολύ Εύκολη Λύση • Με την προηγούμενη λύση δεν μπορούμε να κάνουμε αλλαγές στο σύστημα • Καμία αλλαγή στον σκληρό δίσκο / λειτουργικό σύστημα • Χρήση ενός Εξομοιωτή • VirtualBox • VMWare Player -- www.vmware.com • QEMU -- www.qemu.org • Bochs -- bochs.sourceforge.net Virtual PC • Παράδειγμα: http://wiki.minix3.org/en/UsersGuide/RunningMinixOnVmware

  20. Πλήρης Εγκατάσταση • Με την προηγούμενη λύση μπορεί το σύστημα να λειτουργεί ‘αργά’ (εξαρτάται από το υλικό) • Απαιτεί αλλαγές στον σκληρό δίσκο • Εκτός αν μπορούμε να αφιερώσουμε έναν άλλο δίσκο μόνο για το MINIX • Χρειαζόμαστε ένα partition το πολύ 1 GB • Υπάρχουν προγράμματα που μπορούν να αλλάξουν το μέγεθος ενός partition χωρίς να το σβήσουν • ∆ημιουργήστε αντίγραφα ασφαλείας (backup) • Ξεκινήστε το σύστημα με το LiveCD (ή USB) • Επιλέγουμε ρυθμίσεις ‘‘regular’’ • Κάντε login ως root (δεν χρειάζεται password) • Εκτελέστε την εντολή setup

  21. Ξεκινώντας ένα Session • Για να ξεκινήσουμε, αρχικά κάνουμε login • Μόλις ξεκινήσει το σύστημα εμφανίζεται το μήνυμα login • Σε άλλα συστήματα το περιβάλλον είναι ποιο φιλικό (π.χ. πλούσια γραφικά) • Εισάγοντας σωστό login/password ξεκινάει ένα νέο session • Μια νέα ‘κονσόλα’ δημιουργείται • Ενα πολύ βασικό περιβάλλον εκτέλεσης εντολών

  22. Εκτέλεση Εντολών • Το # είναι το prompt • Στο prompt γράφουμε το όνομα της εντολής και πατάμε Return • Πατώντας απλά Return εμφανίζεται μια νέα γραμμή

  23. Χειρισμός λαθών • Αν γράψουμε μια εντολή λάθος, εμφανίζεται ένα μήνυμα λάθους • Το μήνυμα λάθους λέει ότι το αρχείο ή ο φάκελος δεν βρέθηκε Το σύστημα θεωρεί ότι και οι εντολές ειναι αρχεία ... • Με τα κουμπιά ↑ ↓ μπορούμε να ανατρέξουμε σε προηγούμενες εντολές • Με τα κουμπιά ← → μπορούμε να επεξεργαστούμε την τρέχουσα γραμμή

  24. Τερματισμός εντολών – ́Εξοδος από την κονσόλα • Για να διακόψουμε την εκτέλεση μιας εντολής χρησιμοποιούμε το ctrl-c • Για να ‘παγώσουμε’ την έξοδο μιας εντολής χρησιμοποιούμε το ctrl-s • Για να ‘ξεπαγώσουμε ́ την έξοδο χρησιμοποιούμε το ctrl-q • Προσοχή – με αυτόν τον τρόπο μόνο η έξοδος παγώνει, όχι η εκτέλεση • Για κλείσουμε την κονσόλα – να ολοκληρώσουμε το session χρησιμοποιούμε το ctrl-d • Πατάμε συνεχόμενες φορές το ctrl-q • Τερματίζουν όλα τα προγράμματα που τρέχουν και στο τέλος εμφανίζεται πάλι η αρχική οθόνη login • Αυτός είναι ο μοναδικός σωστός τρόπος για να κλείνουμε ένα session

  25. Επικοινωνία με άλλους χειριστές • Με την εντολή write μπορούμε να στείλουμε ένα μήνυμα σε μια άλλη κονσόλα Αποστολή μηνύματος # write akomninos hello there ˆD EOT Παραλαβή μηνύματος Message from root (ttyc1) Sat Apr 21 17:09:17 2007.. hello there EOT

  26. Οδηγίες Χρήσης / Προγραμματισμού UNIX • Με την εντολή man μπορούμε να προσπελάσουμε τις σελίδες βοήθειας • Υπάρχουν διάφορες κατηγορίες σελίδων • Εντολές Χειριστών -- ls, cp, grep • Κλήσεις Συστήματος -- fork, exit • Ρουτίνες Βιβλιοθηκών • Αρχεία Συσκευών Ε/Ε • Τύποι/Κωδικοποιήσεις Αρχείων • Παιχνίδια • ∆ιάφορα • Εντολές ∆ιαχειριστή Συστήματος • Εγγραφα – περισσότερες πληροφορίες για τις ορισμένες σελίδες που ανήκουν στις παραπάνω κατηγορίες • Για να προσδιορίσουμε σε ποια κατηγορία αναφερόμαστε: • man [category] [topic]

  27. #man fork

  28. Εγκατάσταση προγραμμάτων στο MINIX • Εντολή packman (<3.1.7) • Απαιτεί το LiveCD ή να έχουμε πρόσβαση στο ∆ιαδίκτυο • Μπορεί να εγκαταστήσει και τον πηγαίο κώδικα • Αντικαταστάθηκε από το pkgin / pkgsrc

  29. Σύνοψη 1ης ∆ιάλεξης • Θέματα Μαθήματος • Γενικά • ∆ιαδικασία • Υλικό • Λειτουργικό Σύστημα MINIX 3 • Εισαγωγή • Εγκατάσταση • Βασικές Εντολές Κονσόλας • Σύνοψη Μαθήματος • Σύνοψη Μαθήματος • Βιβλιογραφία • Επόμενη ∆ιάλεξη

  30. Σύνοψη Μαθήματος • ∆ιαδικασία Μαθήματος • Συνοπτική παρουσίαση των Σητημάτων και προβλημάτων που θα μελετηθούν • Σύντομη παρουσίαση του MINIX 3 • Θέματα εγκατάστασης MINIX 3 • Περιβάλλον MINIX • Εισαγωγή στις γενικές έννοιες της κονσόλας

  31. Βιβλιογραφία • Βιβλίο ‘Σύγχρονα Λειτουργικά Συστήματα" (A.Tanenbaum) • Κεφάλαιο 1: Εισαγωγή • Κεφάλαιο 10: Μελέτη Περίπτωσης 1 – Unix και Linux • Βιβλίο ‘Το περιβάλλον Προγραμματισμού UNIX’’ (B.Kernighan, R.Pike) • Κεφάλαιο 1: Εισαγωγή • Βιβλίο ‘‘Operating Systems: Design and Implementation" (A.Tanenbaum, A.Woodhull) • Κεφάλαιο 1: Introduction • Appendix A: Installing MINIX 3 • Πανεπιστημιακές Σημειώσεις (Π.Τριανταφύλλου) • Κεφάλαιο 1: Εισαγωγή σε Λειτουργικά Συστήματα

  32. Επόμενη ∆ιάλεξη • Περιβάλλον προγραμματισμού UNIXΕπανάληψη από μάθημα ‘Λειτουργικά Συστήματα Ι’ • Κεφάλαιο 1: Παραδοσιακά Λειτουργικά Συστήματα • Κεφάλαιο 2: ∆ιεργασίες • Αντίστοιχα κεφάλαια από ‘Σύγχρονα Λειτουργικά Συστήματα’ (A.Tanenbaum)

More Related