Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsii_OS_chast_2.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.55 Mб
Скачать

Структура линейного виртуального адресного пространства процесса в ос Windows.

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

Полный размер линейного ВАП определяется особенностью архитектуры процессора и может составлять 4Гб либо 8Гб. Каждому процессу отводится закрытое адресное пространство, то есть потоки одного процесса не могут обратиться к структурам данных и программам другого процесса. Для случая 32х разрядных программ всё линейное ВАП процесса разбивается на несколько частей, называемых разделами. Их количество, размер и назначение зависит от версии Windows, точнее от особенностей структуры её ядра. Для большинства версий Windows начиная с Window2000 структура разделов следующая:

Название раздела

Диапазон адресов

1

Выявление нулевых указателей

0x00000000:0x00000FFF

2

Программ 16 разрядных (MS-DOS)

Не используется, потому что 16х программы выполняются в этой системе в собственном адресном пространстве

3

Пользовательские программы и данные используемы в ЗР

0x00400000:0x7FFFFFFF

4

Совместно используемые файлы, проецируемые в память

0x80000000:0xBFFFFFFF

5

Для программ и данных режима ядра

0xC0000000:0xFFFFFFFF

1 раздел резервируется для того, чтобы обеспечить возможность в программах выявлять первые нулевые указатели при обработке ошибок. Если канал либо функция распределения памяти (malloc) вернёт указатель NULL и в соответствующей программе не будет предусмотрена обработка подобной ситуации, то возникнет нарушения доступа к памяти и аварийное завершение процесса. Для обработки подобных ситуаций резервируется первый раздел.

В раздел 3 загружаются все выполненные .exe и .dll модули программ.

Раздел 4 используется для хранения совместно используемых всеми процессами данных. Сюда же загружаются все системные .Dll модули, поэтому же доступны любому пользовательскому процессу.

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

Регионы ЛВАП и ФП.

ЛВАП, выделяемое процессу в момент его создания, является свободным. Для обращения к любой его части в нём с помощью системной функции VirtualAlloc(…) выделяется определённые участки называемые регионами памяти. Операция выделения региона называется резервированием памяти. При резервировании памяти система выравнивает начало региона с учётом свойства гранулярности (структурированности памяти). Стандартное значение единицы гранулярности – 64Кб. При резервировании обеспечивается кратность размера региона размеру страницы памяти (4-8Кб). В момент создания процесса система резервирует региона адресного пространства для хранения служебной информации, в частности для блока определённого процесса.

Кроме того, для управления потоками, существующими в процессе в данный момент, выделяются регионы для блоков переменных окружения потоков. Регионы под указанные блоки резервируются и освобождаются по мере завершения ранее запущенных потоков и создания новых потоков в процессе, либо завершения и создания новых процессов. Размеры этих регионов в общем случае не кратные 64Кб, но кратны размеру страницы. После использования региона он возвращается в ресурсы памяти – освобождение региона происходит с помощью функции VirtualFree(…).

Чтобы зарезервированный регион или ВАП можно было бы использовать для выполнения поточных программ в процессоре, региона средствами управления памяти должна быть выделена ФП, эта ФП должны быть спроецирована на регион ВАП% передача ФП.

При передаче ФП региону она может быть выделена не целиком, а в виду нескольких страниц, которые могут чередоваться со свободными страницами. Для любых регионов ФП выделяется прежде всего из страничного файла на жёстком диске. Реальный объём ОП имеет второстепенное значение. Размер страничного файла является основным фактором, определяющим общее количество памяти, которое доступно выполняющимся программам. В целом процедура доступа к элементу информации в ФП по адресу, формируемому из линейного ВАП может быть представлена:

Рисунок.

При выполнении поток в процессе осуществляется обращение к памяти. Для этого вырабатывается ВА в процессоре. Если соответствующий элемент информации, к которому обращается процесс уже находится в ОП, то процессор сразу же выполняет отображение ВА в ФА и осуществляет обращение по ФА. После чего элемент информации соответственно доступен для программы потока.

Если элемент информации не обнаруживается в ОП, то проверяется его наличие в страничном файле. Если элемент информации отсутствует и в страничном файле, то в системе генерируется прерывание по нарушению доступа к памяти. Осуществляется обработка этого прерывания , в результате которой выполняется процесс ??? и диспетчер ОС предоставляет процессор одному из готовы к выполнению процессов. Если же элемент данных присутствует в страничном файле, то система начинает поиска свободной страницы в ОП для размещения в ней требуемых данных.

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

Если замещаемая страница не была модифицирована, то она просто освобождается, в противном случае она сначала копируется из ОП в страничный файл. После этого система переходит к страничному файлу, отсчитывает в нём запрашиваемый элемент информации, загружает на свободную страницу ОП и отображает ВА - > ФА.

Чем чаще система копирует строку из Оп в страничный файл или наоборот переписывает страницы из этого файла в ОП, тем больше нагрузка на устройство внешней памяти; и тем медленнее работает подсистема управления памятью. В крайнем случае, может оказаться, что система будет расходовать большую часть времени на страничный обмен вместо выполнения полезной вычислительной работы. Это явление – пробуксовка системы.

Если увеличить объём опер.?? ФП можно снизить частоту обращения к ВП и тем самым увеличить производительность системы. Этот способ повышения производительности считается более эффективным, чем простая замена процессора ЭВМ на более быстродействующий.

При выполнении процедуры загрузки и подготовки к запуску программ в работе системы управления памятью имеются особенности. Не происходит простого копирования программ и данных из файла ВМ непосредственно в ФП, которая выделяется после преобразования ВА в А. В действительности при запуске программы система открывает используемый файл на жёстком диске и определяет объём программного кода и данных, затем резервирует регион линейного ВАП и устанавливается, что ФП?? связана с этим регион является сам .exe файл. Означает, что вместо использования пространства ВП из страничного файла система использует содержимое .exe файла программы. Программа загружается быстрее, а размер страничного файла может быть уменьшен.

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