Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС__Глава2.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
1.88 Mб
Скачать

Распределение оперативной памяти в современных ос для пк

Первый вопрос, который хочется задать, — это какие ОС следует относить к со­временным, а какие — нет? Стоит ли в наше время изучать такую «несовремен­ную» ОС, как MS-DOS?1 С нашей точки зрения, прежде всего к современным ОС следует отнести те, что используют аппаратные возможности микропроцес­соров, специально заложенные для организации высокопроизводительных и на­дежных вычислений. Однако эти ОС, как правило, очень сложны и громоздки. Они занимают большое дисковое пространство, требуют и большого объема опе­ративной памяти. Поэтому для решения некоторого класса задач вполне подхо­дят и системы, использующие микропроцессоры в так называемом реальном ре­жиме работы (см. об этом в следующей главе).

В последние годы можно встретить студентов, обучающихся специальностям, непосредственно связанным с вычислительной техникой, которые совсем не зна­ют DOS-систем. Скорее всего, это является доказательством того, что такие ОС уже не являются современными. Однако достаточно часто для обслуживания компьютера необходимо выполнить простейшие программы — утилиты. Эти программы были созданы для DOS, они не требуют больших ресурсов, для их

1 Широко известно, что было много версий ОС, которые мы, упрощая ситуацию, относим к MS-DOS. MS-DOS — это вариант фирмы Microsoft реализации дисковой операцион­ной системы [3, 28]. Фирма Microsoft прекратила разработку подобных систем, и послед­ней их реализацией была MS-DOS 6.22. Были (и есть ныне) реализации такого рода систем и от других разработчиков. Поскольку у MS-DOS 6.22 существуют известные проблемы с 2000 годом, большой популярностью пользуется PC-DOS 7.0 от IBM.

функционирования достаточно запустить MS-DOS или аналогичную простую ОС. Однако без выполнения этих программ невозможно порой установить или за­грузить иные ОС (хоть и современные, но очень сложные и громоздкие). Поэто­му мы считаем правильным хотя бы первичное, пусть не очень глубокое озна­комление с MS-DOS.

Распределение оперативной памяти в ms-dos

Как известно, MS-DOS — это однопрограммная ОС. В ней, конечно, можно орга­низовать запуск резидентных или TSR-задач1, но в целом она предназначена для выполнения только одного вычислительного процесса. Поэтому распределение памяти в ней построено по самой простой схеме, которую мы уже рассматривали в разделе «Простое непрерывное распределение и распределение с перекрытием (оверлейные структуры)». Здесь мы лишь уточним некоторые характерные детали.

В IBM PC использовался 16-разрядный микропроцессор 18088, который за счет введения сегментного способа адресации позволял адресоваться к памяти объе­мом до 1 Мбайт. В последующих ПК (IBM PC AT, AT386 и др.) было приня­то решение поддерживать совместимость с первыми, поэтому при работе с DOS прежде всего рассматривают первый мегабайт. Вся эта память разделялась на не­сколько областей, что проиллюстрировано на рис. 2.10. На этом рисунке изобра­жено, что памяти может быть и больше, чем 1 Мбайт, но более подробное рас­смотрение этого вопроса мы здесь опустим, отослав желающих изучить данную тему глубже к монографии [9].

Если не вдаваться в детали, можно сказать, что в состав MS-DOS входят следую­щие основные компоненты:

Q Базовая подсистема ввода/вывода — BIOS (base input-output system), вклю­чающая в себя помимо программы тестирования ПК (POST2) обработчики прерываний (драйверы), расположенные в постоянном запоминающем уст­ройстве. В конечном итоге, почти все остальные модули MS-DOS обращают­ся к BIOS. Если и не напрямую, то через модули более высокого уровня иерархии.

Q Модуль расширения BIOS — файл IO.SYS (в других DOS-системах он может называться иначе, например, IBMBIO.COM).

Q Основной, базовый модуль обработки прерываний DOS — файл MSDOS.SYS. Именно этот модуль в основном реализует работу с файловой системой. (В PC-DOS аналогичный по значению файл называется IBMDOS.COM).

Q Командный процессор (интерпретатор команд) — файл COMMAND.COM.

1 TSR (terminate and stay resident) — резидентная в памяти программа, которая благодаря изменениям в таблице векторов прерываний позволяет перехватывать прерывания и в случае обращения к ней выполнять необходимые нам действия. Подробно об этом можно прочесть, например, в книгах [3, 23, 24, 35].

2 POST (power on self test) — программа самотестирования при включении компьютера. После выполнения этой программы, входящей в состав ROM BIOS, опрашиваются уст­ ройства, которые могут содержать программы для загрузки ОС.

Q Утилиты и драйверы, расширяющие возможности системы. Q Программа загрузки MS-DOS — загрузочная запись (boot record), располо­женная на дискете (подробнее о ней и о других загрузчиках см. главу 4).

Вся память в соответствии с архитектурой IBM PC условно может быть разбита на три части.

В самых младших адресах памяти (первые 1024 ячейки) размещается таблица векторов прерываний (см. раздел «Система прерываний 32-разрядных микропро­цессоров 180x86», глава 3). Это связано с аппаратной реализацией процессора i8088, на котором была реализована ПК. В последующих процессорах (начиная с i80286) адрес таблицы прерываний определяется через содержимое соответст­вующего регистра, но для обеспечения полной совместимости с первым процес­сором при включении или аппаратном сбросе в этот регистр заносятся нули. При желании, однако, в случае использования современных микропроцессоров 180x86 можно разместить векторы прерываний и в другой области.

Вторая часть памяти отводится для размещения программных модулей самой MS-DOS и для программ пользователя. Рассмотрим их размещение чуть ниже. Здесь, однако, заметим, что эта область памяти называется Conventional Memoiy (основная, стандартная память).

Наконец, третья часть адресного пространства отведена для постоянных запо­минающих устройств и функционирования некоторых устройств ввода/вывода. Эта область памяти получила название UMA (upper memory areas — область верхней памяти).

В младших адресах основной памяти размещается то, что можно назвать ядром этой ОС — системные переменные, основные программные модули, блоки дан­ных для буферирования операций ввода/вывода. Для управления устройствами, драйверы которых не входят в базовую подсистему ввода/вывода, загружают­ся так называемые загружаемые (или инсталлируемые) драйверы. Перечень ин­сталлируемых драйверов определяется специальным конфигурационным файлом CONFIG.SYS. После загрузки расширения BIOS — файла IO.SYS — последний (за­грузив модуль MSDOS.SYS) считывает файл CONFIG.SYS и уже в соответствии с ним подгружает в память необходимые драйверы. Кстати, в конфигурацион­ном файле CONFIG.SYS могут иметься и операторы, указывающие на количест­во буферов, отводимых для ускорения операций ввода/вывода, и на количество файлов, которые могут обрабатываться (для работы с файлами необходимо заре­зервировать место в памяти для хранения управляющих структур, с помощью которых выполняются операции с записями файла). В случае использования мик­ропроцессоров 180x86 и наличия в памяти драйвера HIMEM.SYS модули IO.SYS и MSDOS.SYS могут быть размещены за пределами первого мегабайта в области, которая получила название НМЛ (high memory area).

Память с адресами, большими чем lOFFFFh, может быть использована в DOS-программах при выполнении их на микропроцессорах, имеющих такую возмож­ность. Так, например, микропроцессор i80286 имел 24-разрядную шину адреса, а i80386 — уже 32-разрядную шину адреса. Но для этого с помощью специаль­ных драйверов необходимо переключать процессор в другой режим работы, при котором он сможет использовать адреса выше lOFFFFh. Широкое распростране­ние получили две основные спецификации: XMS (extended memory specification) и EMS (expanded memory specification). Поскольку основные утилиты, необходи­мые для обслуживания ПК, как правило, не используют эти спецификации, мы не будем здесь их рассматривать.

Остальные программные модули MS-DOS (в принципе, большинство из них яв­ляется утилитами) оформлены как обычные исполняемые файлы. В основном они являются транзитными модулями, то есть загружаются в память только на время своей работы, хотя среди них имеются и TSR-программы. Для того чтобы предоставить больше памяти программам пользователя, в MS-DOS применено то же решение, что и во многих других простейших ОС — командный процессор COMMAND.COM сделан состоящим из двух частей. Первая часть явля­ется резидентной, она размещается в области ядра. Вторая часть — транзитная; она размещается в области старших адресов раздела памяти, выделяемой для программ пользователя. И если программа пользователя перекрывает собой об­ласть, в которой была расположена транзитная часть командного процессора, то последний при необходимости восстанавливает в памяти свою транзитную часть, поскольку после выполнения программы она возвращает управление резидент­ной части COMMAND.COM.

Поскольку размер основной памяти (conventional memory) относительно неболь­шой, то очень часто системы программирования реализуют оверлейные структу­ры. Для этого в MS-DOS есть специальные вызовы.