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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Λειτουργικό Σύστημα (Operating System) 1o μέρος
Advertisements

UNIX.
5 Οργάνωση υπολογιστών Εισαγωγή στην Επιστήμη των Υπολογιστών ã Εκδόσεις Κλειδάριθμος.
ΔΙΑΧΕΙΡΙΣΗ ΕΙΣΟΔΟΥ – ΕΞΟΔΟΥ (INPUT/OUTPUT)
Εισαγωγή στις Τεχνολογίες της Πληροφορικής και των Επικοινωνιών
Εφαρμογές Υπολογιστών Ά Λυκείου Κεφ. 4 Λογισμικό Συστήματος
Λειτουργικό Σύστημα ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ENOTHTA B.1.3 (1)
Επιμορφωτής: Ονομ/νυμο Επιμορφωτή
Εισαγωγικές έννοιες πληροφορικής
Λειτουργικά Συστήματα
Λειτουργικά συστήματα
ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ.
-Στοίβα-Ουρά - Πλεονεκτήματα πινάκων -Δομές δεδομένων δευτερεύουσας μνήμης -Πληροφορική και δεδομένα -Παραδείγματα-Προβλήματα ψευδοκώδικα.
ΤΑΞΗ Γ ΓΥΜΝΑΣΙΟΥ Βασικές Έννοιες Επανάληψη (2).
Προγραμματισμός Η/Υ Πανεπιστήμιο Αιγαίου
Κεφάλαιο 2ο: ΟΡΓΑΝΩΣΗ ΣΥΣΤΗΜΑΤΟΣ ΑΡΧΕΙΩΝ
Το υλικο του Υπολογιστη
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Πρώτο Αρχιτεκτονική.
Λειτουργικό Σύστημα 2ο μέρος.
Κεφάλαιο 1ο: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΤΩΝ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
ΚΕΦΑΛΑΙΟ 3 Το υλικό των υπολογιστών.
Κατανομή με ευρετήριο.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 2: Πίνακες και δυναμικά δεδομένα στη FORTRAN 90 Εαρινό εξάμηνο 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ.
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
7. Διαχείριση κύριας μνήμης
Εργασία Η υλοποίηση του αλγορίθμου συγχώνευσης θα πρέπει να χρησιμοποιεί την ιδέα των ροών (streams). Θα πρέπει να υπάρχουν δύο διαφορετικά είδη.
Η ΕΚΤΕΛΕΣΗ ΠΡΟΓΡΑΜΜΑΤΟΣ ΧΡΗΣΤΗ ΑΠ’ ΤΟΝ Η/Υ ΤΟΜΕΑΣ ΤΕΧΝΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Δ.ΙΕΚ ΠΑΤΡΑΣ.
Στο λειτουργικό σύστημα Windows, υπάρχουν εικονίδια (icons) τα οποία αναπαριστούν τις διάφορες οντότητες (φυλαγμένες πληροφορίες, προγράμματα που κάνουν.
Συστήματα αρχείων Γιατί μας χρειάζεται Τι είναι αρχείο Δομή, τύποι, ιδιότητες, μέθοδοι προσπέλασης, λειτουργίες αρχείων Αρχεία στο δίσκο, είδη κατανομής.
Προσομοίωση του Συστήματος Αρχείων NTFS Πτυχιακή εργασία Αδάμου Θανάση Επιβλέπων Καθηγητής Σπυρίδων Καζαρλής Νοέμβριος 2005.
Τα θέματα μας σήμερα Ηλεκτρονικοί υπολογιστές Υλικό και λογισμικό
Διαχείριση μνήμης Υπόβαθρο Εναλλαγή Συνεχής κατανομή Σελιδοποίηση
ΕΝΟΤΗΤΑ 3 – MS Windows – Περιβάλλον εργασίας
Οργάνωση και Αρχιτεκτονική Υπολογιστών Βασικές αρχές Αρχιτεκτονικής
ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ
Κεφάλαιο 2 Το Εσωτερικό του υπολογιστή
ΤΗΣ ΦΟΙΤΗΤΡΙΑΣ : ΤΣΑΛΤΑ ΑΝΑΣΤΑΣΙΑ Α.Μ. : 30920
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
ΟΡΓΑΝΩΣΗ ΣΥΣΤΗΜΑΤΟΣ ΑΡΧΕΙΩΝ A’ μέρος
Πληροφορική, Β Γυμνασίου
1 ΧΡΗΣΗ Η/Υ, ΑΛΕΞΗΣ ΜΠΡΑΪΛΑΣ, 1998 Εφαρμογές Υπολογιστών.
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών7-1 Πίνακας Συμβόλων Πίνακας συμβόλων: δομή δεδομένων που χρησιμοποιείται για την αποθήκευση διαφόρων πληροφοριών.
Ο προσωπικός υπολογιστής εσωτερικά
Εισαγωγή στις Νέες Τεχνολογίες και Εργαστηριακές Εφαρμογές, Το εσωτερικό ενός υ π ολογιστή Κεφάλαιο 3.
ΕΝΟΤΗΤΑ 2 – Κεφάλαιο 5: To λογισμικό του υπολογιστή
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Κεφάλαιο 10 – Υποπρογράμματα
ΕΙΣΑΓΩΓΉ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΉ ΝΊΚΟΣ ΠΑΠΑΔΆΚΗΣ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ.
Κρυφή μνήμη (cache memory) (1/2) Εισαγωγή στην Πληροφορκή1 Η κρυφή μνήμη είναι μία πολύ γρήγορη μνήμη – πιο γρήγορη από την κύρια μνήμη – αλλά πιο αργή.
ΠΑΡΑΔΕΙΓΜΑ: ΤΑ ΕΠΙΠΕΔΑ ΥΛΙΚΟΥ – ΛΟΓΙΣΜΙΚΟΥ ΣΕ ΕΝΑΝ ΥΠΟΛΟΓΙΣΤΗ.
Κύρια Μνήμη Διάφοροι τύποι μνήμης RAM Από πάνω προς τα κάτω, DIP, SIPP, SIMM (30-pin), SIMM (72-pin), DIMM (168-pin), DDR DIMM (184-pin). Μνήμη RΟM.
Γιώργος Μαγουλάκης Εξάμηνο: Εαρινό 2015 ΤΕΙ Κρήτης Τμ. Μηχανικών Πληροφορικής Τμ. Μηχανικών Πληροφορικής.
Καταχωρητές (Registers) (1/3) Εισαγωγή στην Πληροφορκή1 Οι Καταχωρητές (Registers) είναι ειδικές θέσεις μνήμης υψηλής ταχύτητας που χρησιμοποιούνται για.
ΜΑΘΗΜΑ: ΣΥΓΧΡΟΝΟ ΛΟΓΙΣΜΙΚΟ ΟΡΓΑΝΩΣΗ ΓΡΑΦΕΙΟΥ 5 ο ΕΡΓΑΣΤΗΡΙΟ: ΕΓΚΑΤΑΣΤΑΣΗ ΕΚΤΥΠΩΤΩΝ ΚΑΘΗΓΗΤΗΣ: ΓΡΗΓΟΡΙΟΣ Ν. ΚΑΡΑΤΑΣΙΟΣ.
Διαχείριση Πόρων (1/10) Εισαγωγή στην Πληροφορκή 1 Στα πρώτα χρόνια των υπολογιστών, όπου μόνο ένα πρόγραμμα είχε τη δυνατότητα να βρίσκεται στην κύρια.
Δυναμικός Κατακερματισμός
Κατανεμημένα Συστήματα
Γνωριμία με το Λογισμικό του Υπολογιστή
στην Επιστήμη των Υπολογιστών Κωδικός Διαφανειών: MKT110
Κατηγορίες και Προδιαγραφές Λογισμικού Η/Υ (Software)
ΟΙ ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ ΤΗΣ INTEL
Εισαγωγή στα Λειτουργικά Συστήματα (ΛΣ) Operating Systems (OS)
1 Οργάνωση και Αρχιτεκτονική Υπολογιστών A. Βαφειάδης Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Α.Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση.
ΤΑΞΗ Γ ΓΥΜΝΑΣΙΟΥ Βασικές Έννοιες Επανάληψη (2).
Κεφάλαιο 10 Streams.
TO BIOS βρίσκεται στην μητρική πλακέτα και τα αρχικά του σημαίνουν: Βασικό Σύστημα Εισόδου-Εξόδου.
ΣΥΓΧΡΟΝΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Τρίτη Έκδοση ANDREW S
Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ
ΣΥΓΧΡΟΝΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Τρίτη Έκδοση ANDREW S
Δυναμικός Κατακερματισμός
Μεταγράφημα παρουσίασης:

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

Υλοποίηση του 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.

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

Εκκίνηση του 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.

Κατάσταση μνήμης μετά την εκκίνηση 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 0Κ Διανύσματα διακοπών Διευθύνσεις ρουτινών interrupts

Διεργασίες στο 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

Διεργασίες στο 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

Πρόθεμα τμήματος κώδικα Τα πρώτα 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=…).

Πρόθεμα τμήματος κώδικα Στις διεργασίες που ξεκινούν από com αρχεία το PSP είναι μέρος των διευθύνσεων της διεργασίας, δηλαδή ο κώδικας ξεκινά από την διεύθυνση 256 (από 0-255 είναι το 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

Αποδοτική διαχείριση μνήμης διεργασιών Το 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

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

Μονοπρογραμματισμός στο 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

Ψευδοπαραλληλισμός με χρήση 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

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

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

Τμήματα μνήμης Ο 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 = 589823 Stack segment 8000016 = 524288 SS=800016 = 32768 6FFFF16 = 458751 Data Segment 6000016 = 393216 DS=600016 = 24576 4FFFF16 = 327679 Code Segment 4000016 = 262144 CS=400016 = 16384 MS-DOS

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

Η εκτεταμένη μνήμη Η μνήμη πάνω από την 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

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

Η διευρυμένη μνήμη 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

Μέθοδοι διαχείρισης μνήμης στο 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 σελίδες της διευρυμένης μνήμης. Επιτρέπει προσπέλαση σε μεγάλες ποσότητες δεδομένων

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

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

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

Πίνακας κατανομής αρχείων (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). Ο αριθμός 00016 σημαίνει «Ελεύθερος Cluster» (FREE). O αριθμός FF716 σημαίνει «Kατεστραμμένος Cluster» (BAD). Τέλος Αρχείου Κατεστραμμένο Cluster

Δεσμευμένος χώρος για μελλοντική χρήση (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)

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

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

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

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

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