Εργαστήριο Λειτουργικών Συστημάτων File Systems
Συνοπτικά Περιβάλλον MINIX φςτθμα Αρχείων Αρχεία υςκευών Σοποκζτθςθ Αποκθκευτικών Μονάδων 2
Γενικά Όλεσ οι οντότθτεσ που χειρίηεται το MINIX εμφανίηονται ωσ αρχεία Κανονικά files και directories Αρχεία δεδομζνων, εφαρμογζσ, εντολζσ I/O devices (υςκευζσ Ειςόδου/Εξόδου) Μνιμθ Επικοινωνία Διεργαςιών Σο ςφςτθμα αρχείων είναι ιεραρχικό Σα directories και τα αρχεία ςχθματίηουν ζνα δζντρο (tree hierarchy) Η ρίηα του δζντρου ονομάηεται root directory και απεικονίηεται με / Η δομι του ςυςτιματοσ αρχείων διαφζρει μεταξφ των εκδόςεων UNIX Οριςμζνα directories και αρχεία εμφανίηονται ςε όλα τα ςυςτιματα 3
Παράδειγμα Συστήματος Αρχείων 4
Βασικοί φάκελοι και περιεχόμενο /bin -- Εκτελζςιμα προγράμματα /etc -- Ρυκμίςεισ ςυςτιματοσ και εφαρμογών /usr -- Αρχεία εφαρμογών, βιβλιοκθκών και χειριςτών /usr/bin -- Εκτελζςιμα προγράμματα /usr/local -- Λογιςμικό ανεπτυγμζνο από του χειριςτζσ /sbin -- Εκτελζςιμα προγράμματα για τον διαχειριςτι /var -- Ουρζσ και πλθροφορίεσ λειτουργίασ ςυςτιματοσ /tmp -- Προςωρινά δεδομζνα /dev -- υςκευζσ /boot -- Αρχεία απαραίτθτα για τθν εκκίνθςθ του ςυςτιματοσ /root -- Φάκελοσ χειριςτι ςυςτιματοσ 5
Παράδειγμα Συστήματος Αρχείων Κάκε φάκελοσ περιζχει δφο εικονικοφσ φακζλουσ: «.» και «..» Μπορείτε να τουσ δείτε με ls -la Η μονι τελεία αντιπροςωπεφει τον ίδιο τον φάκελο./myfile myfile Η διπλι τελεία αντιπροςωπεφει τον φάκελο γονζα ςτο δζντρο 6
Απεικόνιση Αρχείων Κάκε αρχείο ζχει όνομα, περιεχόμενο, πλθροφορίεσ διαχείριςθσ Σα μετα-δεδομζνα αποκθκεφονται με τθ χριςθ i-nodes 7
Παράδειγμα Μεταδεδομένων Αρχείων 8
Access Control Κάκε i-node προςφζρει 16 bit για τα κζματα προςταςίασ Σα πρώτα 4 bits δεν μποροφν να αλλαχκοφν Κακορίηουν αν πρόκειται για αρχείο, directory, ι symbolic link (ςφνδεςμο) Σα επόμενα 12 bits μποροφν να αλλαχκοφν από τον χειριςτι Σα πρώτα 3 είναι τα s-bits και το t-bit: SETUID SETGID STICKY BIT Σα τελευταία 9 χωρίηονται ςε 3 ομάδεσ των 3 bits, και ορίηουν αν το αρχείο προςφζρεται για read, write, και execute, από τον user (κάτοχο του αρχείου), group (χριςτεσ με ίδιο group id), και others (όλουσ τουσ υπόλοιπουσ χριςτεσ) 9
Μερικά παραδείγματα Type User Group Others d rwx r-x --- Πρόκειται για ζναν φάκελο Ο user (ιδιοκτιτθσ) ζχει πλιρθ πρόςβαςθ Όςοι χριςτεσ ανικουν ςτθν ομάδα που ορίηει το αρχείο μποροφν να προςπελάςουν τα περιεχόμενα του (αλλά όχι να αλλάξουν) Όλοι οι υπόλοιποι χριςτεσ δεν μποροφν να προςπελάςουν τα περιεχόμενα Για να μπορζςουμε να κάνουμε cd ςε ζνα φάκελο πρζπει να ζχουμε δικαίωμα εκτζλεςθσ x 10
Αλλάζοντας τα access control bits Η εντολι chmod επιτρζπει τθν αλλαγι των ςτοιχείων πρόςβαςθσ Μποροφμε να ορίςουμε τθν πρόςβαςθ με δφο τρόπουσ Σο κείμενο -- π.χ. a+r Σουσ 3 Octal -- π.χ. 644 11
Παραδείγματα εντολής chmod Κάνε ένα αρχείο αναγνώσιμο και εγγράψιμο από όλους # chmod a+w myfile Πρόσθεσε την ιδιότητα executable σε ένα φάκελο # chmod u+x mydir/ Άνοιξε όλα τα αρχεία για όλους # chmod 755 * Κάνε ένα αρχείο μόνο αναγνώσιμο για το group του # chmod g-w myfile Προσπέλαση αναδρομική σε κάποιο φάκελο για όλα τα αρχεία # chmod -R a+r mydir/ 13
Αλλάζοντας owner και group Η εντολι chown αλλάηει τον ιδιοκτιτθ ενόσ αρχείου Η εντολι chgrp αλλάηει τθν ομάδα του αρχείου Άλλαξε τον ιδιοκτιτθ ςε κάποιο αρχείο # chown ichatz myfile Άλλαξε τθν ομάδα ενόσ φακζλου # chgrp students mydir/ Άλλαξε τον ιδιοκτιτθ ςε oslab και τθν ομάδα ςε students # chgrp oslab:students myfile mydir/ Προςπζλαςθ αναδρομικι ςε κάποιο φάκελο για όλα τα αρχεία # chown -R ichatz mydir/ 14
Τα s-bits και το t-bit Σα s-bits (SETUID και SETGID) ζχουν διαφορετικι ερμθνεία για αρχεία και φακζλουσ Για εκτελέσιμα αρχεία ορίηουν ότι ανεξάρτθτα από τον χριςτθ που δίνει τθν εντολι, θ διεργαςία κα λειτουργιςει με το user id και/ι το group id του file owner. Για directories ορίηει ότι τα αρχεία που κα δθμιουργθκοφν μζςα ςτο directory κα ανικουν ςτo group που ανικει το directory. τισ υπόλοιπεσ περιπτώςεισ αγνοοφνται Σο t-bit (STICKY BIT) ζχει διαφορετικι ερμθνεία για κάκε ζκδοςθ του UNIX το MINIX 3 δεν ορίηεται το Linux, αν ζνα directory ζχει το sticky bit, τότε κάκε αρχείο μζςα ςτο directory αυτό μπορεί να το ςβιςει μόνο ζνασ από τουσ: file owner directory owner root Για ενεργοποίθςθ του SETUID ςε κάποιο αρχείο: # chmod +s file 15
ιαμοιραζόμενα αρχεία Σα i-nodes επιτρζπουν να ζχουμε διαμοιραηόμενα αρχεία μεταξφ διαφορετικών φακζλων Τπάρχουν δφο τρόποι Με τθν χριςθ symbolic link Με τθν χριςθ hard link Σα περιεχόμενα και μεταδεδομζνα του αρχικοφ αρχείου χρθςιμοποιοφνται για όλεσ τισ λειτουργίεσ Εκτόσ από τθν διαγραφι Δθμιουργία ςυμβολικοφ ςυνδζςμου προσ ζνα φάκελο # ln -s /var/log./log # ls -lg lrwxrwxrwx 1 operator 8 Apr 25 log -> /var/log 16
Παράδειγμα διαμοιραζόμενου αρχείου 17
Ημερομηνίες Πρόσβασης Κάκε i-node διατθρεί πλθροφορίεσ για τθν θμερομθνία τελευταίασ χριςθσ θμερομθνία τελευταίασ αλλαγισ #ls lu drwxr-xr-x 7 ako2 staff 238 21 Mar 15:55 ARGuidance drwxr-xr-x 2 ako2 staff 68 20 Mar 11:59 Applications drwx------ 37 ako2 staff 1258 22 Mar 15:47 Desktop #ls lc drwxr-xr-x 7 ako2 staff 238 21 Mar 16:06 ARGuidance drwxr-xr-x 2 ako2 staff 68 16 Jan 13:44 Applications drwx------ 37 ako2 staff 1258 23 Mar 12:11 Desktop 18
Αρχεία Συσκευών Οι ςυςκευζσ που διαχειρίηεται το ςφςτθμα απεικονίηονται ωσ αρχεία Αποκθκευτικζσ μονάδεσ Κονςόλα Εκτυπωτζσ... Είναι τοποκετθμζνα ςτον φάκελο /dev Σα χρθςιμοποιοφμε ςαν οποιοδιποτε άλλο αρχείο Ζχουν owner και ανικουν ςε κάποιο group Μποροφμε να κζςουμε επίπεδα πρόςβαςθσ Μποροφμε να δθμιουργιςουμε ςυμβολικοφσ ςυνδζςμουσ Μποροφμε να χρθςιμοποιοφμε τισ μεκόδουσ read και write 19
Περιγραφή Αρχείων Συσκευών Οι ςυςκευζσ χαρακτιρων περιγράφονται με το ςφμβολο c Σα δεδομζνα ςτζλνονται απευκείασ ςτθ ςυςκευι Οι ςυςκευζσ block περιγράφονται με το ςφμβολο b Σα δεδομζνα τοποκετοφνται ςε ενδιάμεςο buffer Major & minor device numbers Ο πρώτοσ αρικμόσ (4 για τθν κονςόλα, 1 για το null) λζγεται major device number και ορίηει ποιοσ device driver είναι υπεφκυνοσ για αυτι τθ ςυςκευι. Ο δεφτεροσ αρικμόσ (0, 133, 3) ονομάηεται minor device number και διακρίνει τισ διαφορετικζσ ςυςκευζσ που χειρίηεται ζνασ driver. #cd /dev #ls la crw------- 1 root tty, 4, 0 22 Mar 11:12 console brw-r----- 1 root operator 3, 133 22 Mar 11:12 c0d0 crw-rw-rw- 1 root kmem 1, 3 22 Mar 11:12 null 20
Βασικά Αρχεία Συσκευών στο MINIX 3 Οδθγόσ ςυςκευισ: Memory ram -- το μζροσ τθσ μνιμθσ που είναι ram disk mem -- θ βαςικι μνιμθ του ςυςτιματοσ kmem -- το μζροσ τθσ μνιμθσ που περιζχει τον kernel null -- ειδικι ςυςκευι Floppy disk fd0 -- το πρώτο floppy disk fd0p0 -- το πρώτο partition του πρώτου floppy disk Controller 0 c0d0 -- ο πρώτοσ δίςκοσ ςτον πρώτο controller c0d0p0 -- το πρώτο primary partition του πρώτου δίςκου Κάκε δίςκοσ ζχει το πολφ 4 primary partitions c0d0p0s0 -- το πρώτο subprimary partition του πρώτου partition Κάκε primary partition ζχει το πολφ 4 subpartitions 21
Βασικά Αρχεία Συσκευών στο MINIX 3 Οδθγόσ ςυςκευισ: Terminal tty00 -- θ πρώτθ κονςόλα ttyc1 -- θ πρώτθ εικονικι κονςόλα Line printer lp -- ο εκτυπωτισ TCP/IP Controller 1 / Controller 2 / Controller 3 Audio Mixer 22
Χρήση Αρχείων Συσκευών Στείλε την έξοδο στην 2 η εικονική κονσόλα # ls -la > /dev/ttyc2 # Κανένα αποτέλεσμα(!) # echo hello > /dev/null Στείλε την έξοδο stdout στη συσκευή null (και τύπωσε μόνο την έξοδο stderr) # time egrep e /etc/passwd > /dev/null 0.01 real 0.00 user 0.00 sys Στείλε το message of the day στον εκτυπωτή # cat /etc/motd > /dev/lp 23
Mounting Filesystems Για να μπορζςουμε να προςπελάςουμε τα αρχεία που βρίςκονται ςε μια άλλθ αποκθκευτικι μονάδα πρζπει πρώτα να τθν τοποκετιςουμε ςτο υπάρχον δζντρο: Χρθςιμοποιοφμε τθν εντολι mount Ορίηουμε τθν αποκθκευτικι μονάδα Ορίηουμε το ςθμείο που κα τοποκετθκεί ςτο υπάρχον δζντρο Σο ςφςτθμα αρχείων το δζντρο τθσ δευτερεφουςασ αποκθκευτικισ μονάδασ γίνεται υπο-δζντρο Η πλοιγθςθ ςτα αρχεία των αποκθκευτικών μονάδων γίνεται από το βαςικό δζντρο Η εντολι umount επιτρζπει τθν αποςφνδεςθ μιασ μονάδασ Σοποκζτθςε τθ ςυςκευι c0d0p1s1 κάτω από τον φάκελο /tmp # mount /dev/c0d0p1s1 /tmp 24
Mounting Filesystems (a) (b) Οι δφο αποκθκευτικζσ μονάδεσ Σοποκετοφμε τθν μονάδα Floppy ςτον φάκελο b Η προςπζλαςθ ςτα αρχεία του Floppy γίνεται από το βαςικό δζντρο /b/x Floppy: /x 25
Πληροφορίες Συστήματος Αρχείων Η εντολι du εμφανίηει τθν χριςθ του αποκθκευτικοφ χώρου Π.χ., χριςθ χώρου (disk usage) του φακζλου home για τον χριςτθ: # du s ~/Source 34137492 /home/spyros/source/ # du sh ~/Source 33G /home/spyros/source/ Η εντολι df εμφανίηει τον ελεφκερο χώρο για κάκε αποκθκευτικι μονάδα # df Filesystem 1k-Blk free used % Mounted /dev/c0d0p1s0 1440 635 805 56% / /dev/c0d0p1s1 32768 32390 378 2% /tmp /dev/c0d0p1s2 784657 517809 266848 35% /u 26
Βιβλιογραφία Βιβλίο Σο περιβάλλον Προγραμματιςμοφ UNIX (B.Kernighan, R.Pike) Κεφάλαιο 1: Ειςαγωγι Κεφάλαιο 2: φςτθμα Αρχείων Βιβλίο Operating Systems: Design and Implementation (A. Tanenbaum, A. Woodhull) Κεφάλαιο 1: Introduction Appendix A: Installing MINIX 3 Πανεπιςτθμιακζσ θμειώςεισ (Π. Σριανταφφλλου) Κεφάλαιο 1: Ειςαγωγι ςε Λειτουργικά υςτιματα 27