Распределение памяти в MS-DOS и Windows 95/98/NT
MS-DOS
Вся память может быть разбита на 3 части:
  1. Таблица векторов прерываний (1 Кб) + 512 Кб для размещения глобальных переменных BIOS;
  2. ОС;
  3. Пользовательские программы.
Распределение памяти в MS-DOS
i8086 и 8088 могли адресовать 1 Мб памяти, c i80286 адресовалось до 16 Мб памяти (после добавления в BIOS HMA – High Memory Area), MS-DOS использует HMA ограничено – туда можно загрузить драйвер, часть самой ОС и буферы для ОС. MS-DOS 6.2.2 была уже достаточно большой (большинство модулей загружались в HMA).
Windows 95/98
Распределение памяти в Windows 95/98
Для загрузки используется MS-DOS 7.0. В обычном режиме после загрузки процессор переключается в защищённый режим и начинает распределять память с помощью страничного механизма. Загружается GUI (Graphic User Interface - графический пользовательский интерфейс). Если GUI не загружать, то запустится MS-DOS. В защищённом режиме используется плоская модель памяти, при который все сегменты совпадают друг с другом и имеют максимально возможный размер. Любая прикладная программа оперирует с 32-разрядными адресами. Сегмент кода совпадает с сегментом данных. Виртуальное адресное пространство делится на страницы по 4 Кб. В младших адресах виртуального адресного пространства находятся драйвера реального режима, там находятся резидентные программы. В Win 95 программа выполняется в своём адресном пространстве, но все приложения используют один и тот же 32-разрядный системный код, который расположен между 2 и 4 Гб.
Можно выполнять системные вызовы в адресном пространстве программы, что заметно повышает быстродействие, но при этом возможен доступ к этой области и повреждение системных модулей, так как не полностью используются аппаратные средства защиты процессора. В Win 95 аппаратно защищены только модули ядра, виртуальные драйвера, драйвера ФС и некоторые другие компоненты, расположенные между 3-м и 4-м Гб. В области между 2-м и 3-м Гб запускаются приложения Win16, они совместно выполняются в едином адресном пространстве, поэтому их работа так же ненадёжна, как и в Win 32.
Windows NT
Распределение памяти в Windows NT
Win NT намного устойчивее, так как использует аппаратные средства защиты памяти, в отличие от Win 9x.
Последний модуль (ядро, драйверы и т.п.) – отвечает за работу ФС, его код не виден для прикладных программ. Приложения Win 16 работают в сеансе windows on windows, каждое из приложений выполняется в собственном адресном пространстве, так есть возможность выполнения программ в одном адресном пространстве.
В Win NT существует виртуальная DOS-машина (VDM), используется для запуска программ, предназначенных для MS-DOS. В Win 95 возможен переход в однозадачный режим (MS-DOS), для этого потребуется перезагрузка системы. Возможен запуск нескольких сеансов VDM. Распределением памяти в NT занимается диспетчер виртуальной памяти (VMM), он старается уменьшить число обращений к HDD: поддерживается страничная организация памяти; обеспечивает замещение загрузочных страниц (обработка события «нет свободных страниц»). Когда процесс использует код или данные, находящиеся в ОП, диспетчер памяти резервирует место в файле подкачки, для того, что легко можно было выгрузить данные из памяти в этот файл. Рекомендация – размер файла подкачки (swap) = размер ОП + 12 Мб. В Win NT объекты хранятся в «пулах» памяти (memory pools). Существуют 2 вида:
  1. Перемещаемый пул. Можно выгрузить в swap-файл;
  2. Неперемещаемый пул. В нём содержатся структуры данных, используемые для обработки прерываний; системные структуры, используемые для работы в многопроцессорных конфигурациях (для предотвращения конфликтов).
Вся виртуальная память в NT делится на 3 класса:
  1. Зарезервированная память. Набор адресов, которые VMM выделяет для процесса, но не учитывает их в квоте памяти процессов до тех пор, пока они не будут использованы реально занятым процессом. Если процессу необходима дополнительная память, то в случае наличия доступной памяти процессу выделяется больший её объём.
  2. Выделенная память. Объём выделенной памяти процесса характеризуется фактически занятым процессом объёмом. Для выделения памяти резервируется место в swap-файл и ограничивается его размером.
  3. Доступная память. Остальная часть памяти.


Ctrl  Предыдущая  •  Следующая  Ctrl
Сайт управляется системой uCoz