Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

MS-DOS Ενός χρήστη Μονοπρογραμματισμού

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "MS-DOS Ενός χρήστη Μονοπρογραμματισμού"— Μεταγράφημα παρουσίασης:

1 MS-DOS Ενός χρήστη Μονοπρογραμματισμού
Για έναν επεξεργαστή (Intel 80xxx)

2 Υλοποίηση του MS-DOS Το MS-DOS είναι δομημένο σε 3 επίπεδα :
To BIOS (βασικό σύστημα εισόδου/εξόδου) και την επέκτασή του στο ibmbio.com (io.sys). Τον Πυρήνα (kernel) που αποτελείται από το ibmdos.com (msdos.sys). Τον Φλοιό (shell) που αποτελείται από το command.com Το BIOS είναι ένα σύνολο οδηγών συσκευών χαμηλού επιπέδου που απομονώνει το MS-DOS από τις λεπτομέρειες του υλικού. Βρίσκεται σε ROM και αναπτύσσεται από τους κατασκευαστές Η/Υ (όχι από τη Microsoft). Π.χ. ρουτίνες ανάγνωσης πλήκτρων, εμφάνισης χαρακτήρων στην οθόνη, ανάγνωσης απόλυτων τομέων στο δίσκο, κ.λ.π. Το ibmbio.com (io.sys), αποτελεί το interface ανάμεσα στον πυρήνα και στο BIOS, έτσι ώστε ο πυρήνας να καλεί ρουτίνες του io.sys και όχι απευθείας το BIOS. Περιέχει επίσης ρουτίνες I/O που δεν υπάρχουν στη ROM.

3 Υλοποίηση του MS-DOS Το ibmdos.com (msdos.sys) περιέχει τον πυρήνα του Λ.Σ. και είναι υπεύθυνο για την διαχείριση διεργασιών, την διαχείριση μνήμης, το σύστημα αρχείων και τη διερμηνεία των κλήσεων συστήματος (system calls). Το command.com είναι ο φλοιός, δηλαδή το τμήμα που βλέπει ο χρήστης και στο οποίο μπορεί να εκτελεί προγράμματα και εντολές. Αποτελείται από δύο τμήματα: ένα μόνιμο κομμάτι (resident) που παραμένει πάντα στη μνήμη και ένα παροδικό (transient) που φορτώνεται στην περιοχή υψηλής μνήμης και χρησιμοποιείται όταν ο φλοιός είναι ενεργός. Αν η μνήμη αυτή χρησιμοποιηθεί από άλλα προγράμματα, μόλις αυτά τερματισθούν, το παροδικό κομμάτι που είχε σβηστεί ξαναφορτώνεται στη μνήμη.

4 Εκκίνηση του MS-DOS Οι Η/Υ με Λ.Σ. MS-DOS ξεκινούν ως εξής :
Με το άνοιγμα του διακόπτη η CPU ξεκινά με PC=0xFFFF0 που αντιστοιχεί στη ROM. Εκεί υπάρχει διακλάδωση στη διαδικασία εκκίνησης του BIOS. Αυτή αρχικά εκτελεί διαγνωστικούς ελέγχους του hardware (μνήμη RAM, αναγνώριση δίσκων, CD-ROM κ.λ.π.) Ακολούθως επιχειρεί να διαβάσει τον boot sector της δισκέτας A:, και αν αυτό δεν είναι δυνατό, τότε διαβάζει τον boot sector του δίσκου και τo partition table. Μετά επιλέγεται το active primary partition και φορτώνεται και εκτελείται ο boot sector αυτού του partition. Ο τομέας εκκίνησης εξετάζει το root directory για να εντοπίσει και να φορτώσει το ibmbio.com (io.sys) και το ibmdos.com (msdos.sys) και μεταφέρει τον έλεγχο στο io.sys. Το io.sys καλεί ρουτίνες του BIOS ώστε να προετοιμάσει το υλικό και μετά η sysinit διαβάζει το config.sys για να φορτώσει οδηγούς συσκευών. Τελικά ο πυρήνας φορτώνει και εκτελεί τον φλοιό (command.com) ο οποίος εκτελεί (αν υπάρχει) το Autoexec.bat.

5 Κατάσταση μνήμης μετά την εκκίνηση
1ΜΒ BIOS Οδηγοί συσκευών εξαρ/νοι από το h/w ... Drivers ή TSRs στην upper mem. 640Κ Προσωρινό τμήμα του φλοιού Μπορεί να επικαλυφθεί από προγ/τα Χώρος για προγράμματα Τοποθέτηση και εκτέλεση προγραμμάτων χρηστών Προγράμματα TSR (low memory) Τερματίζουν αλλά μένουν στη μνήμη Μόνιμο τμήμα του command.com Δεν επικαλύπτεται ποτέ Οδηγοί Συσκευών Φορτώνονται μέσω του Config.sys Κρυφή ενδιάμεση μνήμη Χρησιμοποιείται στο σύστημα αρχείων για buffers MSDOS.SYS (IBMDOS.COM) Πυρήνας MS-DOS IO.SYS (IBMBIO.COM) Διασύνδεση με το BIOS Διανύσματα διακοπών Διευθύνσεις ρουτινών interrupts

6 Διεργασίες στο MS-DOS 64K
Το MS-DOS υποστηρίζει δύο κατηγορίες εκτελέσιμων αρχείων (com και exe) τα οποία δημιουργούν διεργασίες με ελαφρά διαφορετικά χαρακτηριστικά : Διεργασίες που ξεκινούν από com αρχεία (*.com) : επιτρέπεται να έχουν ένα τμήμα μεγέθους μέχρι 64ΚΒ κοινό για κώδικα, δεδομένα και στοίβα. Η διεργασία δεσμεύει όλη τη μνήμη. Για να εκτελεστεί μια θυγατρική διεργασία πρέπει πρώτα να απελευθερωθεί η επιπλέον μνήμη (πέρα από τα 64ΚΒ). Το εκτελέσιμο αρχείο στο δίσκο είναι ίδιο byte προς byte με τον κώδικα μηχανής που εκτελείται στη μνήμη. Δεν υπάρχει επικεφαλίδα (header). com Code Segment Stack 64K Πρόγραμμα στο δίσκο Data Segment Code Segment MS-DOS

7 Διεργασίες στο MS-DOS Διεργασίες που ξεκινούν από exe αρχεία (*.exe) : έχουν ανεξάρτητα τμήματα. Τα exe αρχεία περιέχουν στην αρχή μία επικεφαλίδα με πληροφορίες για την τοποθέτηση του κώδικα στη μνήμη. Η επικεφαλίδα ξεκινά πάντα με τα bytes 4D16, 5A16 (7710, 9010 ή ‘M’, ‘Z’). Το MS-DOS δεν κοιτά την επέκταση του ονόματος (.com ή .exe) αλλά τα δύο πρώτα byte του αρχείου. 640KB Stack Πρόγραμμα στο δίσκο Heap Δυναμική μνήμη exe Data Segment Code Segment Επικεφαλίδα Code Segment MS-DOS

8 Πρόθεμα τμήματος κώδικα
Τα πρώτα 256 bytes κάθε διεργασίας στη μνήμη αποτελούν ένα ειδικό τμήμα που ονομάζεται PSP (Program Segment Prefix – Πρόθεμα Τμήματος Κώδικα). Το PSP δημιουργείται κατά την φόρτωση της διεργασίας στη μνήμη και δεν περιέχει κώδικα, αλλά στοιχεία του Λ.Σ. που αφορούν τη διεργασία : Το μέγεθος του κώδικα της διεργασίας Δείκτη στο μπλοκ περιβάλλοντος (environment block) που περιέχει τις μεταβλητές συστήματος (π.χ. TEMP=C:\Temp). Διεύθυνση της ρουτίνας διαχείρισης του πατήματος των πλήκτρων Ctrl+C. Τις παραμέτρους εκτέλεσης του προγράμματος (π.χ. dir a:*.* /w). Δείκτη στο PSP της γονικής διεργασίας. Πίνακα περιγραφέων αρχείων (file descriptor table) που περιέχει έναν χαρακτηριστικό αριθμό για κάθε αρχείο που ανοίγει η διεργασία, καθώς και την τρέχουσα θέση στο αρχείο (0=stdin, 1=stdout, 2=stderr, 3=…).

9 Πρόθεμα τμήματος κώδικα
Στις διεργασίες που ξεκινούν από com αρχεία το PSP είναι μέρος των διευθύνσεων της διεργασίας, δηλαδή ο κώδικας ξεκινά από την διεύθυνση 256 (από είναι το PSP). Οι διεργασίες που ξεκινούν από exe αρχεία μετατοπίζονται πάνω από το PSP το οποίο είναι εκτός των διευθύνσεων της διεργασίας, δηλαδή ο κώδικας ξεκινά από την διεύθυνση 0 της διεργασίας. 640KB Stack Heap Δυναμική μνήμη Stack 64KB Data Segment Data Segment Code Segment Code Segment Διεύθ. 256 Διεύθ. 0 PSP Διεύθ. 0 PSP MS-DOS MS-DOS Διεργασία από com Διεργασία από exe

10 Αποδοτική διαχείριση μνήμης διεργασιών
Το MS-DOS δεν υποστηρίζει καμία μέθοδο για αύξηση της διαθέσιμης μνήμης στις διεργασίες (εικονική μνήμη, σελιδοποίηση, εναλλαγή σελίδων κ.λ.π.). Όταν μία μεγάλη διεργασία ξεκινά μία θυγατρική, ενδέχεται να μην υπάρχει η απαιτούμενη μνήμη για την εκτέλεσή της. Έτσι κάθε διεργασία που δημιουργεί θυγατρικές κατασκευάζεται σε 2 μέρη: το (μικρό) στέλεχος και τον κύριο κορμό. xcopy.exe PSP Κύριος κορμός editor Command.com Command.com PSP PSP Στέλεχος Στέλεχος Στέλεχος PSP PSP PSP Command.com Command.com Command.com Command.com PSP PSP PSP PSP MS-DOS MS-DOS MS-DOS MS-DOS

11 Διεργασίες στο MS-DOS Το MS-DOS δεν υποστηρίζει πολυπρογραμματισμό και ταυτόχρονη εκτέλεση διεργασιών. Η βασική διεργασία που εκτελείται αρχικά είναι το command.com Με την πληκτρολόγηση εντολής ο φλοιός δημιουργεί την θυγατρική διεργασία και αναστέλλεται έως ότου αυτή ολοκληρωθεί. Οι εντολές εκτελούνται πάντα στο προσκήνιο (σε αντίθεση με το Unix) Γονική και θυγατρική διεργασία δεν μπορούν να εκτελούνται παράλληλα. Μπορεί να υπάρχουν πολλές διεργασίες στη μνήμη αλλά μόνο μία (η τελευταία) είναι ενεργή. Οι άλλες είναι υπό αναστολή. TSR – Terminate and Stay Resident : προγράμματα που τερματίζουν αλλά παραμένουν στη μνήμη χωρίς να απελευθερώνουν τα αγαθά που κατέχουν. Τα TSR εγκαθιστούν δικούς τους χειριστές διακοπών έτσι ώστε να παρεμβαίνουν και να εκτελούνται όταν δημιουργούνται interrupts (π.χ. βελάκι πάνω ενεργοποιεί το doskey). Με την ύπαρξη των TSR και των διακοπών υλοποιείται ένα σύστημα ψευδοπαραλληλισμού διεργασιών.

12 Μονοπρογραμματισμός στο MS-DOS
Παράδειγμα αλυσιδωτής δημιουργίας διεργασιών: Τ1 : η ενεργή διεργασία είναι ο φλοιός (command.com). Τ2 : στον φλοιό εκτελείται μία εφαρμογή χρήστη και γίνεται ενεργή. Τ3 : η εφαρμογή χρησιμοποιεί την εντολή xcopy που γίνεται ενεργή. Τ4 : τελειώνοντας η xcopy επιστρέφουμε στην εφαρμογή. Τ5 : τελειώνοντας η εφαρμογή ο φλοιός ξαναγίνεται ενεργός. Upper memory command.com MS-DOS Upper memory Εφαρμογή command.com MS-DOS Upper memory xcopy Εφαρμογή command.com MS-DOS Upper memory Εφαρμογή command.com MS-DOS Upper memory command.com MS-DOS Τ1 Τ2 Τ3 Τ4 Τ5

13 Ψευδοπαραλληλισμός με χρήση TSR
Τ2 : Από τον φλοιό εκτελείται μία εφαρμογή χρήστη (π.χ. Edit). Τ3 : Ο χρήστης πατάει Alt+Shift και παράγει διακοπή που ενεργοποιεί το TSR. Η εφαρμογή τελεί υπό αναστολή. Τ4 : Με το τέλος της ρουτίνας διακοπής επιστρέφουμε στην εφαρμογή. Τ5 : Με το τέλος της εφαρμογής επιστρέφουμε στο φλοιό. Upper memory TSR-Ελλ/Αγγλ. command.com MS-DOS Upper memory Εφαρμογή TSR-Ελλ/Αγγλ. command.com MS-DOS Upper memory Εφαρμογή TSR-Ελλ/Αγγλ. command.com MS-DOS Upper memory Εφαρμογή TSR-Ελλ/Αγγλ. command.com MS-DOS Upper memory TSR-Ελλ/Αγγλ. command.com MS-DOS Τ1 Τ2 Τ3 Τ4 Τ5

14 Υλοποίηση διεργασιών στο DOS
Όταν μια διεργασία καλεί την κλήση συστήματος LOAD_AND_EXEC για να δημιουργήσει θυγατρική, τότε το Λ.Σ. εκτελεί τα εξής βήματα : Βρίσκει ένα μπλοκ στη μνήμη που να χωράει τη θυγατρική διεργασία. Στα exe αρχεία το απαιτούμενο μέγεθος μνήμης περιγράφεται στην επικεφαλίδα (header). Στις διεργασίες από αρχεία com αποδίδεται ολόκληρη η διαθέσιμη μνήμη. Δημιουργεί το PSP στα πρώτα 256 bytes της μνήμης που δεσμεύτηκε με τις απαραίτητες πληροφορίες. Ένας δείκτης δείχνει προς τη γονική διεργασία. Φορτώνει τον εκτελέσιμο κώδικα από το αρχείο στην δεσμευμένη μνήμη ξεκινώντας από το πρώτο byte μετά το PSP. Δίνει τον έλεγχο στο πρόγραμμα. Στα exe αρχεία η διεύθυνση εκκίνησης του κώδικα περιέχεται στην επικεφαλίδα. Στις διεργασίες από com αρχεία η διεύθυνση εκκίνησης είναι σταθερή και είναι η = δηλαδή είναι η πρώτη εντολή κώδικα μηχανής αμέσως μετά το PSP.

15 Το μοντέλο μνήμης του DOS
Ο επεξεργαστής 8088 μπορούσε να προσπελάσει 1ΜΒ μνήμης με 20 γραμμές διευθύνσεων (220= ). Για συμβατότητα όμως με τον 8080 είχε καταχωρητές διευθύνσεων των 16 bits (216=65536). Έτσι επινοήθηκε η μέθοδος των παραγράφων (paragraphs). Κάθε διεύθυνση των 16 bits δεν αναφέρεται σε απόλυτη διεύθυνση αλλά στην αρχή μίας δεκαεξάδας από bytes. Η τελευταία δεκαεξάδα είναι η FFFF16 που αναφέρεται στην διεύθυνση FFFF016 = Για την προσπέλαση οποιασδήποτε διεύθυνσης μνήμης εκτός από την διεύθυνση παραγράφου (segment) χρειάζεται και μία διεύθυνση μετατόπισης (offset). Έτσι οι διευθύνσεις σχηματίζονται ως segment:offset (π.χ. το 17ο byte μνήμης έχει διεύθυνση 0001:0001 αλλά και 0000:0011). Για να βρούμε την απόλυτη διεύθυνση μνήμης ακολουθούμε τον απλό τύπο : Απόλυτη διεύθυνση = segment X 16 + offset.

16 Τμήματα μνήμης Ο 8088 είχε 4 16μπιτους καταχωρητές για διευθύνσεις segments: CS : Code Segment, για την διεύθυνση segment του κώδικα. DS : Data Segment, για την διεύθυνση segment των δεδομένων. SS : Stack Segment, για την διεύθυνση segment της στοίβας. ES : Extra Segment, επιπλέον διεύθυνση segment γενικής χρήσης. Το κάθε τμήμα (κώδικα, δεδομένων, στοίβας, έξτρα) έχοντας σταθερή διεύθυνση segment, μπορεί μέσω του μεταβλητού 16μπιτου offset να έχει μέγεθος μέχρι 64Κ. Αλλάζοντας τιμή στον segment register κάποιου τμήματος είναι δυνατή η επανατοποθέτηση (relocation) του τμήματος σε οποιαδήποτε δεκαεξάδα μνήμης. 8FFFF16 = Stack segment = SS= = 32768 6FFFF16 = Data Segment = DS= = 24576 4FFFF16 = Code Segment = CS= = 16384 MS-DOS

17 Συμβατική, ανώτερη και υψηλή μνήμη
Το MS-DOS χρησιμοποιεί μόνο τα πρώτα 640ΚΒ που ονομάζονται Συμβατική Mνήμη (conventional memory). Η περιοχή πάνω από τα 640ΚΒ και έως το 1ΜΒ (384ΚΒ) ονομάζεται Ανώτερη Μνήμη (Upper Memory Area – UMA) και σε αυτήν απεικονίζεται το ROM BIOS και διευθύνσεις που χρησιμοποιούν οι συσκευές (καταχωρητές, buffers κ.λ.π.). Ο μπορούσε να προσπελάσει 16 MB μνήμης. Λαμβάνοντας την τελευταία δεκαεξάδα (FFFF16) και προσθέτοντας σε αυτήν το offset που μπορεί να είναι από έως FFFF16 παίρνουμε την περιοχή διευθύνσεων FFFF:0000 ( ) έως FFFF:FFFF ( ). Από αυτή την περιοχή μόνο τα πρώτα 16 bytes είναι μέσα στο 1 ΜΒ ( ). Τα υπόλοιπα bytes είναι πάνω από το 1ΜΒ και ονομάζονται Υψηλή Περιοχή Μνήμης (High Memory Area–HMA) Στην HMA μπορούν να φορτώνονται τμήματα του MS-DOS ή και οδηγοί συσκευών ώστε να απελευθερώνουν έως και επιπλέον bytes από τη συμβατική μνήμη των 640Κ.

18 Η εκτεταμένη μνήμη Η μνήμη πάνω από την HMA και έως τα 16ΜΒ ονομάζεται Εκτεταμένη μνήμη (Extended memory - XMS). To MS-DOS δεν επέτρεπε την χρήση της από προγράμματα αλλά μπορούσε να την εκμεταλλευτεί ως RAM-Disk. Από την έκδοση 5.0 και μετά το MS-DOS επέτρεπε την αντιστοίχιση τμημάτων της Εκτεταμένης μνήμης σε κενές περιοχές της UMA ώστε να χρησιμοποιούνται και από προγράμματα. 16 MB Extended memory Extended memory RAM Disk HMA HMA 1 MB BIOS, Drivers I/O memory UMA UMA 640ΚΒ Προγράμματα Προγράμματα Conventional Memory Command.com Command.com PSP PSP MS-DOS MS-DOS

19 Τμήματα επικάλυψης Μία μέθοδος για αύξηση της διαθέσιμης μνήμης κάτω από τα 640ΚΒ για χρήση από προγράμματα είναι η μέθοδος των Τμημάτων Επικάλυψης (overlays). Κάθε μεγάλο πρόγραμμα (π.χ. πρόγραμμα λογιστικής) αποτελείται από ένα βασικό τμήμα (.exe) που είναι πάντα φορτωμένο στη μνήμη και από πολλά ανεξάρτητα υποτμήματα (overlays - *.ovl) που μπορούν να εναλλάσσονται στον ίδιο χώρο φυσικής μνήμης. Το βασικό τμήμα αναλαμβάνει να φορτώνει κάθε φορά το κατάλληλο overlay. Δίσκος 640ΚΒ Αποθήκη Βασικό τμήμα Αποθήκη Πελάτες PSP Command.com Τιμολόγια Προμ/τές PSP MS-DOS

20 Η διευρυμένη μνήμη H μέθοδος των overlays είναι κατάλληλη για προγράμματα αλλά όχι για μεγάλα αρχεία δεδομένων. Το 1987 οι Lotus, Intel και Microsoft ανέπτυξαν ειδικές κάρτες μνήμης και software ώστε να μπορεί ο 8088 να «βλέπει» μεγάλα ποσά μνήμης. Το πρότυπο αυτό ονομάστηκε LIM-EMS (Expanded Memory System). Το 1ΜΒ διευθύνσεων του 8088 χωρίζεται σε 64 σελίδες των 16ΚΒ. Η διευρυμένη μνήμη (μέχρι 32 ΜΒ) χωρίζεται επίσης σε σελίδες (έως και 2048) των 16Κ. Το hardware στην κάρτα EMS μπορεί να απεικονίζει οποιαδήποτε σελίδα της διευρυμένης μνήμης σε οποιαδήποτε από τις 64 σελίδες των λογικών διευθύνσεων (0..1ΜΒ). Σελίδα 2048 32 ΜΒ LIM-EMS memory Σελίδα 2047 1 ΜΒ ... Σελίδα 64 Σελίδα 514 Σελίδα 63 ... Σελίδα 513 8088 Σελίδα 512 Σελίδα 5 ... Σελίδα 4 Σελίδα 4 Σελίδα 3 Σελίδα 3 Σελίδα 2 Σελίδα 2 Σελίδα 1 Σελίδα 1

21 Μέθοδοι διαχείρισης μνήμης στο DOS
Η διαχείριση μνήμης στο MS-DOS είναι περίπλοκη λόγω του περιορισμού του 8088 στο 1ΜΒ μνήμης και του MS-DOS στα 640Κ. Έχουν χρησιμοποιηθεί 5 συνολικά τεχνικές. Α/Α Τεχνική Χρήση 1 Ανώτερη Μνήμη (UMA) Αντιστοιχείται το ROM BIOS, φορτώνονται οι οδηγοί συσκευών και τα προγράμματα TSR. Χαρτογραφεί τμήματα της XMS. 2 Υψηλή Μνήμη (HMA) Τοποθετούνται τμήματα του MS-DOS 3 Εκτεταμένη Μνήμη (XMS) Χρησιμοποιείται ως RAM-Disk αλλά και ως κανονική μνήμη όταν απεικονίζεται σε τμήματα της UMA. 4 Τμήματα Επικάλυψης (overlays) Χρησιμοποιείται τμήμα της συμβατικής μνήμης για εναλλακτική τοποθέτηση τμημάτων των προγρ/των. 5 Διευρυμένη μνήμη (EMS) Οι 64 σελίδες των 16Κ (1ΜΒ) της προσπελάσιμης μνήμης απεικονίζονται σε οποιεσδήποτε από τις 2048 σελίδες της διευρυμένης μνήμης. Επιτρέπει προσπέλαση σε μεγάλες ποσότητες δεδομένων

22 Διαχείριση δεσμευμένων/ελεύθερων τμημάτων
Η διαχείριση των δεσμευμένων ή ελεύθερων τμημάτων μνήμης δεν γίνεται με πίνακες αλλά κατανεμημένα όπως και στις διεργασίες. Η προσπελάσιμη μνήμη του 1 ΜΒ χωρίζεται σε συνεχόμενα τμήματα που ονομάζονται αρένες. Κάθε αρένα ξεκινά στην αρχή μίας παραγράφου (δεκαεξάδας / seg-ment). Στην αρχή κάθε αρένας εγγράφεται μία επικεφαλίδα που ονομάζεται arena header (16 bytes) και περιέχει : Δείκτη προς το PSP της διεργασίας που έχει δεσμεύσει την αρένα ή 0 αν η αρένα είναι ελεύθερη. Το μέγεθος της αρένας. Το όνομα του προγράμματος που δέσμευσε την αρένα όταν η αρένα περιέχει το ίδιο το πρόγραμμα και όχι επιπλέον δεσμευμένη μνήμη. Οι αρένες δεν σχηματίζουν ενωμένη λίστα (όπως τα PSP) αλλά με σειριακή σάρωση των αρένων μπορούν να βρεθούν τα δεσμευμένα και τα ελεύθερα τμήματα μνήμης (αφού σε κάθε header υπάρχει το μέγεθος).

23 Αρένες Όταν αναζητείται από το Λ.Σ. κάποιο ελεύθερο τμήμα μνήμης, σαρώνονται όλες οι αρένες από κάτω προς τα πάνω. Όταν βρεθεί μία αρκετά μεγάλη ελεύθερη αρένα τότε δεσμεύεται μόνο η μνήμη που χρειάζεται και δημιουργείται μία επιπλέον αρένα με το εναπομείναν ελεύθερο τμήμα. Όταν αποδεσμεύεται μία αρένα δεν ενώνεται με τα γειτονικά της ελεύθερα τμήματα παρά μόνο σε επόμενη σάρωση των αρένων. 1 ΜΒ ROM - BIOS Ελεύθερη Αρένα Ανώτερη μνήμη Μνήμη Ι/Ο Ελεύθερη Αρένα RAM οθόνης 640K Ελεύθερη Αρένα Αρένα Συμβατική μνήμη Lotus123.exe Επικε- φαλίδα Αρένας Command.com MS-DOS

24 Το σύστημα αρχείων του DOS
Ο τομέας εκκίνησης περιέχει τον bootstrap loader και κρίσιμες πληροφορίες για το σύστημα αρχείων. Στο τέλος του υπάρχει ο πίνακας διαμερίσεων. Περιέχει την αρχή και το τέλος της κάθε διαμέρισης (έως 4). Μια διαμέριση είναι πάντα ενεργή για τη διαδικασία της εκκίνησης.

25 Πίνακας κατανομής αρχείων (FAT)
Μέγεθος Δίσκου X 1 2 EOF 3 13 4 5 9 6 8 7 FREE 12 10 11 14 15 BAD 16 Αρχείο Α : 6 8 4 2 Αρχείο Β : 5 9 12 Αρχείο Γ : 10 3 13 Μη κατανεμημένο Ο αριθμός FFF16 σημαίνει «Τέλος Αρχείου» (EOF). Ο αριθμός σημαίνει «Ελεύθερος Cluster» (FREE). O αριθμός FF716 σημαίνει «Kατεστραμμένος Cluster» (BAD). Τέλος Αρχείου Κατεστραμμένο Cluster

26 Δεσμευμένος χώρος για μελλοντική χρήση (10 byte)
Εγγραφές καταλόγων 16 bits Attributes αρχείων : A : (Archive bit) δείχνει ότι το αρχείο έχει τροποποιηθεί από το τελευταίο backup. D : (Directory bit) δείχνει ότι το αρχείο είναι κατάλογος. V : (Volume Label bit) δείχνει ότι το αρχείο περιέχει την ετικέτα δίσκου. S : (System bit) δείχνει ότι πρόκειται για αρχείο συστήματος. H : (Hidden bit) καθορίζει αν το αρχείο θα φαίνεται ή όχι. R: (Read-only bit) καθορίζει ότι το αρχείο είναι μόνο για ανάγνωση. Όνομα Αρχείου (8 byte) Επέκταση (3 byte) Α D V S H R Δεσμευμένος χώρος για μελλοντική χρήση (10 byte) Ώρα (2 byte) Ημερομηνία (2 byte) Διεύθ. 1ου cluster (2 byte) Μέγεθος Αρχείου (4 byte)

27 Η κλήση συστήματος OPEN
Για το άνοιγμα ενός αρχείου από μία διεργασία καλείται η κλήση του MS_DOS ‘OPEN’ η οποία λειτουργεί ως εξής : Το MS-DOS ψάχνει στο PSP της διεργασίας για το αν υπάρχει ελεύθερος χώρος στον πίνακα περιγραφέων αρχείων (file descriptor table) που έχει μέγεθος 20 bytes. Αν βρεθεί τότε αναζητείται ελεύθερος χώρος στον κεντρικό πίνακα αρχείων του MS-DOS (system file table). Αν βρεθεί τότε εξετάζεται αν το αρχείο είναι ειδικό αρχείο (con, lpt, …). Αν όχι εξετάζεται αν ο πρώτος χαρακτήρας είναι ‘\’ (απόλυτη ή σχετική διεύθυνση). Στη συνέχεια αναζητείται το αρχείο στο δένδρο των καταλόγων. Αν βρεθεί τότε η εγγραφή καταλόγου για το αρχείο αντιγράφεται στον κεντρικό πίνακα αρχείων και ο δείκτης θέσης αρχείου μηδενίζεται (δείχνει στην αρχή). Ο Α/Α εγγραφής του αρχείου στον κεντρικό πίνακα αρχείων καθώς και ο δείκτης θέσης αντιγράφονται και στο PSP της διεργασίας που ανοίγει το αρχείο.

28 Ένα ανοιχτό αρχείο MS-DOS

29 Υλοποίηση εισόδου/εξόδου στο DOS
Για κάθε συσκευή υπάρχει οδηγός συσκευής που περιέχει το πρόγραμμα Ε/Ε. Μερικοί οδηγοί περιλαμβάνονται ήδη στο io.sys. Επιπλέον οδηγοί μπορούν να φορτωθούν κατά την εκκίνηση με την εντολή DEVICE ή στο autoexec.bat. Κάθε οδηγός είναι πρόγραμμα σε C, assembly ή άλλη γλώσσα μεταγλωττισμένο σε αρχείο .com, .exe ή .sys. Αποτελείται από την επικεφαλίδα (header) μήκους 18 byte και τον κώδικα Ι/Ο χωρισμένο σε 2 τμήματα : Το τμήμα διαχείρισης των κλήσεων συστήματος, και Το τμήμα εκτέλεσης των διαδικασιών εισόδου/εξόδου. Η επικεφαλίδα αποτελείται από τον δείκτη στον επόμενο οδηγό, τον πίνακα χαρακτηριστικών του οδηγού, δύο δείκτες για τα δύο τμήματα του κώδικα και το όνομα του οδηγού μέχρι 8 χαρακτήρες (‘com1’, ‘lpt1’, ‘con’ κ.λ.π.).

30 Οδηγοί συσκευών Οι οδηγοί συσκευών είναι διασυνδεδεμένοι σε μία ενωμένη λίστα. Το MS-DOS κρατά ένα δείκτη στην κορυφή της λίστας για να μπορεί να προσπελαύνει όλους τους οδηγούς συσκευών. Κάθε νέος οδηγός τοποθετείται στην κορυφή της λίστας και επομένως έχει πλεονέκτημα γιατί προσπελαύνεται πρώτος. Οι ιδιότητες ενός οδηγού συσκευής αποτελούνται από 16 bits (2 bytes). Το κάθε bit δηλώνει και ένα χαρακτηριστικό του οδηγού. Δείκτης σε επόμενο οδηγό Δείκτης σε επόμενο οδηγό Επικεφαλίδα Header Ιδιότητες Οδηγού Ιδιότητες Οδηγού Δείκτης κλήσεων Δείκτης κλήσεων Δείκτης κώδικα Ι/Ο Δείκτης κώδικα Ι/Ο Όνομα : com1 Όνομα : lpt1 Διαδικασίες I/O Διαδικασίες I/O Κλήσεις MS-DOS Κλήσεις MS-DOS Διαδοχικοί οδηγοί com1 και lpt1

31 Πρόοδος κλήσης συστήματος για Ε/Ε
Ένα πρόγραμμα κάνει κλήση READ ή WRITE. Αφού το αρχείο είναι ανοιχτό, η συσκευή βρίσκεται ακολουθώντας το PSP και τον κεντρικό πίνακα αρχείων. Κατασκευάζεται ένα μήνυμα αίτησης με 13 bytes τουλάχιστον που περιέχει: Κωδικό εντολής READ ή WRITE. Διεύθυνση μνήμης από όπου θα γίνει ανάγνωση ή όπου θα γίνει η εγγραφή. Διεύθυνση συσκευής για συσκευές τύπου μπλοκ. Πλήθος bytes Από την επικεφαλίδα του οδηγού διαβάζεται ο δείκτης προς τον διαχειριστή κλήσεων και καλείται (εξετάζει το μήνυμα και αποθηκεύει πεδία). Στη συνέχεια το Λ.Σ. διαβάζει τον δείκτη στην ρουτίνα Ι/Ο και την καλεί για να ξεκινήσει η επικοινωνία. Κατά τον τερματισμό ο οδηγός επιστρέφει έναν κωδικό εξόδου σχετικά με το αν η εκτέλεση ήταν επιτυχής ή όχι.


Κατέβασμα ppt "MS-DOS Ενός χρήστη Μονοπρογραμματισμού"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google