Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по ОС мои.docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
2.82 Mб
Скачать
  1. Адресное пространство процесса Win32 в Windows nt(2000). Регионы в адресном пространстве. Передача физической памяти региону. Гранулярность выделения ресурсов.

В Windows NT, 95 каждому процессу предоставляется адресное пространство 4 Гб. Адресное пространство каждого процесса скрыто от других процессов. Каждый процесс получает доступ только к той памяти, которая принадлежит ему. Память других процессов скрыта.

1234567816 – А 1234567816 – В

И А, и В обращаются к ячейкам, которые находятся по различным физическим адресам. С помощью страничной организации одинаковые линейные адреса преобразуются в различные физические. Это достигается за счёт того, что у них разная таблица страниц и отображение страниц.

ОЗУ в виртуальном адресном пространстве выделяется разделами. Выделения разделов различны для различных разделов. Например, в Windows из 4 Гб: 2 Гб программе, а 2 Гб ОС. В Windows 2000 advanced server теоретически можно выделить до 3 Гб. С чем связано такое расположение? Это связано с тем, что Windows NT создавалась под различные платформы, например, в MIPS 4000 так надо. Для работы с ОЗУ.

kernel32.dll

Win32API

пользовательский

ядра

В кольце 0. ntoskrnl.exe - Win NT

vmm.vxd - Win 95, 98

Документированные функции в kernel32.dll. Разбиение адресного пространства на разделы в Windows NT, 2000.

FFFF:FFFF

8000:0000

4 ОС

7FFF:FFFF

7FFF:0000

3 Для выявления указателей с неправильным значением

7FFE:FFFF

0001:0000

2 Адресное пространство процесса

0000:FFFF

0000:0000

1 Для выявления указателей с неправильным значением

Разделы 1 и 3 предназначены для выявления указателей с неправильным значением. При выявлении неправильного значения ОС генерирует нарушение доступа. Эти разделы "охраняют" разделы 2 и 4.

Раздел 2 - это область размером 2 Гб-128 Кб. Это личное адресное пространство конкретного процесса, причем эта область доступна данному процессу. В этой же области находятся все системные библиотеки пользовательского режима kernel32.dll и user32.dll. Если какой-либо процесс искажает системную dll, то эта ошибка скажется только на этом процессе. Если посмотреть любое exe приложение под Windows NT, Windows 2000, то начальный адрес будет 0001:0000.

Раздел 4. В него загружаются ядро Windows nt и драйверы устройств. Этот раздел защищен и по чтению, и по записи. Регионы в адресном пространстве.

4 Гб адресное пространство выделяется процессу в момент создания и является практически свободным, незарезервированным. Для того, чтобы воспользоваться адресным пространством нужно выделить регион, обратившись к функции VirtualAlloc(...). Эта функция выделяет регион в адресном пространстве. Надо указать начальный адрес выделяемого региона и его размер. Для чего нужны регионы в адресном пространстве?

- чтобы разместить программный код

- чтобы разместить различные системные структуры

- чтобы разместить структуры данных загружаемого процесса и так далее.

При выделении регионов в ОС учитываются гранулярность выделения ресурсов, другими словами, начало региона должно быть выделено по определенной границе (64 Кб). При выделении региона размер региона всегда кратен размеру страницы. Иногда ОС сама резервирует некоторые регионы адресного пространства в интересах конкретного процесса. Например, для хранения блока окружения процесса.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]