Программное обеспечение

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

Интерфейс виртуальной памяти
До сих пор во всем нашем повествовании предполагалось, что виртуальная память вполне обозрима процессами и программистами, то есть все, что они видят, — это большое виртуальное адресное пространство на компьютере с малой (или меньшей) по объему физической памятью. Это верно по отношению ко многим системам, но в некоторых системах программистам доступен контроль над отображением памяти и они могут воспользоваться им нетрадиционными способами, чтобы обогатить поведение программы. В этом разделе мы вкратце рассмотрим некоторые из этих возможностей.

Одним из поводов предоставления программистам контроля над отображением памяти является разрешение одному или нескольким процессам совместно использовать одну и ту же память. Кулинарные рецепты

Участие операционной системы в процессе подкачки страниц
Операционная система занята работой, связанной с подкачкой страниц, в течение четырех периодов времени: во время создания процесса, во время выполнения процесса, при возникновении ошибки отсутствия страницы и при завершении процесса. Кратко рассмотрим каждый из этих периодов времени, чтобы посмотреть, что должно быть сделано.

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

Обработка ошибки отсутствия страницы
Наконец-то мы добрались до подробного описания всего, что происходит при возникновении ошибки отсутствия страницы. Складывается следующая последовательность событий:

1. Аппаратное прерывание передает управление ядру, сохраняя в стеке значение счетчика команд. На большинстве машин в специальных регистрах центрального процессора сохраняется информация о состоянии текущей команды.

2. Запускается код стандартной программы на ассемблере, предназначенный для сохранения регистров общего назначения и другой изменяющейся информации, чтобы защитить ее от разрушения со стороны операционной системы. Эта стандартная программа вызывает операционную систему как процедуру. Скачать книги PDF.

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