Εργαστήριο Λειτουργικών Συστημάτων. Minix Overview

Σχετικά έγγραφα
Πρότυπη Εργαστηριακή Άσκηση

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος

Εργαστήριο Λειτουργικών Συστημάτων. Εισαγωγή

Εισαγωγή στην Πληροφορική

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΙΣΑΓΩΓΗ

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Σύντομη εισαγωγή στο εργαστήριο

Προγραμματισμός Ι. Πολλαπλά Αρχεία. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Λειτουργικά Συστήματα (Λ/Σ)

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στο Λ.Σ. UNIX

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. UNIX Μέρος 1

Η γλώσσα προγραμματισμού C

Λειτουργικά Συστήματα (Λ/Σ)

Εργαστήριο ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ UNIX

Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Το λειτουργικό σύστημα. Προγραμματισμός II 1

CE121 Προγραµµατισµός 2. Εισαγωγή σε Makefiles. CE121 -

Λειτουργικά Συστήματα (ΗΥ-345) Χειμερινό Εξάμηνο

Κεφάλαιο 4. Λογισμικό Συστήματος

Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Εργαστήριο Λειτουργικών Συστημάτων. Inside System Calls

Το λειτουργικό σύστημα. Προγραμματισμός II 1

CE121 Προγραµµατισµός 2. Εισαγωγή σε Makefiles. CE121 -

Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση:

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

Λειτουργικό Σύστημα: διαχείριση πόρων. Τι είναι ένα αρχείο ; Διαχείριση αρχείων. Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Προγραμματισμός Διαχείρισης Συστημάτων ΙΙ

Προεπεξεργαστής C. Προγραμματισμός Ι 1

ΤρόποςΑξιολόγησης: α) Εργαστήρια (Προαιρετικάµε 20% - 35% βαρύτητα µόνοθετικά) β) Τελική Γραπτή Εξέταση

Λειτουργικά Συστήματα

Λειτουργικό Σύστημα: διαχείριση πόρων. Διαχείριση αρχείων. Τι είναι ένα αρχείο ; Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

Λειτουργικά Συστήματα Η/Υ

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

Κεφάλαιο 4 Λογισμικό συστήματος. Εφαρμογές Πληροφορικής Κεφ.4 Καραμαούνας Πολύκαρπος 1

Εργαστήριο ΔΙΑΧΕΙΡΙΣΗ ΑΡΧΕΙΩΝ & ΚΑΤΑΛΟΓΩΝ ΣΤΟ UNIX. Εισαγωγή

Παράρτηµα Α : Εισαγωγή στο Linux.

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Επισκόπηση Λ.Σ. Εργαστηριακές Ασκήσεις

Λειτουργικά Συστήματα. Εισαγωγή

Δίκτυα Η/Υ στην Επιχείρηση

Λιβανός Γιώργος Εξάμηνο 2017Β

Μερικές άλλες χρήσιμες εντολές

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

Προγραμματισμός Ι (ΗΥ120)

Σύντομη εισαγωγή στο λειτουργικό σύστημα Linux

$./jms console -w <jms in> -r <jms out> -o <operations file> namedpipe. (standard input).

CloudBox!: Ένα εργαλείο cloud αποθήκευσης αρχείων με κατανεμημένο τρόπο

Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ

Μεταφραστής (Compiler)

make Προγραμματισμός II 1

ΒασικέςέννοιεςτουUNIX: Πλοήγηση στο Σύστημα Αρχείων, ΟφλοιόςτουUNIX, Βοηθητικά Προγράμματα, ΗδομήτουΠυρήνα.

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος Εισαγωγή. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Λειτουργικά Συστήµατα

Εισαγωγή στον Προγραμματισμό Μάθημα 1: Βασική Πλοήγηση σε Linux CLI. Οκτώβριος 2016 Χ. Αλεξανδράκη

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

3ο Εργαστήριο Βασικές εντολές διαχείρισης αρχείων σε LINUX

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

FTP - (File Transfer Protocol ) Πρωτόκολλο Μεταφοράς Αρχείων

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Εισαγωγή στα Λειτουργικά Συστήματα

Λειτουργικά Συστήματα

Μάθημα 10 ο ΔΙΑΧΕΙΡΙΣΗ ΕΙΣΟΔΟΥ ΕΞΟΔΟΥ (INPUT/OUTPUT)

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

PROXY SERVER. Άριστη πύλη διαχωρισμού μεταξύ του εσωτερικού δικτύου και του Internet.

Προεπεξεργαστής της C. C Preprocessor. Προγραμματισμός II 1

Μεθόδων Επίλυσης Προβλημάτων

Κατανεμημένα Συστήματα

Διαδικασιακός Προγραμματισμός

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Κεφάλαιο 4: Λογισμικό Συστήματος

Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο

Εισαγωγή στο Linux και στο περιβάλλον εργασίας.

Επιτεύγµατα των Λ.Σ.

ΠΑΓΚΑΛΟΣ ΙΩΑΝΝΗΣ ΣΙΣΜΑΝΗΣ ΝΙΚΟΣ. File Transfer Protocol

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 6 C & Assembly

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

Εισαγωγή στον Προγραμματισμό με C++

Διάλεξη 22η: Επιπλέον στοιχεία της C

Κεφάλαιο 3 Λειτουργικά Συστήματα Β ΕΠΑΛ

Εργαστήριο 9: Αρχεία

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Κεφάλαιο : Εισαγωγή στην C: (Διαλέξεις 3-4)

Διαδικασία Ανάπτυξης Λογισμικού

2η Εργαστηριακή Άσκηση

Λειτουργικό σύστημα Unix

Λειτουργικά Συστήματα Ι - Εργαστήριο

Μέρος Ι: Εγκατάσταση και ιαμόρφωση των MySQL, Apache και PHP

[11] Υπολογιστικά συστήματα: Στρώματα. Περιεχόμενα. Εισαγωγή. επικοινωνία εφαρμογές λειτουργικό σύστημα προγράμματα υλικό

Open eclass Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης

Λειτουργικά Συστήματα (Λ/Σ)

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι (ΗΥ120)

Transcript:

Εργαστήριο Λειτουργικών Συστημάτων Minix Overview

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

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

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

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

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

Παράδειγμα disk read 7

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

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

Σήματα 11

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

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

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

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

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

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

Άλλοι κατάλογοι /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 18

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

/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 PCcompatible συστημάτων Συμπεριλαμβάνονται 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 20

Σημαντικά 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) 21

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

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

Compiling Minix 3 http://wiki.minix3.org/en/developersguide/rebuildingsystem bash-3.00# cd /usr/src/releasetools 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 24

Παράδειγμα Θέλουμε να εξετάσουμε την 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)); 25

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

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

Παράδειγμα 29

Αποτέλεσμα 30

Βασική ομή του Minix3 Είδαμε πως μπορούμε να κάνουμε αλλαγές στον πυρήνα του Λ.Σ. Εξετάσαμε τη λειτουργία μιας χαρακτηριστικής εντολής (mkdir). Βρήκαμε τον κώδικα της εντολής ιαπιστώσαμε ότι χρησιμοποιεί μια συνάρτηση του συστήματος αρχείων Ανατρέξαμε στον κώδικα του συστήματος αρχείων Εντοπίσαμε τη συνάρτηση που καλεί η εντολή Γενικότερα Ένα πρόγραμμα (εκτελέσιμο) χρησιμοποιεί system calls Τα system calls υλοποιούνται από συγκεκριμένες συναρτήσεις Υπάρχει μια ιεραρχική δομή στην εκτέλεση των λειτουργιών... 31

Βιβλιογραφία Βιβλίο 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 32