Управление памятью в ms dos
Цепочки памяти MS-DOS
Управление памятью MS-DOS начинается при загрузке MS-DOS. Все блоки памяти MS-DOS либо свободны, либо распределены, начиная с блока управления памятью (MCB - memory control block). Эти блоки управления, показанные на Рис.3-3, идентифицируют тип и размер блока памяти и программу (или процесс), которая владеет им.
Два типа блоков управления памятью являются цепочками блоков, тип которого есть 4Dh, и конечный блок цепочки - тип 5Ah. Тип блока хранится в первом байте блока MCB.
Следующие два байта в блоке MCB являются словом, которое идентифицирует владельца блока памяти. Значение нуль указывает, что блок нераспределен или свободен. Если поле владельца ненулевое, то это значит, что блок распределен. Это слово содержит идентификатор владельца процесса (PID - process identifier). PID для процесса пользователя получается от адреса сегмента, взятого из сегмента программного префикса (PSP - program segment prefix) данного процесса.
Четвертый и пятый байты в MCB являются словом, которое содержит размер блока памяти, следующего за этим блоком. Этот размер выражается в параграфах (блоки по 16 байт) и не включает размер самого блока MCB. Оставшиеся 11 байтов MCB не определены.
Несмотря на то, что полный список блоков управления часто относят к цепочке распределения памяти, блоки MCB, на самом деле, не редактируются вместе, MCB только указывает на распределенный блок памяти. Вернее, каждый блок MCB непосредственно следует в памяти перед блоком, которым он управляет. Если MCB и соответствующий ему блок памяти не последние в цепочке, то за ними непосредственно следуют другой MCB и блок памяти.
Начиная от данного MCB, адрес сегмента следующего MCB в цепочке получается путем сложения размера (в параграфах) текущего блока с текущим адресом сегмента MCB, плюс 1. При этом способе может быть просмотрена вся цепочка MCB, но только в прямом направлении. Начиная от данного MCB, можно определить адрес предыдущего MCB. Как затем можно узнать, какие блоки находятся в памяти?
Функция MS-DOS с номером 52h (прерывание int 21h) является недокументируемой функцией, которая возвращает указатель на список внутренних значений MS-DOS. Указатель возвращается в паре ES:BX. Как раз перед этим списком в слове, указываемом значением ES:[BX - 2], находится адрес первого MCB. Из этой начальной точки может быть определена вся цепочка MCB.
Эти способы использованы в программе SHOWMEM (отобразить память), приведенной в листинге 3-1.
Листинг 3-1 содержит как исходный файл SHOWMEM.ASM, так и заголовок файла PCP.INC (который мы рассмотрим несколько подробней). Рис.3-4 изображает результаты работы программы SHOWMEM. Подпрограмма ShowMCBInfo в программе SHOWMEM.ASM отображает содержимое блока MCB. Процедура main содержит коды для размещения начального блока и, после метки show_mem, вычислительные операции для нахождения следующего блока в цепочке. Дополнительные коды в подпрограмме ShowMCBOwner могут совсем не иметь смысла. Эти коды используются для отображения имени процесса, который владеет блоком памяти, и поясняются в следующих разделах.
Рассмотрев Рис.3-4, можно усвоить несколько интересных моментов. В частности, можно увидеть, что автор программы загрузил в память три резидентные программы: RETRIEVE (восстановление), MODE (режим) и SWITCH (переключатель). На Рис.3-4 можно также увидеть, что программа SHOWMEM имеет очень большой выделенный для нее блок памяти - 555 Кбайт! Кроме того, можно также увидеть, что каждая загруженная программа имеет два распределенных для нее блока памяти. Вот это последнее обстоятельство мы первым и объясним.
1 - программа показа памяти - ShowMem, версия 1.00, авторское право 1988; 2 - блок управления памятью, размер, владелец, командная строка; 3 - конец списка блоков памяти.
В MS-DOS реализовано управление памятью без организации виртуального адресного пространства, но с распределением блоков переменной длины. Базовые механизмы ОС опираются только на средства реального режима процессоров x86, и лишь для работы с «верхней» памятью используются особенности адресации 286+ и переключение в защищенный/виртуальный режим.
Память в MS-DOS представляется как непрерывный массив, распределяемый отдельными блоками. Блоки могут начинаться только на границе параграфа, поэтому для задания блока достаточно его сегментного адреса. Блоки следуют непосредственно друг за другом и составляют связный список. Вся доступная для распределения память должна быть включена в эти блоки, в том числе и свободная. Последний блок в списке соответствует нераспределенному нефрагментированному остатку памяти.
Каждый блок предваряется управляющим блоком (MCB — Memory Control Block), который занимает ровно один параграф и содержит поля:
байт 0 — опознавательный маркер блока: 5Ah (‘Z’) для последнего блока списка, 4Dh (‘M’) для всех остальных;
байты 1..2 — сегментный адрес PSP программы – владельца блока (в MS-DOS адрес PSP играет роль PID — идентификатора загруженной программы);
байты 3..4 — размер блока в параграфах, при отсутствии «зазоров» между блоками в списке это значение является «относительной» ссылкой на следующий блок (размер самого MCB в этом поле не учитывается!);
байты 8..15 — имя программы – владельца блока.
Поля PID и имени владельца для пустых блоков ожидаются пустыми. Для используемых блоков корректность их значений не гарантируется: обычная их интерпретация справедлива в основном только если блок выделался стандартным способом обычной прикладной программе. Блоки, выделенные DOS для своих нужд, имеют PID = 0008h и имя «владельца» начинающееся с комбинаций “SD” (data) или “SC” (code). Внутри «системных» блоков памяти могут организовываться вложенные списки с аналогичными структурами суб-блоков и суб-MCB. Маркеры суб-MCB могут содержать значения: 'B' — дисковые буферы, 'D' — драйвер устройства, 'F' — системная таблица файлов, 'L' — данные логического диска, 'S' – внутренние стеки DOS; 'X' – кэш FCB, и так далее (эта информация считается недокументированной).
Зная адрес одного из блоков, можно просканировать все последующие до конца списка. DOS хранит адрес первого блока в специальной структуре или DIB — DOS Info Block (она же List of Lists). Адрес DIB возвращает в регистрах ES:BX недокументированная функция int 21h AH=52h. Слово по адресу ES:BX‑2 содержит сегментный адрес первого MCB списка.
Помимо этого, в качестве стартовой точки можно использовать первый не принадлежащий системе блок памяти, выделенный прикладной программе, которая имеет PSP. Для этого выполняется сканирование параграфов до обнаружения первого содержащего действительный MCB. Признаками такого MCB будут:
– наличие маркера MCB;
– владельцем блока является он сам, то есть PID владельца указывает на следующий после MCB параграф;
– блок содержит PSP – начинается с команды int 20h.
Других структур для описания распределяемой памяти не предусмотрено, вся необходимая информация получается, в том числе и системой, путем сканирования списка MCB, поэтому любые изменения в ней отражаются на работе всей системы. Так, уменьшение значения в поле размера последнего MCB приводит к изменению объема памяти, контролируемой DOS, и появлению невидимой для неё области.
ОС, в общем случае, должна обеспечить: выделение блока памяти по запросу прикладной программы, освобождение блока, перераспределение ранее выделенного блока (изменение размера), а также учёт свободной и занятой памяти, дефрагментацию блоков и другие сервисные функции.
В MS-DOS предусмотрены три основные функции прерывания int 21h:
AH=48h — выделение блока памяти. На входе: BX – размер блока в параграфах. На выходе: AX – сегментный адрес выделенного блока, BX — максимальный доступный размер этого блока.
AH=49h — освобождение блока. На входе: ES — сегментный адрес блока.
AH=4Ah — изменение размера ранее выделенного блока. На входе: ES — сегментный адрес блока, BX — новый размер блока в параграфах. На выходе: BX — максимальный доступный размер этого блока.
Все функции при возникновении ошибки устанавливается флаг CF и возвращают ее код в AX.
DOS выделяет только непрерывные блоки памяти, перемещение выделенных фрагментов, а также дефрагментация свободной памяти не предусмотрены, за исключением объединения пустых блоков в конце списка. После стандартного завершения программы выделенные ей блоки освобождаются автоматически, но только при условии, что их владелец в MCB был указан корректно. Дополнительные функции позволяют управлять стратегиями распределения памяти.
Контрольные вопросы
1) Организация памяти в MS-DOS.
2) Структура MCB блока.
3) Функции для создания, удаления и изменения размера блока.
4) Организация сложных динамических структур данных.
Варианты заданий
1. Создать двунаправленный список для хранения строк. Каждый элемент списка должен хранить указатель на блок с предыдущим элементом, указатель на блок со следующим элементом, указатель на блок, хранящий строку. Строки необходимо хранить в отдельных блоках памяти. Пользователю должны быть доступны следующие функции: добавить строку в начало списка, добавить строку в конец списка, удалить элемент списка с указанным номером, очистить список, показать содержимое списка (хранимые строки) на экране.
2. Создать динамический массив для хранения строк. Массив должен представлять собой указатели на блоки памяти, в которых хранятся строки. При добавлении элемента необходимо проверить, есть ли для него место. В случае, если весь массив занят, его необходимо выделить заново, увеличив размер вдвое, и скопировать туда старое содержимое. Пользователю должны быть доступны следующие функции: добавить строку в конец массива, установить новую строку в определенный элемент массива (с указанным индексом), удалить строку с указанным индексом, очистить массив, показать содержимое массива (хранимые строки) на экране.
3. Создать двоичное дерево, хранящее числа. Каждый элемент дерева должен хранить информацию о блоке левого сына, блоке правого сына и хранимое число. Необходимо реализовать алгоритмы добавления числа в двоичное дерево и удаления числа из него. Пользователю должны быть доступны следующие функции: добавить число, удалить число, очистить дерево, показать содержимое дерева на экране. При выводе на экран показывать дерево в виде строки вида: содержимое родителя (содержимое левой ветви, содержимое правой ветви). Соответственно, для каждой из ветвей функция вывода должна быть вызвана рекурсивно.
4. Сформировать путем анализа списка MCB и вывести карту памяти, включая размер блоков и их владельцев.
5. Реализовать выделение и освобождение блоков памяти без обращений к функциям DOS.
6. Реализовать перераспределение блока памяти; в случае невозможности увеличить размер блока попытаться переместить его на новое место (текущее содержимое блока копируется).
7. (повышенной сложности) Объединяет функции вариантов 4..6, дополняется интерактивным интерфейсом, позволяющим выбирать функции.
MS-DOS – это ОС, работающая в реальном режиме процессора i86, что предполагает использование адресного пространства размером всего лишь 1 Мб. На самом деле, в компьютерах IBM гарантируется наличие лишь 640 Кб основной памяти, старшие же адреса памяти заняты под BIOS и видеопамять, хотя среди них попадаются разрозненные куски оперативной памяти, называемые UMB (верхний блок памяти).
Адрес в реальном режиме записывается в формате [сегмент : смещение], однако здесь сегмент – это не селектор, адресующий строку таблицы сегментов, а просто номер параграфа памяти (1 параграф = 16 байт). Поэтому можно считать, что в MS-DOS используются только физические адреса.
В принципе, программы, работающие в MS-DOS, могут получить доступ к памяти за пределами 1 Мб, но для этого требуется специальный драйвер расширенной памяти.
Поскольку делить имеющуюся память между несколькими процессами не приходится, распределение получается бесхитростное. Основные области памяти показаны на рис. 1.
Нижнюю часть памяти занимают модули ОС: обработчики прерываний, резидентная чисть интерпретатора команд, драйверы устройств. Некоторые системные программы могут быть ради экономии загружены в верхний блок памяти (выше 640 Кб). Все, что остается в середине, может быть предоставлено процессу пользователя.
Для пущей экономии памяти некоторые нерезидентные модули DOS могут занимать верхнюю часть области пользователя, но только до тех пор, пока не будут затерты пользовательской программой, которой потребуется вся имеющаяся память.
Часть системной памяти и вся область пользователя разбита на прилегающие друг к другу блоки, размер которых кратен параграфу. Перед началом каждого блока памяти размещается блок управления памятью (MCB, Memory Control Block), который занимает один параграф и содержит следующие данные:
· признак, определяющий, последний ли это блок памяти или за ним будут еще блоки (соответственно буква ‘Z’ или ‘M’, это, видимо, опять Марк Збиковский отметился);
· адрес PSP программы, владеющей этим блоком (0 означает свободный блок);
· размер блока в параграфах;
· имя программы-владельца (до 8 символов); это поле избыточно (зная PSP программы, можно найти имя ее файла), оно было добавлено, вероятно, чтобы хоть как-то занять пустующие байты параграфа MCB.
Когда система должна выделить блок памяти для собственных нужд или по запросу программы пользователя, она просматривает список блоков от начала, перемещаясь от одного MCB к следующему. Найдя свободный блок достаточного размера, система отмечает его как занятый соответствующим владельцем. Если выделяется не весь свободный блок, то после выделенного блока система записывает еще один MCB, описывающий свободный остаток блока.
При освобождении блока система записывает 0 в поле владельца MCB. Если с одной или с двух сторон от освобождаемого блока лежат свободные блоки, то два или три свободных блока сливаются в один.
При запуске программы система выделяет ей два блока памяти: сначала небольшой блок для переменных среды, затем самый большой среди оставшихся свободных блоков для самой программы. Обычно этот блок занимает всю свободную память. Такое решение приемлемо, поскольку других претендентов на память нет.
MS-DOS предоставляет в распоряжение пользователя функции, позволяющие выполнять основные действия с блоками памяти.
· Выделение блока указанного размера. Если свободного блока достаточной величины не имеется, то система возвращает максимальный размер, который может быть выделен.
· Освобождение ранее выделенного блока.
· Изменение размера блока. Уменьшение блока возможно всегда, увеличение – только в том случае, если после данного блока расположен свободный блок достаточного размера.
Одним из немногих случаев, когда эти функции оказываются полезны, является запуск порожденного процесса. Система должна иметь достаточно свободного места, чтобы разместить блок среды и блок PSP загружаемой программы. Однако, как было сказано выше, вся свободная память обычно отдается под блок PSP текущей программы. Поэтому прежде чем запускать порожденный процесс, программа должна уменьшить свой собственный блок PSP, оставив себе необходимый минимум.
Тема: Конфигурирование операционной системы. Файл CONFIG.SYS
Для того чтобы компьютерная система работала оптимально, необходимо выполнить тщательную ее настройку — сконфигурировать под конкретную аппаратуру.
Под конфигурированиемпонимают настройку операционной системы для работы с конкретным типом процессора и периферийными устройствами:
ü дополнительными устройствами указания, например, мышью,
ü расширителями памяти.
Обычно в понятие конфигурирования включают также и адаптацию операционной системы к индивидуальным пожеланиям и потребностям пользователя.
Если операционная система найдена, она загружается и начинает работать, т.е. управлять компьютером.
После загрузки обоих скрытых системных файлов разыскивается файл по имени CONFIG.SYS, т.е. файл конфигурации. Этот файл управляет настройкой операционной системы под индивидуальные требования или пожелания пользователя.
Файл CONFIG.SYS должен находиться в корневом каталоге той дискеты (носителя) или того винчестера, с которого компьютер запускается. Только там компьютер может искать и находить этот файл.
Если CONFIG.SYS отсутствует, то компьютер продолжает работу со стандартными параметрами (параметрами по умолчанию), заданными разработчиками операционной системы. Эти параметры различаются в зависимости от того, работаете ли Вы с компьютером типа ХТ или с компьютером типа АТ.
Через файл CONFIG.SYS можно сообщить операционной системе свои пожелания в отношении конфигурации и загрузить дополнительные драйверы (программы управления периферийными устройствами).
Благодаря использованию команды SHELL в файле CONFIG.SYS может быть загружен и другой интерпретатор команд, например 4DOS, однако эта возможность используется весьма редко. Если до сих пор все прошло гладко, то МS-DOS ищет файл по имени АUTОЕХЕС.ВАТ (англ. АИТО-ЕХЕСUТЕ — выполнять автоматически). В нем содержится подлежащая выполнению последовательность команд МS-DOS. Речь идет о командах, которые должны выполняться при каждом запуске компьютера.
Тема: Файл автозапуска АUTОЕХЕС.ВАТ
Установки, сделанные в файле CONFIG.SYS, сохраняют свое действие до следующего запуска системы, т.е. их нельзя изменить без перезагрузки компьютера. Большинство настроек, которые выполнены с помощью файла АUTОЕХЕС.ВАТ, можно изменять в пределах одного сеанса работы. Это обусловлено тем, что файл CONFIG.SYS модифицирует/настраивает операционную систему, а в файле АUTОЕХЕС.ВАТ только вызывается по очереди любое число программ или команд.
Так как некоторые из программ управления периферийными устройствами, например стандартный драйвер клавиатуры, можно загрузить через файл CONFIG.SYS с помощью команды INSTALL, то файл АUTОЕХЕС.ВАТ нужен лишь для автоматической загрузки оболочки пользователя, редактора командной строки (DOSKEY) или необходимых дополнительных вспомогательных программ (например, программ защиты от вирусов), При работе с кириллицей здесь также часто загружается кириллизованный драйвер клавиатуры.
В системах без встроенных часов текущую дату и время суток необходимо каждый раз заново вводить после каждого запуска системы. Команды DАТЕ и ТIМЕ приводят к тому, что на экране дисплея автоматически появляются два соответствующих запроса. (Если в файле CONFIG.SYS была предпринята соответствующая настройка (СОUNTRY=049), то запрос о дате и времени суток появляется в немецком варианте, т.е. последовательно день/месс/год.
Кроме этого, в файле АUTОЕХЕС.ВАТ обычно содержится и команда вида РROMPT $Р$С. Благодаря этой команде более информативным становится приглашение к вводу (РRОМPТ), т.е. сигнал готовности компьютера. Теперь это приглашение вместо индикации одного лишь имени текущего дисковода информирует Вас дополнительно и об имени активной в данный момент директории.
В файле АUTОЕХЕС.ВАТ можно размещать достаточно большое число команд, каждая из которых должна выполняться после каждого запуска системы.
Пример файла АUTОЕХЕС.ВАТ
C:\DOS\SMARTDRV.EXE C D 912
PATH C:\DOS; D:\TOOLS; C:\DOS\BATCH
@ECHO OFF | Последующие команды не будут отображаться на экране |
C:\DOS\SMARTDRV.EXE C D 912 | Устанавливает размер кэша 912 Кбайт |
PATH C:\DOS; D:\TOOLS; C:\DOS\BATCH | Задает пути доступа к каталогам |
PROMT $P$G | Включает приглашение к вводу |
SET TEMP=C:\ | Устанавливает переменную для размещения временных файлов |
SET DIRCMD=/P | Позволяет не вводить каждый раз ключ Р |
DOSKEY | Устанавливает резидентную программу |
CLS |
Тема: Создание системной дискеты
Так как основным видом блочных устройств являются магнитные и другие диски, то процесс форматирования и подготовки системной дискеты начнем с рассмотрения структуры диска.
Поверхность нового магнитного диска покрыта однородным слоем магнитного материала. У дискеты используется либо одна поверхность, либо (чаще) обе поверхности. Число поверхностей жесткого дискового тома определяется количеством дисков, из которых собран том.
Первой операцией, которая должна быть проделана с диском, является низкоуровневое форматирование. Оно заключается в разметке поверхности на дорожки магнитной записи, разделенные на секторы. Расстояние между дорожками определяется шагом перемещения головок чтения/записи, а разбиение на секторы выполняется программно, путем записи данных на дорожки в моменты, рассчитанные на основании известной скорости вращения диска. Для всех операций с диском, кроме низкоуровневого форматирования, сектор является минимальной единицей чтения или записи данных.
Совокупность дорожек одинакового радиуса на всех поверхностях диска называется цилиндром.
Форматирование дискеты используется для подготовки нового диска к использованию в среде DOS или для быстрого удаления с диска имеющихся файлов.
Форматирование – это разбиение дискеты на определенное количество концентрических окружностей – дорожек. Каждая дорожка разбивается на сектора.
Форматирование дискеты осуществляется с помощью команды FORMAT, содержащейся в файле format.exe.
Формат команды: FORMAT _дисковод:
Если в команде указать параметр /S, то будет подготовлена системная дискета, т.е. дискета, с которой можно загрузить MS DOS
Пример: format a: - форматирование диска a:
Если возникла необходимость в отмене форматирования дискеты, необходимо набрать команду Ctrl+C или Ctrl+Break.
Тема: Командные файлы
При загрузке операционной системы осуществляется ее настройка на работу с различными внешними устройствами компьютера: дисководами, дисплеем, принтером, мышью и т. д. Процесс согласования работы ОС с устройствами компьютера называют конфигурированием системы.
Файл СОNFIG.SYS представляет собой обычный текстовый файл, в котором непосредственно задаются:
ü режим прекращения работы прикладных программ;
ü число буферов в оперативной памяти, используемых при записи информации на диски в качестве промежуточных хранителей информации;
ü количество одновременно открываемых файлов;
ü специальные программы драйверы для настройки на внешние устройства и т. д.
Фрагмент содержания файла СОNFIG.SYS:
Вreak on — режим прекращения работы прикладных программ при
нажатии Сtrl+Break;
buffers =13 — количество буферов;
files = 28 — количество файлов;
device = c:\DOS\mouse.sys — подключение драйвера мыши mouse.sys.
Файл АUTOEХЕС.ВАТ называют командным файлом. Он содержит в основном команды MS DOS, которые пользователь хотел бы выполнить сразу при загрузке, чтобы создать для себя удобную среду для работы.
В файле АUTOEХЕС.ВАТ задаются:
ü вид приглашения в командной строке МS DOS;
ü команды МS DOS и др.
Фрагмент содержания файла АUTOEХЕС. ВАТ:
promt $p$g — задание приглашения DOS-“>”:
nc — запуск Norton Commander
Тема: Установка MS DOS. Разбиение жесткого диска.
Для того чтобы установить MS DOS на винчестер, необходимо воспользоваться программой SETUР.
Для это го необходимо иметь:
ü версию MS DOS,
ü около 450 Кбайт ОЗУ,
ü как минимум 10 Мбайт свободного объема памяти винчестера (для полной инсталляции) или 4,5 Мбайт для минимальной.
Вначале как обычно запустите свой компьютер с винчестера, а затем с помощью команды
перейдите на дисковод А:, в котором должна находиться инсталляционная дискета (DISK 1).
Запустите процесс установки (инсталляции) с помощью команды SETUР «Еnter»
Вначале автоматически вызывается программа МSD, формирующая файл протокола обследования Вашего компьютера BEFSETUP.MSD, размещаемый в корневом директории диска С:. После завершения инсталляции просмотрите содержимое этого файла — и Вы узнаете о своем компьютере немало интересного: начиная от родословной и кончая конфигурацией памяти. По истечении некоторого времени на экране появится изображение-приветствие.
Особое внимание следует обратить на самую нижнюю строку, в которой содержится информация о назначении клавиш.
Если вдруг программа SETUР не запускается, тогда либо переименуйте с помощью команды RENAME файлы СОNFIG.SYS и АUTOEХЕС.ВАТ, находящиеся на том диске, с которого Вы запустили свой компьютер, либо скопируйте оба файла с помощью команды СОРУ на какую-либо дискету, а затем удалите исходные файлы. После этого запустите свой компьютер заново.
Возможно, что свободной памяти на диске С: слишком мало. В этом случае программа SETUР попросит Вас почистить его, указав, сколько свободного места ей необходимо.
Для выполнения инсталляции надлежит нажать «Еnter», для отказа от инсталляции — «FЗ», для получения справочной информации — «F1».
Операционная система MS-DOS – это однопользовательская, однозадачная, не сетевая 16-разрядная операционная система, ориентированная на использование на ПЭВМ с микропроцессором Intel 8088.
Основными характеристиками данной ОС являются:
– максимальный объем адресуемой физической памяти – 640 Кб;
– максимальный объем памяти, доступный из прикладных программ 640 Кб. Последние версии MS-DOS могут использовать адресное пространство между 640 Кб и 1 Мб для размещения своих составных частей и некоторых драйверов, освобождая тем самым память в адресном пространстве 0-640 Кб для использования прикладными программами;
– представление всех ресурсов персонального компьютера для одной, активной в настоящий момент, программы;
– развитая файловая система и процессор командного языка;
– слабая поддержка интерактивных средств взаимодействия с пользователем;
– занимаемый объем на диске, в зависимости от версии, от 1 Мб до 6 Мб.
Под управлением памятью понимают процессы обеспечения доступа к ней, распределения ее между программами и контроля работы ОЗУ компьютера. Функции управления работой памяти в MS-DOS полностью возложены на саму операционную систему.
Нижнюю часть памяти занимают модули ОС. Для экономии памяти некоторые нерезидентные модули DOS могут занимать верхнюю часть области пользователя, но только до тех пор, пока не будут затерты пользовательской программой, которой потребуется вся имеющаяся память.
Часть системной памяти и вся область пользователя разбита на прилегающие друг к другу блоки, размер которых кратен параграфу. Перед началом каждого блока памяти размещается блок управления памятью, который занимает один параграф. Когда система должна выделить блок памяти для собственных нужд или по запросу программы пользователя, она просматривает список блоков от начала, перемещаясь от одного MCB к следующему. Найдя свободный блок достаточного размера, система отмечает его как занятый соответствующим владельцем. При освобождении блока система записывает 0 в поле владельца MCB. Если с одной или с двух сторон от освобождаемого блока лежат свободные блоки, то два или три свободных блока сливаются в один.
Операционные системы MS-DOS, Windows 95, Windows 98 и старое железо компьютера — установка, настройка, использование.
Задача — установка MS-DOS 6.22 для игр.
Работа MS-DOS с памятью — тема не одной статьи. Мы обязательно коснёмся её подробнее. Сейчас попробуем использовать наши знания для настройки MS-DOS 6.22 для удобной работы с распространёнными приложениями и запуска игр.
Следует отметить, что произвести одну оптимальную, совместимую для всех программ, настройку DOS не получится по разным причинам. В добрые-старые времена программы писались с учётом особенностей операционок конкретных версий. Причём совместимость не всегда обеспечивалась. Отдельные особенности не получили развития и перестали использоваться более поздними версиями программ (EMS), другие получили развитие и стали использоваться ядром более новых операционных систем Windows (XMA).
При настройке работы MS-DOS памяти (а делается это при помощи файлов AUTOEXEC.BAT и CONFIG.SYS) мы будем учитывать следующие моменты.
- Область от 0 до 640 килобайт нам наиболее интересна! Это так называемая стандартная память ( CMA — основная оперативная память — Conventional Memory Area). В области стандартной памяти располагаются вектора прерываний, часть ядра операционной системы, резидентные программы, драйверы. В эту же область загружаются запущенные на выполнение программы. В результате оптимизации нам было бы желательно максимально расширить пространство, доступное программам, переместив ядро операционной системы, драйверы и резидентные программы в расширенную память.
- Expanded Memory (EMS) — дополнительная память практически не используется в программах времён MS-DOS 5.0 — MS-DOS 6.22. Запуск более древних программ мы вряд-ли будем рассматривать (если возникнет такая необходимость — мы знаем, что делать).
- Для увеличения быстроты загрузки и работы программ и игр можно использовать электронный диск ( RAMDRIVE.SYS) либо кэширование дисковой памяти (SMARTDRV.SYS). Однако более предпочтительным и удобным способом увеличения производительности дисковой подсистемы компьютера является кэширование. Кэширование увеличивает скорость работы с файлами, расположенными на всех дисках. Вам не надо заботиться о том, чтобы наиболее часто используемые файлы находились на электронном диске.
Ну что же, работа MS-DOS памяти рассмотрена! Читаем следующую статью цикла и вносим изменения в AUTOEXEC.BAT и CONFIG.SYS.
Работа MS-DOS с памятью.
Работа MS-DOS с памятью.
В статье очень кратко и несколько поверхностно освещена работа MS-DOS с памятью. Если вас не интересуют теоретические вопросы, можете переходить к четвёртой части цикла, где мы рассмотрим практическую настройку памяти DOS для игр и прикладных программ (файлы CONFIG.SYS, AUTOEXEC.BAT ).
Прежде, чем приступить к рассмотрению темы, предлагаем вам скачать архив файлов MS-DOS 6.22 OEM ver. 1.1.zip. Ссылку для скачивания можно найти на странице нашего сайта : Файлы для скачивания — полный перечень .
После установки с CD-ROM операционной системы MS-DOS 6.22 OEM ver. 1.1 , все файлы были скопированы в папку DOS, заархивированы и выложены для скачивания. Вам остаётся извлекать необходимые файлы и копировать на уже созданный диск с установленной в минимальном объёме MS-DOS 6.22, «нанизывая составляющие- кирпичики» на уже созданный каркас операционки. Таким образом мы избавимся от ненужных лишних файлов и досконально изучим особенности операционной системы.
Освобождаем основную память — задействуем XMS.
Для того, чтобы как-то задействовать память, расположенную выше границы 1024 килобайта (эту память называют расширенной — eXtended Memory Specification или XMS ), в новых версиях MS-DOS появились драйверы электронного диска RAMDRIVE.SYS и кэша дисковой памяти SMARTDRV.SYS. В результате работы RAMDRIVE.SYS часть оперативной памяти вашей машины (для компьютеров на базе Pentium — до 4096Мб) превращается в дополнительный жёсткий диск. Естественно скорость работы этого жёсткого диска невероятно высока! Смысл кеширования дисковой памяти практически пропадает. Минусом является невозможность сохранения данных на таком диске после перезагрузки.
В небольшой начальной части расширенной памяти (XMS) размером около 64 килобайт (Верхняя память — High Memory Area или HMA) могут располагаться модули, буфера и рабочие области самой операционной системы. Если в компьютере используется процессор 80386 или 80486, можно поместить в расширенную память резидентные программы и драйверы.
Не стоит путать расширенную память (extended memory или XMS) с дополнительной памятью (expanded memory или EMS). Дополнительная память располагается на отдельной плате, которая вставляется в слоты расширения материнской платы компьютера. Для работы дополнительной памяти в файле CONFIG.SYS должен быть установлен специальный драйвер, поставляющийся вместе с платой памяти. Дополнительная память (Expanded Memory) сейчас не применяется.
Если расположить в расширенной памяти MS-DOS, резидентные программы и драйверы, для программ останется порядка 600-620 килобайт драгоценной основной (Conventional Memory) памяти! Эта возможность появилась в MS-DOS 5.0 и естественно присутствует в более поздних версиях — MS-DOS 6.22, MS-DOS 7.10 .
MS-DOS 6.22 — установка для игр. Часть 3.
Структура памяти MS-DOS 6.22 .
В первом персональном компьютере IBM PC использовался процессор Intel 8086, способный непосредственно адресовать 1024 килобайта оперативной памяти. Из этого адресного пространства 640 килобайт памяти (CM — Conventional Memory) использовалось для операционной системы и программ. Оставшиеся 384 килобайта (UMA Apper Memory Area) использовались для BIOS, адаптера дисплея и другого оборудования.
Со временем компьютеры становились более мощными и требовали всё большего объёма оперативной памяти. Первоначально заложенного в архитектуру IBM PC объёма памяти программ (640 килобайт) стало недостаточно для решения сложных задач.
Процессор Intel 80286 мог адресовать уже до 16 мегабайт оперативной памяти. Появилась необходимость расширения доступного программам адресного пространства. Архитектура компьютера IBM AT даёт возможность использовать для программ все 16 мегабайт памяти.
Однако даже если ваш компьютер содержит 16 мегабайт оперативной памяти, операционная система MS-DOS может использовать для себя и программ только первые 640 килобайт. При этом самим программам достаётся обычно не более 500 — 550 килобайт основной оперативной памяти, остальная память используется MS-DOS для своих собственных нужд.
Это связано с тем, что MS-DOS использует так называемый реальный режим работы процессора 80286. В реальном режиме процессор 80286 становится несколько улучшенным аналогом старого процессора 8086, и может адресовать только первые 1024 килобайта памяти.
Читайте также: