Автор: Пользователь скрыл имя, 11 Января 2012 в 21:28, лекция
Мы не станем рассматривать самый низший уровень этой схемы – аппаратное обеспечение, а начнем на ступеньку выше – с посредника, находящегося между аппаратным обеспечением и медицинской программой, называемого операционной системой. Большинство из вас знакомо с двумя из операционных систем – Windows и MS DOS. Как вы увидите далее, это не единственные и не самые лучшие ОС, хотя и наиболее распространенные.
Заметьте, что отсутствуют атрибута принадлежности файла тому или иному пользователю, т.к. MS DOS является однопользовательской средой. Поэтому, если файл помечен как “только для чтения”, то это для всех пользователей. Каждый элемент каталога имеет фиксированный размер, зависящий от версии DOS, а общий объем, отведенный под каталог, определяет максимальное число файлов, которое можно записать в данный каталог (не путать с объемом диска).
Для записи на диск большего числа файлов, и для их логической организации используется древовидная структура, каждый элемент которой имеет ту же структуру, что и корневой каталог, но располагается в области данных диска.
Вышеописанным образом организована дискета. Жесткий диск имеет еще одну служебную область, называемую главной загрузочной записью (Master Boot Record). Эта запись определяет на сколько и каких разделов разбит жесткий диск, и где находится загрузочная программа.
MS DOS работает в так называемом “реальном” режиме микропроцессоров Intel 80x86. В этом режиме адрес имеет только 20 разрядов. Обращение к ячейке памяти осуществляется при помощи 2х 16-разрядных регистров: регистра сегмента и регистра смещения. Полный адрес получается сложением значения регистра сегмента, умноженного на 16 с регистром смещения.
Схема памяти MS DOS.
Адрес | Описание |
0000:0000 | Таблица векторов прерываний: 256 4-байтовых адресов |
0040:0000 | Область данных ROM-BIOS |
0050:0000 | Область данных DOS |
xxxx:0000 | Код BIOS (считанный из IO.SYS на диске загрузки) |
xxxx:0000 | Обработчики прерываний DOS, включая INT 21H (MSDOS.SYS) |
xxxx:0000 | DOS: буфера, области данных и устанавливаемые драйверы устройств |
xxxx:0000 | резидентная
порция COMMAND.COM, включает обработчики INT 22H INT 23H и INT 24H |
xxxx:0000 | Резидентные программы и данные |
xxxx:0000 | Текущая выполняемая прикладная программа (.COM или .EXE). Программе изначально предоставляется вся память до 640K (a000:0000) или до максимально имеющегося адреса на данном PC |
xxxx:0000 | Транзитная порция COMMAND.COM. Интерпретатор команд, внутренние команды и т.п. Перезагружается, если кто-нибудь перекроет ее. |
a000:0000 | EGA память для некоторых видео режимов |
b000:0000 | Видео память монохромного адаптера (и совместимых с Hercules) |
b800:0000 | Видео память CGA (также страница 2 для Hercules) |
c800:0000 до e000:0000 |
Внешний код ROM. ROM-BIOS ищет здесь (в 2K-блоках) код, выполняемый во время загрузки. Такие блоки ROM-памяти обычно устанавливает обработчик устройства (твердый диск или EGA BIOS). |
e000:0000 до e000:ffff |
AT модули ROM материнской платы в блоках по 64K |
f600:0000 | ROM-резидентный интерпретатор BASIC |
fe00:0000 | ROM-BIOS: POST и код загрузки, обработчики прерываний и все прочее. |
f000:fff0 | инструкция JMP на программу, выполняемую при включении или сбросе |
f000:fff5 | дата разработки BIOS. Дата хранится в виде строки “mm/dd/yy”. |
f000:fffe | идентификационный код IBM PC |
СВЕРХ | Память сверх 1 мегабайта доступна на компьютерах класса AT через функцию BIOS INT 15H, и в настоящее время используется DOS для операций с RAM-дисками. |
Таблица векторов прерываний. Все функции DOS организованы в виде программных прерываний, которые являются ни чем иным, как подпрограммами общего пользования. Чтобы знать, по какому адресу какая подпрограмма находится, в начале памяти размещается таблица из 256 адресов. Каждый адрес указывает на точку входа в определенное прерывание.
Дальше располагаются области памяти DOS и BIOS, в которых хранятся различные параметры системы: количество и адреса портов устройств ввода-вывода, количество и типы дисков, системные часы, и т.д.
Следом идет собственно код BIOS и DOS, различные служебные области DOS, загружаемые драйвера, и т.д. Вслед за системными областями располагается пользовательская программа, которой предоставляется вся доступная на момент её запуска память вплоть до границы в 640К.
Что же располагается дальше? Область памяти видеоплаты, ПЗУ различных внешних устройств (видео, сетевая карта, …), отведено место под интерпретатор BASIC (хотя сейчас его никто не ставит), ПЗУ материнской платы.
Область выше 1024К недоступна программам под управлением DOS. Исключение составляют машины класса АТ, на которых используется специальный менеджер расширенной памяти, который позволяет пересылать блоки данных туда и обратно. При этом на время пересылки система выходит из режима DOS в так называемый защищенный режим и возвращается в исходное состояние по завершении пересылки.
Вообще говоря, существует 2 стандарта на расширенную память: expanded (EMS) и extended (XMS) память. Expanded (расширенная) память появилась первой и представляла собой отдельную плату, содержащую несколько Мб памяти, поделенной на страницы по 16К. В адресном пространстве DOS отводился определенный участок (frame), размером 64К, в который можно было отобразить любые 4 страницы из расширенной памяти. Таким образом создавалось нечто вроде электронного диска, на котором можно было хранить данные и код.
Extended (буквально: “растянутая”) память является как бы продолжением обычной памяти DOS за границей 1024К. Хотя сам микропроцессор способен обращаться к этой памяти напрямую, DOS способна работать лишь с первым мегабайтом. Тем не менее, начиная с версии 5.0 в MS DOS были введены средства (Int 15h) для перемещения данных в extended память и обратно. Фактически, при этой операции микропроцессор переходит из “реального” режима в “защищенный”, пересылает данные, а затем возвращается в “реальный” режим. Такое переключение, очевидно, занимает некоторое время. Существуют драйвера (например, EMM386.EXE), эмулирующие EMS память внутри extended, некоторые программы пользуются такой возможностью.
Есть еще одна область памяти, о которой стоит упомянуть, это так называемая верхняя память. Это память за границей 1024К, к которой DOS, тем не менее, может обращаться напрямую. Как известно, полный 20-разрядный адрес получается в результате сложения 16-разрядного сегментного регистра, умноженного на 16 с 16-разрядным регистром смещения. При этом максимальный адрес может быть 0FFFFFh, что соответствует паре сегмент:смещение 0F000h:0FFFFh, или 0FFFFh:0000Fh. А что получится, если сегмент равен 0FFFFh, а смещение 00010h ? В результате сложения мы получим адрес 0100000h. Если бы процессор имел лишь 20 адресных линий. то старшая единица бы потерялась, а мы обратились бы к нулевой ячейке памяти. Однако современные процессоры имеют большее число адресных линий, поэтому мы обратимся к ячейке за пределами 1024К! Таким образом. мы имеем дополнительно почти 64К (без 16 байт), к которым мы можем обращаться, не переходя в защищенный режим. Этим приемом современная DOS активно пользуется, размещая здесь свой код, драйвера и данные, освобождая основную память для пользовательской программы.
Программная организация MS DOS должна быть рассмотрена с двух позиций: пользователя и работающей программы. Попытаемся охватить оба эти подхода.
В минимальной конфигурации для работы MS DOS достаточно всего 3х файлов: IO.SYS, MSDOS.SYS и COMMAND.COM. Именно эти файлы записываются на диск командой FORMAT с ключом /S или командой SYS.
IO.SYS – обеспечивает функции работы с периферийным оборудованием (терминалом, дисками, принтером, …);
MSDOS.SYS – содержит функции управления файлами, памятью, запуска программ и т.д. Иногда его называют модулем управления прерываниями, поскольку обращение к перечисленным средствам из программ пользователя осуществляется с помощью программных прерываний;
COMMAND.COM – командный процессор, обеспечивающий пользовательский интерфейс и загрузку программ. В его функции входит прием и проверка команд, вводимых пользователем, выполнение некоторых из этих команд (называемых внутренними), запуск остальных (внешних) команд MS DOS, вывод на экран диагностических и аварийных сообщений и другие действия. Файл COMMAND.COM является частично резидентным, а частично – загружаемым (для экономии памяти).
Начиная с версии MS DOS 5 добавился еще один обязательный файл DRVSPACE.BIN, содержащий функции динамического сжатия данных при записи / чтения с диска.
Помимо перечисленных, MS DOS включает набор внешних команд (программ), реализованных в виде отдельных .COM или .EXE файлов. (FORMAT, XCOPY, …). Хотя полезно иметь на диске полный набор команд DOS, в случае нехватки дисковой памяти, их можно безболезненно удалить. Удобно, что для включения команды в состав MS DOS достаточно просто переписать файл на диск, никакой дополнительной настройки DOS при этом не требуется.
Еще один компонент MS DOS – это загружаемые драйвера устройств, имеющие расширение .SYS, которые обеспечивают управление дополнительными устройствами или расширение функций стандартных. (HIMEM.SYS, RAMDRIVE.SYS, …).
Настройка MS DOS под конкретное аппаратное обеспечение и нужды пользователя производится при помощи файлов AUTOEXEC.BAT и CONFIG.SYS, которые считываются при старте системы. Мы их рассмотрим чуть позднее.
Все команды, которые может выполнять для нас командный процессор COMMAND.COM делятся на 4 категории: внутренние и 3 вида внешних команд: программы в файлах типа COM, EXE и BAT. Внутренние команды являются наиболее важными, потому они реализованы непосредственно внутри командного процессора. Их состав зависит от версии DOS. Чаще всего употребляются команды: CLS, VER, DATE, TIME, CD/CHDIR, DIR, MD/MKDIR, RD/RMDIR, COPY, REN/RENAME, DEL/ERASE, TYPE, EXIT, SET, PATH.
Если полученная системой команда не является внутренней, то делается попытка найти на диске файл с соответствующим именем и расширением COM, EXE или BAT. Список каталогов, которые будут просмотрены при поиске определяется переменной окружения PATH. Файлы типов COM и EXE – это обычные программные файлы, которые различаются лишь внутренней структурой хранения. Файл типа COM является практически “снимком” программы в оперативной памяти и при загрузке не требует предварительной обработки. За это приходится платить тем, что COM–программа не может иметь более 64К кода.
EXE файл лишен этого недостатка, однако перед запуском операционная система должна провести подготовку: откорректировать адреса переходов и вызовов процедур в соответствии с их реальным расположением в памяти.