Я имею лишь небольшое представление о том, что такое страница памяти.Я считаю, что это своего рода «кусок кода в памяти», который необходим для выполнения процедур и тому подобного, и, когда приложение работает, фрагменты кода засасываются в память как «страницы» и выбрасываются, поскольку они небольше не требуется.
В памяти существует материал (т. е. код и данные).
Каждая вещь, которая существует в памяти, имеет адрес (адрес памяти).
Адресное пространство памяти (например, 4 ГБ на 32-разрядной машине) делится на «страницы», где каждая страница представляет собой непрерывный фрагмент памяти (например, 4 КБ на страницу).
Адресное пространство отображается (с помощьюCPU и O / S) в RAM (или, возможно, сопоставлены с портами ввода / вывода, но это другая история).
Может быть установлено меньше RAM (например, 1 ГБ), чем есть адресное пространство (например, 4 ГБ), поэтому некоторые вещи (например, наименее использованные) могут быть выгружены (с помощью O / S) из ОЗУ в файл подкачки на диске.Целые, целочисленные страницы (например, блоки по 4 КБ) - это то, что поменяется местами (не отдельные байты).
Когда приложение пытается получить доступ к адресу, который в данный момент не сопоставлен с ОЗУ, это так называемая ошибка страницы.Для обработки ошибки страницы O / S может:
- Освободить часть ОЗУ, переместив что-то (например, наименее недавно использованное) из ОЗУ на диск
- Отобразить эту новуюосвободил доступную в настоящее время оперативную память по адресу, к которому приложение пытается получить доступ
- Поменять в оперативную память с диска все, что должно быть по этому адресу (который в прошлом был заменен с этогоадрес на диск)
- Возобновить приложение, с которого оно было остановлено: приложение снова пытается получить доступ к этому адресу памяти, только на этот раз без ошибки другой страницы.