Суть страничной страничной организации в том что адресное пространство разбиваеться на отрезки одинаковой длины(обема), что назваються страницами, так как страниц много то для хранении информации для них нужно создавать тпблицы. Таблица страниц устанавливает соотвествие между виртуальным адресным и реальныи адресом страницы, в такой страницы номер строки определяет виртуальный адрес, содержание это строки в таблый указывает физический адрес. Имено страницы являються единицой выделения и освобождения памяти, страничный механиз также используется разными процессами для доступак общам данным и программам. Динамический библиотека хранится в одно экзепляре а в разных процессам им соответствуют различный виртуальные адреса, обеспечивается разным таблиц страниц. Вся память разделяется на одинаковый размеры. Оперативная память выделяется и освобождается по одной страницы и по этому исключается фрагментация памяти . Используеться одно-двух-трех уровня адресации страниц
Одноуровневая странница адресация. Вся память разбита на страницы и информация собираеться в таблицу страниц в ней щаписываються визический адреса последовательных логических страниц
!
!
!
--
Такой способ одно уровней адресации только для больших страниц 4мб используется только Ос, пользовательские приложения в такой в режиме не работают
Двухуровнивая адрессация. Для каждого приложения используется каталог страниц(Page Directory) и таблица страниц. В каталоге задаются адреса таблиц страниц. Весь адрес разделяется на 3 составляющие
А2 А1 А0
10 10 12
А0 определяет смещения внутри страницы
А1 определяет номер строки в таблице строки(не более 1024 строк). Каждая такая строка должна содержать адрес начало страницы. Размер страниц также составляет 4кб, то есть одной странице.
В резульате такая таблица может задавать пространство 1024 страницы или 4мб. Если для како-го приложения известное памяти, можно определить количесвто страниц.
А2 определяет номер строки в каталоге страниц,(не болие 1024 ) размер тоже 4кб. В памяти обезательно должен присуствовать каталог, причем ардес его управляещго храниться в регистре CR2.При объедение А0 и А2 можно получить значения смещения внутри страницы, но большего размера.
Трехуровневая страничная адресация. Адрес разделяется на 4 компонента
А3
А2
А1
А0
Размер самой таблицы остается по 4кб но размер строки увеличивается в 2 раза.
А3 определяет одной из 4 таблицы каталога. При 3уровней страничной адрессаци можно использовать большие страницы 2 мб обеднив А1 А0 . наличия или отсутствие конкретной памяти отслеживает сам процесс с помощью механизма прерывания. Памятть для кодов программа, данных выделяться по страничной адрес начала страницы кратен его длине, если какой-то участок данных находиться в конце страницы создаеться новая страниц. При разработке критичных по памяти, нужно знать размер страницы и выравнивать, адрес начала страницы в том числе страницы и каталога всегда кратны размеру страницы, и по этму в любой из расмотреном варианте младший 12 бит адреса страницы свободны. В таблице используют для хранения дополнительной информации о страницы. Дополнительная информация о странице позволяет задать: признак тирпа страницы для записи или чтения, признак присутствия страницы в памяти, уровень привилегий страницы, признак были изменения в данной страницы(необходимо для анализа целостобрастности в случае ее сброса записать на диск, устанавливаеться просором при доступае тсрнице в режиме записи а сбрасывается программным анализом) признак, имел ли место доступ к данной страницы, режимы использования кеша. При использовании больших таблиц и страниц, в строке каталога указываеться что он соответствует на таблице а большой таблице. На паратном уровне процессор позволяет коретно использовать страницы трьох размеров, задавать режими доступа и уровень привелегий. Если страница осуствует в памяти процесор генерирует исключения которое обрабатывает ОС.
Действия обработчика исключений:
1) Найти свободную страницу или осводить занятую если свободных нет
2) Загрузить страницу в память
3) Записать адрес в Page Table при необходимости выполнить необходимости …
4) Обновить страницы кэш-страниц
5) Возвратиться к команде обращения памяти которая вызвала обрабатываемо исключения.
При использования регулярно надо решать такие вопрсы:
1) Определять какие именно нужно удалить из памяти
2) определить какие страницы загружены
3) определить методы загрузки выгрузки страницы
Страницы удаляться из памяти если для них не хватает объёма реальной памяти. Страницы занятые ядром ОС не выгружаются. Для решения вопрос по выгрузке страницы используеться такие подходы:
1) Оптимальный алгоритм – для выгрузки страницы выбирается страницы в которой не было не одного обращения. Недосток 6 необходими хнать историю работы с каждой таблицы.
2) Алгоритм с предварительным анализом, анализируется страницы, которые должны вызываться в очередных командах активных процессов. Страницы которые должны использоваться далее из памяти не выгружаются. Недостатки: нужен анализ процесов для определения необходимых им страниц.
3) Случайный – выгружаемая таблица определяется случайно, при этом информация для использования их или далие, но не исключено что информация может далие использоваться
4) Хронологический – выгружаются из памяти именно в том порядке в котором они были загружены. Недостакти: таблица может понадобиться.
5) Хронологический порядок с учетом использования(List R..Using)1 – выгражеться страница которая не использовалась большое времяю для определния таких страниц формируеться не очередь а список использованых таблиц. Использована записываеться в конец такого сиска, для выгрузки выбераються страницы первые в этом списке. Недостаток: может выгружена страница необходимая на следушим шаге выполнения. Он найболие часто используется в современных ОС.
Рабочим множеством страниц – называется такое множество странц которое используеться программой, Служит для оценки разных стратегий управлении страниц и оценки эффективности планирования использования памяти. Любая программа может выполненная когда ее страничное множество находиться в памяти. Различают глобальный и локальный методы управлении страницы.
Локальный мето допускает что для каждого процесса выделяються в соотвестви их рабочим множеством, алгоритм управлении страницами применяетьсядля каждой программы в пределах ее рабочего множества
Глобальный метод – владеет все множеством выделяемой при необходимости независимо от приложения для которго эти страницы выделены(для всех приложений используеться централизованный механизм управлении ). В таком случае ее нужно храниться к камоу приложению она принадлежит.
Пробуксовка – это ситуация вознакиющая при большой загрузки системы, то есть имеется большое количество процессов и недостаток физической памяти, приводит к существенной сокращению производимости. Способы борьбы с пробуксовкой:
1) Увеличения объема физической памяти
2) Ограничения количества активных процессов
3) Сокращения необходимого объёма памяти выделяемого для процесса
4) Специальный алгоритмы выделения страниц .
Механизмы управление памяти
Для работы с памяти используется 3 основных механизмов
1. Виртуальная память для работы с большими объемами
2. Отображения файлов на памяти(нужна быстра обработка или произвольна я обработки а также создния памяти разделяемой между процессами )
3. «Кучи» - механизм выделения небольших объемов памяти для приложения
Использования виртуальной памяти – для выделения регоина памяти(большого объема памяти) служит функция
LPVOID VirtualAlloc(
LPVOID lpAdress,//начальный адрес выделяемого участка(выравнивается на границу 64кб, если памяти выравнивается то адрес должен выровнены на начало страницу, при первом выделения памяти имеет значени NULL)
DWORD lpSize,//размер выделяемого памяти в кб (регион), если первый параметр NULLто ббудет увеличин до границы страницы
DWORD flAllcocationType,//тип операции выделения(либо одиночный или комбинаций флагов) таблица бондаренко 6,1атрибуты ехе не поддерживается
WORD lpProtect
);
Возвращаеморй значения : если норм выполенено то адрес памяти, если ошибки то поустое значения. С физическою памяти используется так: сначала выделяеться большой регион, а потом его блок свызываеться.. Связь с физической памяти производиться для небольшого участка где для которого необходими. При этос страницы можеет находиться в состояниии: в свободном(страница не зарезервинова и не связана), заразервинованим или связаным. Если страница нахоиться в свобоном состояниии то та функция может связать, Если страница зарезервиновано, то это означаеть что этав страница не может использоваться другими функция и еще не имеет физического адресса. Зарезервированной страницы функция может связать, но заново зарезирвировать не может. Зарезервированных страниц освободить может функция vrtualfree. Если траница находиться в связанном состоянии, то
Сиситаема инициализировать и разервирует ,при попытке доступа к таклой памяти, после завершения процеса ОС освобождает все закрепленые за ним страницы. Функция VirtualAllocможет заново связать. Физическую памяти связаную с конткретнвми страницами можно освободить с помощью функции vitualFree. Для долговреной ного хранения памяти лучше выделать в страницах адресах. В этом случае в адресе передаться NULL и устанавливается флаги MEM_RESERVE, MEM_TOP_DOWN/ для резервирования под регион рекомендубъю задавать атрибут защиты наиболее общий. Выделяя виртуальной память можно задавать все атрибуты защиты кроме тех которые предназначены связаны с физической памяти : PAGE_WRITECOPY, PAGE_EXECUTE_WRITECOPY, PAGE_GUARD, PAGE_NOCAСHE.
…
Можно выделить не весь участка физической памяти только часть. Если размер выделяемой памяти совппадет с размеор связаной памяти то можно не 2 раза вызывать функцию а задавать флаги MEM_COMMIT|MEM_RESERVE. ДЛЯ возвращения физической памяти используеться фугкци мшкгфдаккус параметром адрес начала памяти, размер участка и MEM_DECOMMIT, если размер указать размер 0 то освобождается вся память, если в памяти происходить обращния то происходить ошибка. Для освобождения траниц существует 3 варианта
1. Предполагает что одной записи соответствует одной страницы, удаления такой записи освобождает страницу
2. Создаться битовая карта занятых записи
3. В структуре можно добавить поле занятости в котором будет принимать истина или ложь
Программа с низким приоритетом может делать сбор мусора и освобождать памят для не занятых записи, при необходимости атрибуты защиты могу изменены с помощью функции
BOOL virtualProtect(
LPVOID lpAdress,//
DWORD dwSize,//
DWORD flNewProtect,//новый атрибут защиты
DWORD lpflOldProtect//
)
Как правило вытеснения страниц вытесняется та которая долго не использовалась. Для блакирования траниц ыиспользуеться функция
BOOL ViruaLock
(
LPVOID lpAdress,//
DWORD dwSize,//
)
По умолчания процесс может заблокировать максимум 30 страниц, если надо больше то используется промежуточный действия. На разблокирования используется функция ViruaUnLockю. При заверения процесса заблокированные страницы автоматическо разсблокируются.
Бондаренко кучи(создании определения выделенной , полученияинобедения свобоныз блоков)