Windows XP Γενικά Αρχές σχεδιασμού Συνιστώσες συστήματος Περιβαλλοντικά υποσυστήματα Σύστημα αρχείων
Windows XP 32άμπιτο (ή 64άμπιτο) Λ.Σ. πολυπρογραμματισμού (multiprogramming/multitasking) για επεξεργαστές της Intel. Βασικοί στόχοι του συστήματος: Φορητότητα. Ασφάλεια. Συμβατότητα με το πρότυπο POSIX. Υποστήριξη πολλαπλών επεξεργαστών. Επεκτασιμότητα. Διεθνής υποστήριξη. Συμβατότητα με εφαρμογές MS-DOS και Windows. Κυκλοφορεί σε 4 εκδόσεις : Home, Professional, Media Center, Tablet PC. Ακολουθεί την αρχιτεκτονική του μικροπυρήνα (micro-kernel).
Αρχές σχεδιασμού Επεκτασιμότητα: στρωματοποιημένη αρχιτεκτονική (layered architecture). Ο “Executive” που εκτελείται σε protected mode και προσφέρει τις βασικές υπηρεσίες του Λ.Σ. Υποσυστήματα υλοποιούνται με διάφορες εφαρμογές Server που εκτελούνται σε user mode (Client-Server αρχιτεκτονική). Αρθρωτή δομή: μπορεί να επεκταθεί με την προσθήκη νέων υποσυστημάτων χωρίς να τροποποιηθεί ο Executive. Φορητότητα: μπορεί να μεταφερθεί σε άλλο υλικό με σχετικά λίγες αλλαγές. Είναι γραμμένα σε C και C++. Ο εξαρτώμενος-από-τον-επεξεργαστή κώδικας είναι απομονωμένος σε ένα μοναδικό dll και ονομάζεται HAL (Hardware Abstraction Layer – HAL.DLL). Αξιοπιστία: τα XP χρησιμοποιούν hardware προστασία για την εικονική μνήμη και software προστασία για τα αγαθά του Λ.Σ.
Αρχές σχεδιασμού (συνέχεια) Συμβατότητα: εφαρμογές που ακολουθούν το στάνταρ POSIX (IEEE 1003.1) μπορούν να μεταγλωττιστούν και να τρέξουν στα XP χωρίς καμία αλλαγή στον πηγαίο κώδικα. Απόδοση: τα υποσυστήματα μπορούν να επικοινωνούν μεταξύ τους με μεταβίβαση μηνυμάτων. Διεθνής υποστήριξη: προσαρμόζεται σε τοπικά χαρακτηριστικά με χρήση του NLS (national langauge support) API.
Αρχιτεκτονική των Windows XP Διαστρωματωμένο σύστημα από μονάδες. Protected mode – HAL, kernel, executive. User mode – συλλογή υποσυστημάτων. Περιβαλλοντικά υποσυστήματα προσομοιώνουν διαφορετικά Λ.Σ. Υποσυστήματα προστασίας παρέχουν λειτουργίες ασφαλείας.
Απεικόνιση της αρχιτεκτονικής των Windows XP
Kernel Αποτελεί τη βάση για τον executive και τα υποσυστήματα. Ποτέ δεν αντικαθίστανται σελίδες του – η εκτέλεσή του ποτέ δεν διακόπτεται. Βασικά καθήκοντα: Χρονοδρομολόγηση νημάτων (threads). Διαχείριση διακοπών (interrupts) και εξαιρέσεων (exceptions). Χαμηλού επιπέδου (low level) συγχρονισμός του επεξεργαστή. Ανάνηψη μετά από πτώση τάσης. Είναι αντικειμενοστραφής, χρησιμοποιεί δύο σύνολα αντικειμένων: Αντικείμενα Εκτέλεσης (dispatcher objects) που ελέγχουν την εκτέλεση των νημάτων και τον συγχρονισμό (νήματα-threads, χρονιστές-timers, συμβάντα-events, σηματοφορείς-semaphores, κ.λ.π.) Αντικείμενα Ελέγχου (control objects) που επιτελούν ελεγκτικές λειτουργίες (διακοπές-interrupts, ασύγχρονες κλήσεις διαδικασιών, κατάσταση ισχύος, κ.λ.π.)
Executive – Object Manager Τα XP χρησιμοποιούν αντικείμενα για όλες τις υπηρεσίες και τις οντότητες. Ο διαχειριστής αντικειμένων επιβλέπει τη χρήση τους. Δημιουργεί ένα handle για το αντικείμενο. Ελέγχει την ασφάλεια. Κρατά στοιχεία για το ποια διεργασία χρησιμοποιεί ποιο αντικείμενο. Ο χειρισμός των αντικειμένων γίνεται με ορισμένο σύνολο μεθόδων, όπως create, open, close, delete, query name, parse και security.
Executive – Ονομασία αντικειμένων Τα ονόματα αντικειμένων δομούνται όπως τα ονόματα διαδρομών αρχείων στο MS-DOS και στο UNIX. Τα XP υλοποιούν ένα αντικείμενο συμβολικού συνδέσμου που είναι παρόμοιο με τους συμβολικούς συνδέσμους στο UNIX που επιτρέπουν σε διαφορετικά ψευδώνυμα να αναφέρονται στο ίδιο αρχείο. Μια διεργασία αποκτά ένα handle αντικειμένου δημιουργώντας ένα αντικείμενο, ανοίγοντας ένα υπάρχον, λαμβάνοντας ένα αντίγραφο του handle από άλλη διεργασία, ή κληρονομώντας ένα handle από τη γονική διεργασία. Κάθε αντικείμενο προστατεύεται από μια λίστα ελέγχου πρόσβασης (access control list).
Executive – Virtual Memory Manager Υποθέτει ότι το υποκείμενο υλικό υποστηρίζει αντιστοίχιση εικονικής σε φυσική μνήμη και μηχανισμό σελιδοποίησης. Χρησιμοποιεί ένα σχήμα διαχείρισης βασισμένο σε σελίδες με μέγεθος σελίδας 4 ΚΒ. Εκχωρείται μνήμη σε δύο βήματα: Το πρώτο κατοχυρώνει ένα τμήμα του χώρου διευθύνσεων της διεργασίας. Το δεύτερο εκτελεί την εκχώρηση αναθέτοντας χώρο στο αρχείο σελιδοποίησης.
Διάταξη εικονικής μνήμης
Virtual Memory Manager (συνέχεια) Η μετάφραση εικονικής διεύθυνσης χρησιμοποιεί διάφορες δομές δεδομένων: Κάθε διεργασία έχει έναν κατάλογο σελίδων που περιέχει 1024 εγγραφές μεγέθους 4 bytes. Κάθε εγγραφή του καταλόγου σελίδων δείχνει σε έναν πίνακα σελίδων που περιέχει 1024 εγγραφές των 4 bytes. Κάθε εγγραφή πίνακα σελίδων δείχνει σε ένα πλαίσιο 4 ΚΒ στη φυσική μνήμη. Ένα ακέραιος των 10 bits αναπαριστά όλες τις τιμές από 0 έως 1023, συνεπώς μπορεί να επιλέξει μια εγγραφή στον κατάλογο σελίδων ή σε ένα πίνακα σελίδων. Αυτή η ιδιότητα χρησιμοποιείται όταν μεταφράζεται ένας δείκτης εικονικής μνήμης σε διεύθυνση ενός byte στη φυσική μνήμη. Μια σελίδα μπορεί να είναι σε μία από έξι καταστάσεις: valid, zeroed, free, standby, modified και bad.
Μετάφραση εικονικής σε φυσική διεύθυνση 10 bits για εγγραφή καταλόγου σελίδων, 10 bits για εγγραφή πίνακα σελίδων και 12 bits για μετατόπιση byte στη σελίδα.
Εγγραφή πίνακα σελίδων στο αρχείο σελιδοποίησης 5 bits για προστασία σελίδας, 20 bits για διεύθυνση σελίδας, 4 bits για επιλογή αρχείου σελιδοποίησης και 3 bits που περιγράφουν την κατάσταση της σελίδας.
Executive – Process Manager Παρέχει υπηρεσίες για τη δημιουργία, διαγραφή και χρήση των νημάτων και των διεργασιών. Θέματα σχετικά με τις σχέσεις γονικών με θυγατρικές διεργασίες καθώς και ιεραρχίες διεργασιών αφήνονται για το συγκεκριμένο υποσύστημα όπου ανήκει η διεργασία.
Executive – Local Procedure Call Facility Μια LPC περνά αιτήματα και αποτελέσματα μεταξύ διεργασιών πελάτη και εξυπηρετητή στο ίδιο μηχάνημα. Συγκεκριμένα, χρησιμοποιείται για να αιτείται υπηρεσιών από τα διάφορα υποσυστήματα. Όταν δημιουργείται ένα κανάλι LPC, μια από τρεις τεχνικές μεταβίβασης μηνυμάτων πρέπει να καθοριστεί: Η πρώτη είναι κατάλληλη για μικρά μηνύματα, μέχρι 256 bytes. Η ουρά μηνυμάτων χρησιμοποιείται για ενδιάμεση αποθήκευση και τα μηνύματα αντιγράφονται από τη μία διεργασία στην άλλη. Η δεύτερη αποφεύγει την αντιγραφή μεγάλων μηνυμάτων δείχνοντας σε ένα αντικείμενο-περιοχή κοινής μνήμης που δημιουργείται για το κανάλι. Η τρίτη, αποκαλούμενη γρήγορη LPC, χρησιμοποιήθηκε από τμήματα γραφικής απεικόνισης του υποσυστήματος Win32.
Executive – I/O Manager Είναι υπεύθυνος για: Συστήματα αρχείων Διαχείριση κρυφής μνήμης Οδηγούς συσκευών Οδηγούς δικτύου Κρατά στοιχεία για το ποια συστήματα αρχείων είναι φορτωμένα και διαχειρίζεται προσωρινές μνήμες για αιτήματα Ε/Ε. Συνεργάζεται με τον VM Manager για να παρέχει Ε/Ε με αρχεία αντιστοιχισμένα στη μνήμη. Ελέγχει τον διαχειριστή κρυφής μνήμης, ο οποίος χειρίζεται κρυφές μνήμες για όλο το σύστημα Ε/Ε. Υποστηρίζει σύγχρονες και ασύγχρονες λειτουργίες, παρέχει time-outs για τους οδηγούς συσκευών και επιτρέπει να καλεί ο ένας τον άλλον.
Ε/Ε αρχείων
Executive – Security Reference Manager Η αντικειμενοστραφής φύση των XP επιτρέπει τη χρήση ενός ομοιόμορφου μηχανισμού για την εκτέλεση επικύρωσης πρόσβασης κατά το χρόνο εκτέλεσης και ελέγχους για κάθε οντότητα του συστήματος. Όποτε μια διεργασία ανοίγει ένα handle για ένα αντικείμενο, αυτός ελέγχει το ACL του αντικειμένου και την ένδειξη ασφαλείας της διεργασίας για να δει αν η διεργασία έχει τα απαραίτητα δικαιώματα.
Περιβαλλοντικά υποσυστήματα Διεργασίες που εκτελούνται σε user mode πάνω από τις εγγενείς υπηρεσίες του executive για να επιτρέπουν στα ΧΡ να τρέχουν προγράμματα που γράφτηκαν για άλλα Λ.Σ. Το υποσύστημα Win32 είναι το βασικό περιβάλλον λειτουργίας. Χρησιμοποιείται για την εκκίνηση όλων των διεργασιών. Παρέχει, επίσης, όλες τις δυνατότητες για χρήση πληκτρολογίου, ποντικιού και οθόνης. Το περιβάλλον του MS-DOS παρέχεται από μια εφαρμογή Win32 που λέγεται εικονική μηχανή DOS (VDM), μια διεργασία σε user mode που δρομολογείται και σελιδοποιείται όπως κάθε νήμα στο Λ.Σ. Περιβάλλον Windows 16 bit: Παρέχεται από μια VDM που ενσωματώνει Windows on Windows. Παρέχει τις ρουτίνες πυρήνα των Windows 3.1 και τις υπορουτίνες για τον διαχειριστή παραθύρων και συναρτήσεις GDI (graphics device interface). Το υποσύστημα POSIX είναι σχεδιασμένο για να τρέχει εφαρμογές POSIX που ακολουθούν το πρότυπο POSIX.1 που βασίζεται στο μοντέλο του UNIX.
Σύστημα αρχείων Η θεμελιώδης δομή του συστήματος αρχείων των Windows XP (NTFS) είναι ένας τόμος (volume). Δημιουργείται από την εφαρμογή διαχείρισης δίσκου των XP. Βασίζεται σε μια λογική διαμέριση δίσκου. Μπορεί να καταλαμβάνει τμήματα ενός δίσκου, ολόκληρο δίσκο, ή να εκτείνεται σε διαφορετικούς δίσκους. Όλα τα μεταδεδομένα (metadata), όπως οι πληροφορίες σχετικά με τον τόμο, αποθηκεύονται σε ένα σύνηθες αρχείο. Το NTFS χρησιμοποιεί clusters ως τη βασική μονάδα ανάθεσης χώρου δίσκου. Ένας cluster είναι ένα πλήθος τομέων του δίσκου (δύναμη του 2). Επειδή το μέγεθος cluster είναι μικρότερο από ό,τι στο 16-bit FAT, το ποσό του εσωτερικού κατακερματισμού μειώνεται.
Σύστημα αρχείων – Εσωτερική οργάνωση Το NTFS χρησιμοποιεί λογικούς αριθμούς clusters (LCNs) ως διευθύνσεις δίσκου. Ένα αρχείο στο NTFS δεν είναι ένα απλό ρεύμα από bytes, όπως στο MS-DOS ή στο UNIX, αλλά ένα δομημένο αντικείμενο αποτελούμενο από χαρακτηριστικά. Κάθε αρχείο στο NTFS περιγράφεται από μία ή περισσότερες εγγραφές σε έναν πίνακα που αποθηκεύεται σε ένα ειδικό αρχείο που ονομάζεται Κύριος Πίνακας Αρχείων (MFT). Κάθε αρχείο σε έναν τόμο NTFS έχει ένα μοναδικό αναγνωριστικό που λέγεται αναφορά αρχείου. Ποσότητα 64 bits που αποτελείται από αριθμό αρχείου 48 bits και αριθμό ακολουθίας 16 bits. Μπορεί να χρησιμοποιηθεί για να εκτελέσει εσωτερικούς ελέγχους συνέπειας. Ο χώρος ονομάτων του NTFS είναι οργανωμένος σε μια ιεραρχία καταλόγων. Το index root περιέχει το ανώτερο επίπεδο του Β+ δέντρου.
Master File Table (MFT)
Εγγραφή στο MFT
Αντιμετώπιση μεγάλων αρχείων MFT Cluster 1 Directory Entry Filename, Security Info, Etc Cluster 2 Cluster 3
Χαρακτηριστικά αρχείων Αριθμός αναφοράς αρχείου (64 bits). Ημερομηνία/ώρα δημιουργίας, τελευταίας πρόσβασης, τελευταίας τροποποίησης. Archive, System, Hidden, ReadOnly. Ιδιοκτήτης. Ομάδα ιδιοκτήτη. Δικαιώματα χρήσης (Read, Write, Execute, Modify). Τα χαρακτηριστικά καταχωρούνται ως εξής: Επικεφαλίδα Όνομα χαρακτηριστικού Τιμή χαρακτηριστικού
Εγγραφές καταλόγων Ο κατάλογος είναι ένα αρχείο με εγγραφές τα αρχεία που περιέχει. Καταλαμβάνει και αυτός εγγραφή στο MFT. Κάθε του εγγραφή έχει: Δείκτη αρχείου στο MFT (file reference). Όνομα αρχείου. Μέγεθος αρχείου. Ημερομηνία/ώρα τελευταίας τροποποίησης (για ευκολία).
Σύστημα αρχείων – Ανάνηψη Όλες οι ενημερώσεις των δομών του συστήματος αρχείων γίνονται κατά την εκτέλεση ενεργειών (transactions). Πριν αλλαχτεί μια δομή δεδομένων, η ενέργεια δημιουργεί μια εγγραφή καταγραφής που περιέχει πληροφορίες επανεκτέλεσης και αναίρεσης. Αφού αλλαχτεί η δομή δεδομένων, γράφεται στο αρχείο καταγραφής μια εγγραφή επιβεβαίωσης εκτέλεσης που δείχνει ότι πέτυχε η ενέργεια. Μετά από μια αποτυχία του συστήματος, οι δομές δεδομένων μπορούν να αποκατασταθούν σε μια σταθερή μορφή με χρήση των αρχείων καταγραφής. Αυτό το σχήμα δεν εγγυάται ότι όλα τα δεδομένα των αρχείων χρηστών μπορούν να ανακτηθούν μετά από μια αποτυχία, μόνο ότι τα μεταδεδομένα είναι αβλαβή και αντιστοιχούν σε μια σταθερή κατάσταση πριν την αποτυχία. Το αρχείο καταγραφής αποθηκεύεται στο τρίτο αρχείο μεταδεδομένων στην αρχή του τόμου. Η λειτουργικότητα καταγραφής παρέχεται από την υπηρεσία αρχείου καταγραφής των XP.
Σύστημα αρχείων – Ασφάλεια Η ασφάλεια ενός τόμου NTFS αντλείται από το μοντέλο αντικειμένων των XP. Κάθε αντικείμενο αρχείου έχει ένα χαρακτηριστικό περιγραφέα ασφάλειας αποθηκευμένο στην εγγραφή του στο MFT. Αυτό το χαρακτηριστικό περιέχει την ένδειξη πρόσβασης του ιδιοκτήτη του αρχείου και μια λίστα ελέγχου πρόσβασης που δηλώνει τα δικαιώματα πρόσβασης που παρέχονται σε κάθε χρήστη που έχει πρόσβαση στο αρχείο.
Διαχείριση τόμων και ανοχή σε σφάλματα Το FtDisk, ο ανεκτικός σε σφάλματα οδηγός δίσκου των XP, παρέχει διάφορος τρόπους να συνδυαστούν πολλοί δίσκοι SCSI σε ένα λογικό τόμο. Λογική συνένωση πολλών δίσκων για τη δημιουργία ενός μεγάλου λογικού τόμου, ενός συνόλου τόμων. Διαφύλλωση πολλαπλών φυσικών διαμερίσεων με έναν εκ περιτροπής τρόπο ώστε να δημιουργηθεί ένα σύνολο λωρίδων (RAID 0). Παραλλαγή: σύνολο λωρίδων με ισοτιμία (RAID 5). Το είδωλο δίσκου (RAID 1), είναι ένα εύρωστο σχήμα που χρησιμοποιεί ένα σύνολο καθρεφτών – δύο διαμερίσεις ίδιου μεγέθους σε δύο δίσκους με πανομοιότυπα δεδομένα. Για τη διαχείριση τομέων που καταστρέφονται, το FtDisk χρησιμοποιεί μια τεχνική υλικού που λέγεται sector sparing και το NTFS μια τεχνική λογισμικού που λέγεται cluster remapping.
Σύνολο τόμων σε δύο δίσκους
Σύνολο λωρίδων σε δύο δίσκους
Σύνολο καθρεφτών σε δύο δίσκους
Σύστημα αρχείων - Συμπίεση Για να συμπιέσει ένα αρχείο το NTFS χωρίζει τα δεδομένα του σε μονάδες συμπίεσης που είναι πλαίσια 16 συνεχόμενων clusters. Για αραιά αρχεία το NTFS χρησιμοποιεί μια άλλη τεχνική για να εξοικονομήσει χώρο. Clusters που περιέχουν όλο μηδενικά δεν καταλαμβάνουν πραγματικά χώρο στο δίσκο. Αντ’ αυτού, αφήνονται κενά στην ακολουθία των εικονικών αριθμών clusters που αποθηκεύονται στην εγγραφή του MFT για το αρχείο αυτό. Όταν διαβάζεται ένα αρχείο, αν βρεθεί ένα κενό στους εικονικούς αριθμούς clusters, το NTFS απλά γεμίζει με μηδενικά αυτό το τμήμα της προσωρινής μνήμης της καλούσας διεργασίας.