Введение
Метод управления виртуальной памятью
В компьютерных операционных системах страничная подкачка по требованию (в отличие от предварительной страничной подкачки) является методом управления виртуальной памятью. В системе, использующей страничную подкачку по требованию, операционная система копирует страницу с диска в физическую память только при попытке доступа к ней, если этой страницы еще нет в памяти (то есть, при возникновении ошибки страницы). Следовательно, процесс начинает выполнение без каких-либо страниц в физической памяти и вызывает множество ошибок страниц, пока большая часть его рабочего набора страниц не будет присутствовать в физической памяти. Это пример техники ленивой загрузки.
Основная концепция
Страничная организация по требованию подгружает страницы в память только тогда, когда они необходимы выполняющемуся процессу. Это часто называют "ленивой загрузкой", так как из вторичной памяти в основную переносятся только те страницы, которые запрошены процессом. Это отличается от прямой подкачки, когда вся память, выделенная процессу, переносится из вторичной памяти в основную при запуске или возобновлении выполнения процесса. Как правило, для реализации этого механизма используется блок управления памятью. Блок управления памятью отображает логическую память в физическую. Записи в блоке управления памятью содержат бит, указывающий, является ли страница действительной или недействительной. Действительная страница – это страница, которая в данный момент находится в основной памяти. Недействительная страница – это страница, которая в данный момент находится во вторичной памяти. Когда процесс пытается обратиться к странице, обычно выполняются следующие действия:
Предпринимается попытка доступа к странице. Если страница действительна (находится в памяти), обработка инструкции продолжается как обычно. Если страница недействительна, возникает исключение "ошибка страницы". Проверяется, является ли обращение к памяти допустимым обращением к местоположению во вторичной памяти. Если нет, процесс завершается (недопустимый доступ к памяти). В противном случае необходимо подгрузить требуемую страницу. Планируется операция диска для чтения необходимой страницы в основную память. Перезапускается инструкция, прерванная исключением операционной системы.
Attempt to access page. If page is valid (in memory) then continue processing instruction as normal. If page is invalid then a page fault trap occurs. Check if the memory reference is a valid reference to a location on secondary memory. If not, the process is terminated (illegal memory access). Otherwise, we have to page in the required page. Schedule disk operation to read the desired page into main memory. Restart the instruction that was interrupted by the operating system trap.
Недостатки
Отдельные программы испытывают дополнительную задержку при первом обращении к странице. Встраиваемые системы с низкой стоимостью и энергопотреблением могут не иметь блока управления памятью, поддерживающего подкачку страниц. Управление памятью с алгоритмами подкачки страниц становится несколько сложнее. Возможны риски для безопасности, включая уязвимость к атакам по времени; см. (в частности, атаку на виртуальную память в разделе 2). Также возможно возникновение трешинга из-за повторяющихся отказов страниц.