Σύνοψη 5ης ∆ιάλεξης Λειτουργικό Σύστημα Minix Σύνοψη Μαθήματος

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 2ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 26 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 11.
Advertisements

Παπακώστας Μιχάλης ΑΜ:
ΕΡΓΑΣΤΉΡΙΟ ΛΕΙΤΟΥΡΓΙΚΏΝ ΣΥΣΤΗΜΆΤΩΝ ΜΆΘΗΜΑ 6OΥ ΕΞΑΜΉΝΟΥ, ΤΟΜΈΑΣ ΛΟΓΙΚΟΎ ΚΑΙ ΥΠΟΛΟΓΙΣΤΏΝ Δρ. Α. Κομνηνός
ΕΡΓΑΣΤΉΡΙΟ ΛΕΙΤΟΥΡΓΙΚΏΝ ΣΥΣΤΗΜΆΤΩΝ ΜΆΘΗΜΑ 6OΥ ΕΞΑΜΉΝΟΥ, ΤΟΜΈΑΣ ΛΟΓΙΚΟΎ ΚΑΙ ΥΠΟΛΟΓΙΣΤΏΝ Δρ. Α. Κομνηνός
ΕΡΓΑΣΤΉΡΙΟ ΛΕΙΤΟΥΡΓΙΚΏΝ ΣΥΣΤΗΜΆΤΩΝ ΜΆΘΗΜΑ 6OΥ ΕΞΑΜΉΝΟΥ, ΤΟΜΈΑΣ ΛΟΓΙΚΟΎ ΚΑΙ ΥΠΟΛΟΓΙΣΤΏΝ Δρ. Α. Κομνηνός
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 1ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 5 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 11.
Κεφάλαιο 1ο Εισαγωγή σε Λειτουργικά Συστήματα Ορισμός ΛΣ
Σύνοψη 2ης ∆ιάλεξης Περιβάλλον MINIX Σύνοψη Μαθήματος
Δημιουργία blog (ιστολογίου) με το WordPress Συνάντηση 2 1.
Φροντιστήριο Εργ. Λειτουργικών Συστημάτων Αλγόριθμοι ανάθεσης μνήμης.
Δημιουργία blog (ιστολογίου) με το WordPress Συνάντηση 2 1.
Σύνοψη 7ης ∆ιάλεξης Λειτουργικό Σύστημα Minix Σύνοψη Μαθήματος
ΕΡΓΑΣΤΉΡΙΟ ΛΕΙΤΟΥΡΓΙΚΏΝ ΣΥΣΤΗΜΆΤΩΝ ΜΆΘΗΜΑ 6OΥ ΕΞΑΜΉΝΟΥ, ΤΟΜΈΑΣ ΛΟΓΙΚΟΎ ΚΑΙ ΥΠΟΛΟΓΙΣΤΏΝ Δρ. Α. Κομνηνός
Εργαστήριο Λειτουργικών Συστημάτων Μάθημα 6oυ Εξαμήνου, Τομέας Λογικού και Υπολογιστών Δρ. Α. Κομνηνός/Επ. Καθ. Χ. Μακρής
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
Περίληψη Αρχιτεκτονική Μικροεπεξεργαστών MIPS-32
3. Αρχιτεκτονικές Λ.Σ. Μονολιθικά συστήματα
File Management και I/O στο UNIX
Εισαγωγή στο UNIX και άλλα εργαλεία Pedro Trancoso Γιαννάκης Σαζεϊδης.
Λειτουργικά Συστήματα Ι « Παραδοσιακά Λειτουργικά Συστήματα »
Λειτουργικά Συστήματα
ΕΡΓΑΣΤΉΡΙΟ ΛΕΙΤΟΥΡΓΙΚΏΝ ΣΥΣΤΗΜΆΤΩΝ ΜΆΘΗΜΑ 6OΥ ΕΞΑΜΉΝΟΥ, ΤΟΜΈΑΣ ΛΟΓΙΚΟΎ ΚΑΙ ΥΠΟΛΟΓΙΣΤΏΝ Δρ. Α. Κομνηνός
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 19 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 1.
ΕΡΓΑΣΤΉΡΙΟ ΛΕΙΤΟΥΡΓΙΚΏΝ ΣΥΣΤΗΜΆΤΩΝ ΜΆΘΗΜΑ 6OΥ ΕΞΑΜΉΝΟΥ, ΤΟΜΈΑΣ ΛΟΓΙΚΟΎ ΚΑΙ ΥΠΟΛΟΓΙΣΤΏΝ Δρ. Α. Κομνηνός
JAVA και SQL Δαμιανός Χατζηαντωνίου
Παρουσίαση του Νέου Λυκείου για όλες τις Τάξεις
Λειτουργικά Συστήματα Ι
Δρ. Α. Κομνηνός/Δρ. Χ. Μακρής
Weatherly (2009) MinixVM: An Implementation of Virtual Memory in Minix 3.
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
Σχολικός εκφοβισμός τέλος!! Αντωνία Παπαδοπούλου Μαριαλένα Σπύρου Ιωάννα Φώτα ΝΟΕΜΒΡΙΟΣ 2014.
Εργαστήριο Λειτουργικών Συστημάτων Φροντιστήριο 1 ο – Εισαγωγή στο MINIX 3 Ντίρλης Νικόλαος.
ΕΡΓΑΣΤΉΡΙΟ ΛΕΙΤΟΥΡΓΙΚΏΝ ΣΥΣΤΗΜΆΤΩΝ ΜΆΘΗΜΑ 6OΥ ΕΞΑΜΉΝΟΥ, ΤΟΜΈΑΣ ΛΟΓΙΚΟΎ ΚΑΙ ΥΠΟΛΟΓΙΣΤΏΝ Δρ. Α. Κομνηνός
Σημαντικές ημερομηνίες 384 γέννηση στον σημερινό Σταυρό της Χαλκιδικής 367–347 πρώτη αθηναϊκή περίοδος Άσσος, Λέσβος, Μακεδονία 334–323 δεύτερη αθηναϊκή.
ΕΡΓΑΣΤΉΡΙΟ ΛΕΙΤΟΥΡΓΙΚΏΝ ΣΥΣΤΗΜΆΤΩΝ ΜΆΘΗΜΑ 6OΥ ΕΞΑΜΉΝΟΥ, ΤΟΜΈΑΣ ΛΟΓΙΚΟΎ ΚΑΙ ΥΠΟΛΟΓΙΣΤΏΝ Δρ. Α. Κομνηνός
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αρχεία.
ΕΡΓΑΣΤΉΡΙΟ ΛΕΙΤΟΥΡΓΙΚΏΝ ΣΥΣΤΗΜΆΤΩΝ ΜΆΘΗΜΑ 6OΥ ΕΞΑΜΉΝΟΥ, ΤΟΜΈΑΣ ΛΟΓΙΚΟΎ ΚΑΙ ΥΠΟΛΟΓΙΣΤΏΝ Δρ. Α. Κομνηνός
ΗΛΕΚΤΡΟΝΙΚΟΣ ΦΑΚΕΛΟΣ ΑΣΘΕΝΟΥΣ
D P ROGRAMMING L ANGUAGE Νικόλας Χ''θεοφάνους Γιάννης Κωνσταντίνου Δεσποιάνα Αντωνίου.
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Εισαγωγή στην Πληροφορική και στην διαχείριση μεγάλου όγκου δεδομένων Γρηγόριος Αμούτζιας Επικ. Καθηγητής Βιοπληροφορικής στη Γενωμική Τμήμα Βιοχημείας.
Εισαγωγή στην Πληροφορική και στην διαχείριση μεγάλου όγκου δεδομένων Γρηγόριος Αμούτζιας Επικ. Καθηγητής Βιοπληροφορικής στη Γενωμική Τμήμα Βιοχημείας.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ -150 Προγραμματισμός Αρχεία.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
ΗΥ150 – ΠρογραμματισμόςΞ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Αρχεία.
Ξεχωριστή Μεταγλώττιση & Χώροι Ονομάτων Αντικειμενοστραφής Προγραμματισμός.
ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΣΕΡΡΕΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ. Ε. ΤΟΜΕΑΣ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΤΕΧΝΙΚΩΝ.
Σύστημα Αρχείων (1/2) Εισαγωγή στην Πληροφορκή 1 Η κύρια μνήμη είναι η μνήμη που διατηρεί τα προγράμματα που εκτελούνται και τα δεδομένα τους  Όλες οι.
Τεχνικές Εξοικονόμησης Χρόνου Αναφέρετε κάποιες τεχνικές που μπορούν να βοηθήσουν στην εξοικονόμηση χρόνου.
Λειτουργικά Συστήματα Ενότητα # 4: Συστήματα Αρχείων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής.
Εργαστήριο «Διαχείριση & Ασφάλεια Δικτύων» Επισκόπηση Βασικών Δικτυακών Λειτουργιών Διδάσκων: Δρ. Γενειατάκης Δημήτρης Τμήμα Επιστήμης.
Βασικές έννοιες Αντικειμενοστραφούς Προγραμματισμού ΙΙ
5ο Μάθημα Κλάσεις και αντικείμενα
Εισαγωγή στον Προγ/μό Υπολογιστών
Κατανεμημένα Συστήματα
Προγραμματισμός Ι Εισαγωγικά θέματα.
Βασικές έννοιες Αντικειμενοστραφούς Προγραμματισμού ΙΙ
Ειδικά Θέματα σε Κινητά και Ασύρματα Δίκτυα: 1η εργαστηριακή άσκηση
Η ΛΟΓΙΚΗ ΟΡΓΑΝΩΣΗ ΤΟΥ.
Λειτουργικά Συστήματα
Εισαγωγή στην Πληροφορική μεγάλου όγκου δεδομένων
Λογαριασμοί (accounts) και σύστημα αρχείων (filesystem) του UΝΙΧ
Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών
Τα βασικά χαρακτηριστικά του αρχείου: Όνομα:
ΣΥΓΧΡΟΝΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Τρίτη Έκδοση ANDREW S
Διάλεξη #10: Εκτέλεση Java χωρίς το BlueJ
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΙΣΑΓΩΓΗ
Είσοδος/έξοδος χαμηλού επιπέδου
Μεταγράφημα παρουσίασης:

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

Σύνοψη 5ης ∆ιάλεξης Λειτουργικό Σύστημα Minix Σύνοψη Μαθήματος Οργάνωση του Λειτουργικού Συστήματος Οργάνωση πηγαίου κώδικα Minix recompilation Σύνοψη Μαθήματος Επόμενη ∆ιάλεξη

Ιεραρχική ∆ομή Συστήματος Τυπική δομή ενός μονολιθικού λειτουργικού συστήματος Ο πυρήνας προσφέρει ένα σύνολο από λειτουργίες Υλοποιεί διάφορες βοηθητικές συναρτήσεις

Η Εσωτερική ∆ομή του Συστήματος Μπορούμε να ορίσουμε μια εσωτερική δομή Μια συνάρτηση έχει πρόσβαση (μπορεί να χρησιμοποιήσει) στο αμέσως προηγούμενο επίπεδο (προς τα ‘κάτω’)

Η Εσωτερική ∆ομή του Minix 3 Ορίζει 4 επίπεδα – στο ανώτερο επίπεδο εκτελούνται οι εντολές του χειριστή Οι ενδιάμεσες λειτουργίες υλοποιούνται από εξυπηρέτες (servers, managers . . .) Ο πυρήνας υλοποιεί μόνο το 1ο επίπεδο

Μοντέλο Επικοινωνίας Πελάτη – Εξυπηρέτη Η χρήση λειτουργιών χαμηλότερων επιπέδων γίνεται μέσω ανταλλαγής μηνυμάτων Η επικοινωνία ακολουθεί το μοντέλο Πελάτη – Εξυπηρέτη (Client - Server) Ο πυρήνας του συστήματος εξασφαλίζει την επικοινωνία ∆ιασφαλίζει την επικοινωνία μεταξύ διεργασιών ‘γειτονικών’ επιπέδων

Παράδειγμα Εκτέλεσης και Επικοινωνίας To finish our discussion of the system task, we will look at its role in handling a typical operating service, providing data in response to a read system call. When a user does a read call, the file system checks its cache to see if it has the block needed. If not, it sends a message to the appropriate disk driver to load it into the cache. Then the file system sends a message to the system task telling it to copy the block to the user process. In the worst case, eleven messages are needed to read a block; in the best case, four messages are needed. Both cases are shown in Fig. 2-46. In Fig. 2-46 (a), message 3 asks the system task to execute I/O instructions; 4 is the ACK. When a hardware interrupt occurs the system task tells the waiting driver about this event with message 5. Messages 6 and 7 are a request to copy the data to the FS cache and the reply, message 8 tells the FS the data is ready, and messages 9 and 10 are a request to copy the data from the cache to the user, and the reply. Finally message 11 is the reply to the user. In Fig. 2-46 (b), the data is already in the cache, messages 2 and 3 are the request to copy it to the user and the reply. These messages are a source of overhead in MINIX 3 and are the price paid for the highly modular design.

Κλήσεις Συστήματος στο Minix Το Minix 3 ορίζει 53 βασικές κλήσεις Ακολουθούν το πρότυπο POSIX ∆εν ορίζει αντιστοιχία κλήσεων συστήματος με λειτουργίες Γενική Παρατήρηση Σε ένα σύστημα με 1 επεξεργαστή, ένα πρόγραμμα που τρέχει στο επίπεδο των χειριστών μπορεί να εκτελέσει μόνο μια εντολή (instruction) ανά πάσα χρονική στιγμή Μια κλήση στις λειτουργίες του συστήματος θα σταματήσει την ροή εκτέλεσης του προγράμματος και θα δώσει τον έλεγχο στο Λ.Σ. Οι κλήσεις του συστήματος στο Minix χωρίζονται ως εξής: ∆ιαχείριση διεργασιών Σήματα ∆ιαχείριση αρχείων ∆ιαχείριση συστήματος αρχείων Ασφάλεια / Προστασία ∆ιαχείριση ρολογιού

∆ιαχείριση διεργασιών

Σήματα

∆ιαχείριση αρχείων

∆ιαχείριση συστήματος αρχείων

Ασφάλεια / Προστασία

∆ιαχείριση ρολογιού

Ο κατάλογος /usr/src/ Το Minix αποτελείται από πολλαπλά επίπεδα που διαχωρίζουν τις επιμέρους λειτουργίες του. Η δομή microkernel είναι εμφανής και στην οργάνωση του κώδικα του Ο κώδικας του Minix βρίσκεται εξ ́ ολοκλήρου κάτω από τον κατάλογο /usr/src/ /usr/src/kernel/ /usr/src/drivers/ /usr/src/servers/ /usr/src/include/

Βασικός κώδικας πυρήνα Minix /usr/src/kernel/ -- Ο κώδικας του πρώτου επιπέδου του πυρήνα του minix, που περιέχει πληροφορίες για τον μηχανισμό περάσματος μηνυμάτων, το μηχανισμό δρομολόγησης, το ρολόι του συστήματος, το μηχανισμό των system calls /usr/src/drivers/ -- Ο κώδικας για τη χρήση των συσκευών του συστήματος, όπως δίσκους, την κονσόλα, τον εκτυπωτή, κτλ /usr/src/servers/ -- Περιέχει τον κώδικα για τους βασικούς servers του συστήματος. Αφού το Minix δεν είναι μονολιθικό, η διαχείριση διεργασιών, το συστήμα αρχείων και άλλοι μηχανισμοί, υλοποιούνται σα servers και βρίσκονται εδώ. /usr/src/include/ -- Ο κώδικας επικεφαλίδων του minix

́Αλλοι κατάλογοι /usr/src/lib/ Κώδικας για τις βασικές συναρτήσεις βιβλιοθηκών, όπως open, read κτλ /usr/src/tools/ Αρχείο Makefile και scripts που χρησιμεύουν στο recompilation του πυρήνα /usr/src/boot Ο κώδικας για την εκίνηση του Minix /usr/src/include Ο κώδικας επικεφαλίδων του minix. /usr/src/commands/ Κώδικας βασικών εντολών για τη χρήση του συστήματος, όπως cat, cp, ls, pwd, date κτλ /usr/src/test/ Κώδικας από τεστ που επιβεβαιώνουν την ορθή λειτουργία του πυρήνα /usr/src/etc/ Βσικό αντίγραφο scripts και config αρχείων του /etc

Χρήση κεφαλίδων στη C #include <filename> Σημαίνει ‘‘compiler αναζήτησε το filename στον standard φάκελο με τα header files’’ (συνήθως /usr/include/ - έτσι είναι στο Minix) Χρησιμεύει στο να βρίσκονται τα αρχεία επικεφαλίδων για συναρτήσεις συστήματος και βιβλιοθηκών σε ένα γνωστό μέρος ώστε να μη δυσκολεύουν τον προγραμματιστή με την αναζήτηση τους #include ‘‘filename’’ Σημαίνει ‘‘compiler αναζήτησε το filename πρώτα στον τρέχον κατάλογο και μετά στον standard φάκελο με τα header files’’. Χρησιμεύει για να μπορέσει ο προγραμματιστής να χρησιμοποιήσει δικές του βιβλιοθήκες ή βιβλιοθήκες εκτός συστήματος Μπορούν κάποιες βιβλιοθήκες συστήματος να παρακαμφθούν

/usr/src/include/ Γίνεται copy στο /usr/include/μετά από κάθε recompilation /usr/src/include/sys extra header files για την υποστήριξη του POSIX /usr/src/include/minix κοινά header files όλων των επιπέδων του πυρήνα /usr/src/include/ibm header files μόνο για την πλατφόρμα των IBM PC-compatible συστημάτων Συμπεριλαμβάνονται extra αρχεία και κατάλογοι για την υποστήριξη extensions στο Minix (πχ δίκτυο) Master Headers: χρησιμοποιούνται από όλα τα .c αρχεία του καταλόγου όπου βρίσκονται /usr/src/kernel/kernel.h /usr/src/servers/mm/mm.h /vm/vm.h /usr/src/servers/fs/fs.h /vfs/vfs.h

Σημαντικά header files Master Headers: χρησιμοποιούνται από όλα τα .c αρχεία του καταλόγου όπου βρίσκονται /usr/src/kernel/kernel.h – kernel /usr/src/servers/mm/mm.h – memory manager (/vm/vm.h) /usr/src/servers/fs/fs.h – file system (/vfs/vfs.h) /usr/include/unistd.h περιέχει σταθερές και macros του POSIX καθώς και τις δηλώσεις των συναρτήσεων του POSIX και των συναρτήσεων πρόσβασης στα system calls. /usr/include/minix/config.h Το βασικό configuration αρχείο του kernel (customization parameters)

Συχνά συναντούμενα header files type.h: περιέχει ορισμούς δομών δεδομένων και τύπων const.h: περιέχει define statements σταθερών που συνήθως δεν αλλάζουν μεταξύ των compilations glo.h: περιέχει global δεδομένα που δηλώνονται ως extern proto.h: περιέχει τις δηλώσεις συναρτήσεων που ορίζονται σε άλλα αρχεία του ίδιου directory

Θέματα Κώδικα Κατά την ανάγνωση του κώδικα συναντάμε την εντολή _PROTOTYPE Είναι ένα macro για τον ορισμό των συναρτήσεων αναλόγως την έκδοση της C που χρησιμοποιούμε για το compilation Το _PROTOTYPE(return-type function-name, (argument-type argument,...)) μετατρέπεται σε return-type function-name(argument-type argument, ...) Μεταβλητές που θέλουμε να είναι καθολικές σε όλα τα αρχεία του κώδικα δηλώνονται με τη EXTERN Οι συναρτήσεις που έχουν το πρόθεμα PRIVATE μπορούν να χρησιμοποιηθούν μόνο από το αρχείο που τις ορίζουν Οι συναρτήσεις που έχουν το πρόθεμα PUBLIC μπορούν να χρησιμοποιηθούν από εξωτερικά αρχεία που κάνουν include τα αρχεία που τις ορίζουν

Compiling Minix 3 bash-3.00# cd /usr/src/tools bash-3.00# make hdboot http://wiki.minix3.org/en/DevelopersGuide/RebuildingSystem bash-3.00# cd /usr/src/tools bash-3.00# make hdboot Αντικατάσταση του /usr/include/ με το /usr/src/include/ Recompilation των αρχείων κάτω από τους καταλόγους /usr/src/kernel/, /usr/src/servers/ και /usr/src/drivers/ σε object files. Linking των object files κάθε καταλόγου σε ενιαίο εκτελέσιμο πρόγραμμα Ομοίως για τα υπόλοιπα χρήσιμα (εκτός πυρήνα) sources (driver συσκευής που θα φιλοξενήσει τον πυρήνα, άλλοι servers, log, tty κτλ) Το σύνολο των παραπάνω προγραμμάτων θα αποτελέσει το image του πυρήνα Θα γίνει εγκατάσταση του νέου image

Παράδειγμα Θέλουμε να εξετάσουμε την mkdir #find /usr/src –name mkdir*.c /usr/src/lib/libc/sys-minix/mkdir.c #cat /usr/src/lib/libc/sys-minix/mkdir.c | more PUBLIC int mkdir (…) { … return(_syscall(VFS_PROC_NR, MKDIR, &m)); }

Παράδειγμα 3.1.7 Τα system calls είναι στο /usr/src/lib/libc/posix _commandname.c

́Ενα απλό παράδειγμα (3) ... Βρήκαμε ποιο system call καλεί αυτή η συνάρτηση βιβλιοθήκης Επόμενο βήμα: πρέπει να κοιτάξουμε στον πυρήνα για το syscall που στέλνεται στον FS και λέγεται MKDIR Αν δεν είμαστε 100% σιγουροι ls –l /usr/src/servers (λίστα όλων των server folders) Ελέγχουμε το αρχείο /usr/include/minix/callnr.h Αναζητούμε αυτόν τον αριθμό στο αντίστοιχο /usr/src/servers/fs/table.c ∆ιαπιστώνουμε ότι υπάρχει ένας πίνακας όπου ο αριθμός 39 αντιστοιχεί σε μια συνάρτηση do_mkdir() που χειρίζεται το syscall #define MKDIR 39

́Ενα απλό παράδειγμα (4) PUBLIC _PROTOTYPE (int (*call_vec[]), (void)) = { … do_mkdir, /* 39 = mkdir */ …} Επόμενος στόχος ... που είναι η do_mkdir() ? στο αρχείο open.c (http://www.minix3.org/doc/AppendixB-Index.html) ... Βρήκαμε τη συνάρτηση που χειρίζεται το system call Ας πειραματιστούμε ! – Ε∆Ω θα προσθέτουμε μια απλή printf Recompile (make hdboot) -- και επανεκκίνηση /usr/src/servers/vfs/open.c PUBLIC int do_mkdir() { /* Perform the mkdir(name, mode) system call. */ ... }

Παράδειγμα

Αποτέλεσμα

Βασική ∆ομή του Λειτουργικού Συστήματος Είδαμε πως μπορούμε να κάνουμε αλλαγές στον πυρή́να του Λ.Σ. Εξετάσαμε την λειτουργία μιας χαρακτηριστικής εντολής Βρήκαμε τον κώδικας της εντολής (εκτελέσιμο πρόγραμμα) ∆ιαπιστώσαμε ότι χρησιμοποιεί μια συνάρτηση του συστήματος αρχείων Ανατρέξαμε στον κώδικα του συστήματος αρχείων Εντοπίσαμε την συνάρτηση που χειρίζεται η εντολή Γενικότερα ́Ενα πρόγραμμα (εκτελέσιμο) χρησιμοποιεί λειτουργίες του συστήματος Οι λειτουργίες υλοποιούνται από συγκεκριμένες συναρτήσεις Οι συναρτήσεις βασίζονται σε ένα σύνολο από βοηθητικές συνιστώσες Υπάρχει μια ιεραρχική δομή στην εκτέλεση των λειτουργιών ...

Βιβλιογραφία Βιβλίο ‘‘Operating Systems Design and Implementation, Third Edition’’ (Andrew S. Tanenbaum) Κεφάλαιο 1: Εισαγωγή Παράγραφος 1.4 System Calls Παράγραφος 1.5 Operating System Structure Κεφάλαιο 2: Processes Βιβλίο ‘Σύγχρονα Λειτουργικά Συστήματα’ (A.Tanenbaum) Κεφάλαιο 1: Εισαγωγή Παράγραφος 1.6 Κλήσεις Συστήματος Παράγραφος 1.7 Η ∆ομη των Λειτουργικών Συστημάτων Κεφάλαιο 2: ∆ιεργασίες Κεφάλαιο 10: Μελέτη Περίπτωσης 1: Unix και Linux Παράγραφος 10.3 Οι ∆ιεργασίες στο UNIX

Επόμενη ∆ιάλεξη Ο Πυρήνας του MINIX 3 και το System Task Επανάληψη από μάθημα ‘Λειτουργικά Συστήματα Ι’ Κεφάλαιο 2: ∆ιεργασίες Βιβλίο ‘Σύγχρονα Λειτουργικά Συστήματα’ (A.Tanenbaum) Βιβλίο ‘‘Operating Systems Design and Implementation, Third Edition’’ (Andrew S. Tanenbaum) Κεφάλαιο 2: Processes

Σύνοψη Μαθήματος Περιβάλλον προγραμματισμού UNIX Ο επεξεργαστής ροών κειμένου sed Η γλώσσα προγραμματισμού για διαχείριση κειμένων awk

Βιβλιογραφία Βιβλίο ‘Το περιβάλλον Προγραμματισμού UNIX’’ (B.Kernighan, R.Pike) Κεφάλαιο 4: Φίλτρα