Εισαγωγή στο LINUX ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Ιστορική αναδρομή Το Linux περιλαμβάνει χαρακτηριστικά από πολλά γνωστά λειτουργικά συστήματα UNIX όπως: System V Release 4 (SVR4) - AT&T 4.4 BSD release - University of California at Berkeley (4.4BSD), Digital Unix - DEC Compaq HP, AIX - IBM, HP-UX - Hewlett-Packard, Solaris - Sun Microsystems ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Το Linux αναπτύχθηκε αρχικά από τον Linus Torvalds το 1991 ως ένα λειτουργικό σύστημα για IBM συμβατούς προσωπικούς υπολογιστές, βασισμένους στον μικροεπεξεργαστή Intel 80386. Με την πάροδο του χρόνου η συμμετοχή πολλών στην ανάπτυξή του το έκανε διαθέσιμο σε πολλές άλλες αρχιτεκτονικές όπως Alpha, SPARC, Motorola MC680x0, PowerPC, και IBM System/390. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Ένα από τα σημαντικότερα πλεονεκτήματά του είναι ότι διανέμεται δωρεάν : ο πηγαίος του κώδικας, υπό την GNU Public License είναι ανοικτός και διαθέσιμος σε οποιονδήποτε. Ο κώδικας είναι διαθέσιμος για download από το επίσημο site http://www.kernel.org ή από ένα Linux CD. Το GNU project συντονίζεται από το Free Software Foundation, Inc. (http://www.gnu.org); Για την επιτυχία οποιουδήποτε Linux project είναι απαραίτητος ο GNU C compiler. Ο πυρήνας του Linux δεν είναι αρκετά καινοτομικός αλλά προσπαθεί να ενσωματώσει χαρακτηριστικά που υπάρχουν σε άλλους πυρήνες Unix. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Linux Licensing Ο πυρήνας του Linux διανέμεται μέσω της GNU General Public License (GPL), οι όροι της οποίας τίθενται από την Free Software Foundation. Οποιοσδήποτε χρησιμοποιεί το Linux, ή δημιουργεί τη δική του διανομή δεν πρέπει να θεωρεί το παραγόμενο προϊόν ιδιοκτησία του. Το λογισμικό που εκδίδεται μέσω της GPL δεν πρέπει να διανέμεται ως προϊόν μόνον σε δυαδική μορφή. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Διανομές Linux Standard, precompiled sets of packages, or distributions, include the basic Linux system, system installation and management utilities, and ready-to-install packages of common UNIX tools. The first distributions managed these packages by simply providing a means of unpacking all the files into the appropriate places; modern distributions include advanced package management. Red Hat, Debian, SuSE, Mandrake are popular distributions from commercial and noncommercial sources, respectively (see www.linux.org). The RPM Package file format permits compatibility among the various Linux distributions (see www.linuxbase.org). ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Which distribution to use ? RedHat (www.redhat.com) Big, professional, very widely used Debian (www.debian.org/) Open development model, excellent packaging system Mandrake (www.mandrakesoft.com) Aims to be very easy to install and use SuSE (www.suse.com/) Compromise between Red Hat and Mandrake Slackware (www.slackware.com/) Most traditional; little extra help ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
ΑΡΧΙΤΕΚΤΟΝΙΚΕΣ Λ.Σ. Μονολιθικοί πυρήνες Στρωματοποιημένη αρχιτεκτονική Αρχιτεκτονική μικροπυρήνα ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Αρχιτεκτονική πυρήνα μονολιθικού Λ.Σ. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Στρωματοποιημένη αρχιτεκτονική ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Αρχιτεκτονική μικροπυρήνα ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Χαρακτηριστικά του πυρήνα του Linux Οι παραδοσιακοί πυρήνες του Unix μεταγλωττίζονται και συνδέονται στατικά. Οι πιο σύγχρονοι πυρήνες μπορούν να φορτώσουν και να ξεφορτώσουν ορισμένα τμήματα του κώδικα του πυρήνα (τυπικά τους οδηγούς συσκευών), τα τμήματα λέγονται modules. Το Linux υποστηρίζει τη χρήση modules. Μπορεί να φορτώνει και να ξεφορτώνει αυτόματα modules κατ’ απαίτηση. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Νημάτωση πυρήνα (kernel threading) Νημάτωση πυρήνα (kernel threading). Ένα νήμα πυρήνα είναι ένα πλαίσιο εκτέλεσης που μπορεί να δρομολογηθεί ανεξάρτητα, μπορεί να συσχετιστεί με ένα πρόγραμμα χρήστη ή μπορεί να τρέχει μόνον κάποιες συναρτήσεις του πυρήνα. Οι εναλλαγές πλαισίου μεταξύ νημάτων του πυρήνα είναι λιγότερο δαπανηρές από τις εναλλαγές πλαισίων μεταξύ των κανονικών διεργασιών, μια και οι πρώτες χρησιμοποιούν συνήθως ένα κοινό χώρο διευθύνσεων. Το Linux χρησιμοποιεί τα νήματα πυρήνα με πολύ περιορισμένο τρόπο για να εκτελεί περιοδικά λίγες συναρτήσεις του πυρήνα. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Σχέση νήματος και διεργασίας ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Υποστήριξη πολυνηματικών εφαρμογών (multithreaded application support) Υποστήριξη πολυνηματικών εφαρμογών (multithreaded application support). Τα περισσότερα σύγχρονα Λ.Σ. παρέχουν κάποιο είδος υποστήριξης σε πολυνηματικές εφαρμογές δηλ. σε προγράμματα χρηστών που είναι καλά σχεδιασμένα με την έννοια ότι πολλά τμήματα που βρίσκονται σε ροή εκτέλεσης διαμοιράζονται ένα μεγάλο τμήμα δομών δεδομένων της εφαρμογής. Μια πολυνηματική εφαρμογή χρήστη αποτελείται από πολλές lightweight processes (LWP), ή από διεργασίες που μπορούν να λειτουργήσουν σε ένα κοινό χώρο διευθύνσεων, σε κοινές φυσικές σελίδες μνήμης, κοινά ανοικτά αρχεία κλπ. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Το Linux καθορίζει τις δικές του LWP που διαφέρουν από αυτές που υπάρχουν σε εμπορικές διανομές Unix (π.χ. Solaris). Ενώ όλες αυτές οι διανομές Unix χρησιμοποιούν τροποποιημένες LWP που βασίζονται σε νήματα πυρήνα το Linux δεν χρησιμοποιεί τις LWP ως βασικό πλαίσιο εκτέλεσης αλλά τις διαχειρίζεται μέσω μιας μη βασικής κλήσης συστήματος (clone()) που αποτελεί μια τροποποιημένη επέκταση της κλήσης fork() των συστημάτων Unix. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
To Linux αποτελεί ένα πυρήνα χωρίς προεκχώρηση To Linux αποτελεί ένα πυρήνα χωρίς προεκχώρηση. Δηλαδή δεν μπορεί να παρεμβάλλει αυθαίρετα ροές εκτέλεσης ενώ βρίσκεται σε κατάσταση επόπτη. Αρκετά τμήματα του πυρήνα εκτελούνται χωρίς τον φόβο να διακοπούν από άλλα και μπορούν έτσι να τροποποιούν δομές δεδομένων. Οι πλήρως προεκχωρούμενοι πυρήνες αφορούν ειδικά Λ.Σ. πραγματικού χρόνου. (π.χ. Solaris 2.x) Το UNIX είναι ένα Λ.Σ. πολυεπεξεργασίας που χρησιμοποιεί διεργασίες με προεκχώρηση. Υποστήριξη συστημάτων πολλών επεξεργαστών. Το Linux παρέχει ένα είδος υποστήριξης για συμμετρική πολυπεξεργασία (SMP), ωστόσο δεν κάνει βέλτιστη χρήση των SMP. Αρκετές δραστηριότητες που θα μπορούσαν να εκτελούνται συγχρόνως π.χ. διαχείριση αρχείων και δικτύωση εκτελούνται σειριακά. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Πλεονεκτήματα του Linux Παρέχεται δωρεάν Είναι πλήρως προσαρμόσιμο στις απαιτήσεις Μπορεί να τρέχει σε ΗΥ χαμηλού κόστους Διαθέτει υψηλές προδιαγραφές ποιότητας του πηγαίου κώδικα Ο πυρήνας του είναι πολύ μικρός και συμπαγής Είναι συμβατό με πολλά Λ.Σ. Διαθέτει καλή υποστήριξη ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Βασικά χαρακτηριστικά ενός Λ.Σ. Ένα Λ.Σ. πρέπει να : αλληλεπιδρά με τα συστατικά του υλικού για να εξυπηρετεί όλα τα χαμηλού επιπέδου στοιχεία που περιλαμβάνονται στο υλικό παρέχει το περιβάλλον εκτέλεσης των εφαρμογών που τρέχουν στο υπολογιστικό σύστημα (user programs) Όλα τα Unix-like Λ.Σ. αποκρύπτουν τις λεπτομέρειες του υλικού, που αφορούν τη φυσική οργάνωση του συστήματος, από τους χρήστες. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Όταν ένα πρόγραμμα απαιτεί να χρησιμοποιήσει έναν πόρο του συστήματος πρέπει να υποβάλλει την απαίτησή του στο Λ.Σ. Ο πυρήνας (kernel) αξιολογεί την απαίτηση και αν επιλέξει να παραχωρήσει τον πόρο, αλληλεπιδρά με τα κατάλληλα συστατικά του υλικού. Προκειμένου να ενδυναμωθεί και να προστατευθεί ο μηχανισμός αυτός, τα σύγχρονα Λ.Σ. βασίζονται στην ιδιότητα ορισμένων συστατικών του υλικού να μην επιτρέπουν στα προγράμματα των χρηστών να αλληλεπιδρούν άμεσα με αυτά ή να αποκτούν πρόσβαση σε διευθύνσεις μνήμης. Το υλικό διαθέτει δύο διαφορετικές καταστάσεις (modes) εκτέλεσης εντολών από την CPU : User mode (non-privileged) για τα προγράμματα του χρήστη Privileged (kernel) mode για τον πυρήνα. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Χαρακτηριστικά των multi-user συστημάτων Μηχανισμός ελέγχου της αυθεντικότητας των χρηστών Μηχανισμός προστασίας από ύποπτα και λανθασμένα προγράμματα χρηστών που οδηγούν στην αναστολή εκτέλεσης άλλων προγραμμάτων και στην παρακολούθηση των δραστηριοτήτων του συστήματος Μηχανισμός παρακολούθησης των πόρων που παραχωρούνται σε κάθε χρήστη ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Τα UNIX-like Λ. Σ. υιοθετούν το μοντέλο process/kernel Τα UNIX-like Λ.Σ. υιοθετούν το μοντέλο process/kernel. Κάθε διεργασία έχει τη ψευδαίσθηση ότι είναι η μόνη διεργασία στο σύστημα και έχει την αποκλειστική πρόσβαση στις υπηρεσίες του Λ.Σ. Κάθε φορά που μια διεργασία πραγματοποιεί μια κλήση συστήματος (μια απαίτηση που διαβιβάζεται στον πυρήνα), το υλικό αλλάζει την κατάσταση από user mode σε kernel mode και η διεργασία αρχίζει την εκτέλεση μιας διαδικασίας πυρήνα που έχει ένα αυστηρά περιορισμένο στόχο. Έτσι το Λ.Σ. ενεργεί εντός του πλαισίου εκτέλεσης της διεργασίας ώστε να ικανοποιήσει την απαίτηση. Μόλις η απαίτηση ικανοποιηθεί πλήρως, η διαδικασία πυρήνα υποχρεώνει το υλικό να επιστρέψει σε κατάσταση χρήστη και η διεργασία συνεχίζει την εκτέλεσή της με την εντολή που ακολουθεί. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Αρχιτεκτονική πυρήνα Οι περισσότεροι πυρήνες Unix είναι μονολιθικοί. Τα Λ.Σ. με αρχιτεκτονική μικροπυρήνα (mikrokernel) απαιτούν ένα πολύ μικρό σύνολο λειτουργιών από τον πυρήνα που περιλαμβάνει λίγες στοιχειώδεις συναρτήσεις συγχρονισμού, έναν απλό δρομολογητή και ένα μηχανισμό διαδιεργασιακής επικοινωνίας. Αρκετές διεργασίες συστήματος που εκτελούνται στην κορυφή του μικροπυρήνα θέτουν σε εφαρμογή άλλες λειτουργίες συστήματος, όπως οδηγούς συσκευών, διαχειριστές κλήσεων συστήματος κλπ ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Τα Λ.Σ. με αρχιτεκτονική μικροπυρήνα : είναι γενικά βραδύτερα από τα μονολιθικά εξ αιτίας της καθυστέρησης που προκαλεί η μεταβίβαση μηνυμάτων μεταξύ των επιπέδων του Λ.Σ. διαθέτουν και ορισμένα θεωρητικά πλεονεκτήματα σε σχέση με τα μονολιθικά. Οι μικροπυρήνες αναγκάζουν τους προγραμματιστές συστημάτων να υιοθετούν μια τμηματική προσέγγιση μια και κάθε επίπεδο ενός Λ.Σ. είναι ένα σχετικά ανεξάρτητο πρόγραμμα που θα πρέπει να αλληλεπιδρά με τα άλλα επίπεδα διαμέσου μιας καλά σχεδιασμένης και σαφούς διεπαφής. Μπορούν να μεταφερθούν ευκολότερα σε άλλες αρχιτεκτονικές, μια και όλα τα εξαρτώμενα από το υλικό συστατικά ενθυλακώνονται γενικά στον κώδικα του μικροπυρήνα, χρησιμοποιούν αποδοτικότερα τη μνήμη RAM. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Modules Τα modules είναι ένα χαρακτηριστικό του πυρήνα. Ενσωματώνουν αποτελεσματικά πολλά από τα θεωρητικά πλεονεκτήματα των μικροπυρήνων χωρίς να μειώνουν την απόδοση. Ένα module είναι μια λειτουργική μονάδα (π.χ. ένα σύστημα αρχείων ή ένας οδηγός συσκευής ή και άλλα χαρακτηριστικά του ανώτερου επιπέδου του πυρήνα) ο κώδικας του οποίου μπορεί να συνδεθεί δυναμικά ή να αποσυνδεθεί με (από) τον πυρήνα, κατά τη διάρκεια του χρόνου εκτέλεσης, και πάντως μετά από την εκκίνηση του συστήματος. Μπορεί επίσης να απομακρυνθεί από τον πυρήνα οποιαδήποτε στιγμή εφόσον δεν χρειάζεται. Ένα module δεν εκτελείται ως μια ειδική διεργασία, όπως συμβαίνει με τα εξωτερικά επίπεδα των Λ.Σ. μικροπυρήνα, αλλά εκτελείται σε κατάσταση πυρήνα εκ μέρους της τρέχουσας διεργασίας όπως μια οποιαδήποτε στατικά συνδεδεμένη συνάρτηση πυρήνα (δηλαδή από τη στιγμή που φορτώνεται είναι ό,τι και ο πυρήνας). Το αποτέλεσμα είναι ένας μικρός σε μέγεθος και συμπαγής πυρήνας ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Πλεονεκτήματα της χρήση modules Modularized προσέγγιση Οι προγραμματιστές συστήματος πρέπει να χρησιμοποιούν καλά ορισμένα διεπαφές λογισμικού για να έχουν πρόσβαση στις δομές δεδομένων που διαχειρίζονται τα modules. Έτσι είναι εύκολη η ανάπτυξη νέων modules. Η διεπαφή μέσω modules επιτρέπει σε ανεξάρτητους κατασκευαστές λογισμικού να γράφουν και να διανέμουν οδηγούς συσκευών ή συστήματα αρχείων που δεν μπορούν να διανεμηθούν εξ αρχής. Ανεξαρτησία πλατφόρμας Ένα module παρότι βασίζεται σε κάποια εξειδικευμένα χαρακτηριστικά του υλικού, δεν είναι εξαρτώμενο από μια συγκεκριμένη πλατφόρμα υλικού π.χ. ένα disk drive module που βασίζεται στο πρότυπο SCSI θα δουλεύει εξίσου καλά σε πολλές πλατφόρμες ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Οικονομική χρήση της κεντρικής μνήμης Ένα module συνδέεται στον τρέχοντα πυρήνα όταν απαιτείται και αποσυνδέεται όταν ολοκληρωθεί η χρήση του. Η διαδικασία αυτή δεν γίνεται άμεσα αντιληπτή από το χρήστη καθώς η σύνδεση και η αποσύνδεση γίνονται αυτόματα από τον πυρήνα. Ανυπαρξία επιπτώσεων στην απόδοση Από τη στιγμή που θα συνδεθεί ο object code ενός module είναι ισοδύναμος με τον object code του στατικά συνδεδεμένου πυρήνα. Δεν υπάρχει απαίτηση για μεταβίβαση μηνυμάτων όταν οι συναρτήσεις του module ενσωματώνονται στον πυρήνα. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Τρόποι φόρτωσης ενός module χειροκίνητος : χρήση της εντολής insmod αυτόματος : ο πυρήνας ανακαλύπτει την ανάγκη φόρτωσης ενός module (π.χ. ο χρήστης «συνδέει» ένα σύστημα αρχείων) => ο kerneld daemon φορτώνει το απαιτούμενο module χρησιμοποιώντας την insmod. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Αρχιτεκτονική πυρήνα Linux User Programs User Programs Trap User level Libraries Kernel level System Call Interface File System Management IPC Buffer Cache Process Mgt. Scheduling Memory Mgt. Device Drivers Hardware Control (Interrupts handling, etc) Hardware ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Δομή του πυρήνα User application User level Standard Unix libraries Kernel level System call interface File Subsystem Interprocess communication Process control system Buffer cache scheduler Memory management Character block Device drivers Hardware control Hardware level Hardware ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Διαχείριση διεργασιών Διεργασίες Linux ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Διαχείριση μνήμης Μοντέλο ιδεατής μνήμης ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Διαχείριση μνήμης Πίνακες σελίδων στο Linux ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Διαχείριση μνήμης Παραχώρηση και αποδέσμευση σελίδων μνήμης σύμφωνα με τον αλγόριθμο Buddy. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Scheduling ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
The job of allocating CPU time to different tasks within an operating system. While scheduling is normally thought of as the running and interrupting of processes, in Linux, scheduling also includes the running of the various kernel tasks. Running kernel tasks encompasses both tasks that are requested by a running process and tasks that execute internally on behalf of a device driver. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Kernel Synchronization A request for kernel-mode execution can occur in two ways: A running program may request an operating system service, either explicitly via a system call, or implicitly, for example, when a page fault occurs. A device driver may deliver a hardware interrupt that causes the CPU to start executing a kernel-defined handler for that interrupt. Kernel synchronization requires a framework that will allow the kernel’s critical sections to run without interruption by another critical section. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Kernel Synchronization (Cont.) Linux uses two techniques to protect critical sections: 1. Normal kernel code is nonpreemptible – when a time interrupt is received while a process is executing a kernel system service routine, the kernel’s need_resched flag is set so that the scheduler will run once the system call has completed and control is about to be returned to user mode. 2. The second technique applies to critical sections that occur in an interrupt service routines. – By using the processor’s interrupt control hardware to disable interrupts during a critical section, the kernel guarantees that it can proceed without the risk of concurrent access of shared data structures. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Kernel Synchronization (Cont.) To avoid performance penalties, Linux’s kernel uses a synchronization architecture that allows long critical sections to run without having interrupts disabled for the critical section’s entire duration. Interrupt service routines are separated into a top half and a bottom half. The top half is a normal interrupt service routine, and runs with recursive interrupts disabled. The bottom half is run, with all interrupts enabled, by a miniature scheduler that ensures that bottom halves never interrupt themselves. This architecture is completed by a mechanism for disabling selected bottom halves while executing normal, foreground kernel code. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Interrupt Protection Levels Each level may be interrupted by code running at a higher level, but will never be interrupted by code running at the same or a lower level. User processes can always be preempted by another process when a time-sharing scheduling interrupt occurs. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Process Scheduling Linux uses two process-scheduling algorithms: A time-sharing algorithm for fair preemptive scheduling between multiple processes A real-time algorithm for tasks where absolute priorities are more important than fairness A process’s scheduling class defines which algorithm to apply. For time-sharing processes, Linux uses a prioritized, credit based algorithm. The crediting rule factors in both the process’s history and its priority. This crediting system automatically prioritizes interactive or I/O-bound processes. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Process Scheduling (Cont.) Linux implements the FIFO and round-robin real-time scheduling classes; in both cases, each process has a priority in addition to its scheduling class. The scheduler runs the process with the highest priority; for equal-priority processes, it runs the process waiting the longest FIFO processes continue to run until they either exit or block A round-robin process will be preempted after a while and moved to the end of the scheduling queue, so that round-robing processes of equal priority automatically time-share between themselves. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
File Systems ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
File Systems Το σύστημα αρχείων του Linux εμφανίζεται στο χρήστη ως μια ιεραρχική δομή καταλόγων που είναι σύμφωνο με τις θεμελιώδεις αρχές του UNIX. Εσωτερικά, ο πυρήνας αποκρύπτει τις λεπτομέρειες της υλοποίησης και διαχειρίζεται τα πολλά διαφορετικά συστήματα αρχείων file μέσω ενός αφαιρετικού επιπέδου που είναι το virtual file system (VFS). Το Linux VFS σχεδιάστηκε σύμφωνα με την αντικειμενοστραφή άποψη και αποτελείται από δύο συστατικά : Ένα σύνολο ορισμών που καθορίζουν το αντικείμενο Οι δομές inode-object και file-object αντιστοιχούν σε μεμονωμένα αρχεία Το file system object αντιστοιχεί σε ένα σύστημα αρχείων Ένα επίπεδο λογισμικού για τη διαχείριση αυτών τωναντικειμένων ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
VFS Sun Microsystems introduced the virtual file system framework in 1985 to accommodate the Network File System cleanly. VFS allows diverse specific file systems to coexist in a file tree, isolating all FS-dependencies in pluggable filesystem modules. VFS was an internal kernel restructuring with no effect on the syscall interface. user space syscall layer (file, uio, etc.) Incorporates object-oriented concepts: a generic procedural interface with multiple implementations. network protocol stack (TCP/IP) Virtual File System (VFS) NFS FFS LFS *FS ext2. xfs device drivers Based on abstract objects with dynamic method binding by type...in C. Other abstract interfaces in the kernel: device drivers, file objects, executable files, memory objects. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Linux VFS context ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
How it looks logically… User space Inode Cache VFS Directory Cache NTFS CryptFS Ext2 Buffer Cache Maintained by the kernel Disk Drivers ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
… Linux Kernel Task n Task 1 Task 2 user space kernel space VIRTUAL FILE SYSTEM minix ext2 msdos proc Buffer Cache device driver for hard disk device driver for floppy disk Linux Kernel software Hard Disk Floppy Disk hardware ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
File System Linux files are organized by a hierarchy of labels, commonly known as a directory structure. The files referenced by these labels may be of three kinds: Regular files, which contains a sequence of bytes that generally corresponds to code (programs) or data. Directory files, which are stored on disk in a special format and form the backbone of the file system Special file, which correspond to peripherals such as printers or disks. To the user, Linux file system appears as a hierarchical directory tree obeying UNIX semantics. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
File System / is the root directory; reference point for all directories. Every file has a unambiguous pathname: /home/user1/papers ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Directories σε συστήματα UNIX /bin Binaries which are absolutely essential to run Linux. /boot All the files required for booting Linux on a system. /dev All the devices have their corresponding files here. /etc All the configuration files for the various software are stored here. Don't play with this directory. /home All users will have their 'My Documents' under this directory. If your id is studin, your 'My Documents' (called home-directory) is /home/studin. /lib The libraries required by system-applications. (Just like DLLs in Windows.) /lost+found When a disk-check finds files which are damaged or which are not linked to any directory, they are recovered to this directory. Such damages are almost always due to incorrect shutdown. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Directories σε συστήματα UNIX /mnt The directory where peripherals and other file-systems are mounted. /opt The directory where optional software are installed. /proc proc houses a pseudo-file system. Its contents really do not exist anywhere on the disk, and are made available only when you cd to this directory and look at some file. /root The home-directory for the super-user: root. /sbin The system-administration binaries exist here. /tmp The directory where temporary files are created and stored. All users can save files here. /usr Everything related to users /var Files whose contents vary frequently are in this directory. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
/usr Everything related to users /usr/bin houses critical binaries of the users /usr/include The header-files required by programs for compilation. /usr/lib The libraries required by user-applications. /usr/local Files peculiar to this particular machine. /usr/sbin User-administration binaries. /usr/share Information that can be shared by most users. /usr/src The source-code for the Linux kernel. /usr/X11R6 Files needed by the X Window system. /var Files whose contents vary frequently are in this directory. /var/log The log-files of the system. /var/spool Directories for mail, news, printing and other queued work. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Hard Disk Partitioning Partitioning is a means of sub-dividing a hard disk. A hard disk must contain at least one partition. There are two types of partitions – primary and extended. A disk can contain up to 4 primary partitions or up to 3 primary and 1 extended partition. One primary partition may be designated as active, this will be used for booting the computer. Different operating systems can be installed on different primary partitions – allowing multi-booting. An extended partition cannot be accessed directly by the operating system but is instead sub-divided into logical drives. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Disk Partitioning : fdisk Partition is large group of sectors allocated for a specific purpose IDE disks limited to 4 physical partitions Logical (extended) partition inside physical partition Specify number of cylinders to use Specify type Magic number recognized by OS / (root) usr tmp home ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Hard Disk Initialization In order to be usable by the OS a partition must be initialized. In UNIX/Linux the mkfs command is used, in Windows the command is FORMAT. The initialisation process sets up the necessary structures on a disk partition. In UNIX/Linux an initialized partition is referred to as a file system on Windows it is called a drive. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
File System Creation (Format) Low-level Format Logical Format: Create file system structure Super block Magic number, block size and etc. Bitmaps (blocks, i-node), Pointers to i-node blocks (or FAT) (i-nodes) Tools Windows: format Linux: mke2fs ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
UNIX/Linux File System – Volume Structure When the mkfs command is run to initialize a partition the following layout is created: boot block: first stage boot program. super block: contains details of disk size and allocation of inodes and data blocks. i-nodes: storage space for inodes. data Blocks: rest of disk available for directories and files. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
UNIX/Linux File System – Free Space Control When the mkfs command is run it creates a chain of linked blocks. The super block contains the start block in the chain. Each block contains an array of free data block numbers and a pointer to the next block in the chain. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Mounting Before mounting After mounting Separate file systems ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Logical Volumes File systems on physical volumes (partitions) A sequential series of blocks on a physical disk. Historically, a partition size is static. Shortcomings? What should be the size of a partition? Can a partition be resized when needed? Can a file system be built over multiple disks? References http://www.suse.de/en/whitepapers/lvm/ http://ds9a.nl/lvm-howto/ http://www.tldp.org/HOWTO/LVM-HOWTO/ ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Logical Volume Management A layer of abstraction over the storage: LVM re-organizes disk blocks in physical partitions into logical volumes. /dev/hda1, /dev/sda2 … /dev/vg0/usrlv, /dev/vg0/varlv, /dev/vg0/homelv A file system is installed on a logical volume Separates hardware and software storage management LVM hides the hardware details May change configurations during runtime. ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Filesystem Comparison Minix Ext Xia Ext2 Maximal FS size 64MB 2GB 2GB 4TB Maximal filesize 64MB 2GB 64MB 2GB Maximal filename 14/30 chars 255 chars 248 chars 255 chars 3 timestamps no no yes yes Extensible? no no no yes no Can vary block size? no no yes Code is maintained? no ? yes yes ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Common concepts Files are represented by inodes Directories are special files (dentries) Devices accessed by I/O on special files UNIX filesystems can implement ‘links’ ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
i-nodes A structure that contains file’s description: Type Access rights Owners Timestamps Size Pointers to data blocks Kernel keeps the inode in memory (open) ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
i-node diagram inode Direct blocks File info Indirect blocks Double ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Directories These are structured in a tree hierarchy Each can contain both files and directories A directory is just a special type of file Special user-functions for directory access Each dentry contains filename + inode-no Kernel searches the direrctory tree translates a pathname to an inode-number ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Directory diagram i-node Table Directory name1 i1 name2 i2 i3 name3 i4 ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Links Multiple names can point to same inode The inode keeps track of how many links If a file gets deleted, the inode’s link-count gets decremented by the kernel File is deallocated if link-count reaches 0 This type of linkage is called a ‘hard’ link Hard links may exist only within a single FS Hard links cannot point to directories (cycles) ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Symbolic Links Another type of file linkage (‘soft’ links) Special file, consisting of just a filename Kernel uses name-substitution in search Soft links allow cross-filesystem linkage But they do consume more disk storage ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03
Filesystem performance Two predominant performance criteria: Speed of access to file’s contents Efficiency of disk storage utilization How can these be meaningfully measured How do we screen out extraneous factors The underlying hardware medium The user-interface software, etc ΑΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ / 03