Пейджинг памяти


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

Для простоты основная память называется «ОЗУ» (аббревиатура от оперативной памяти ), а вторичное хранилище называется «диск» (сокращение от жесткого диска , барабанной памяти или твердотельного накопителя и т. д.), но, как и в случае с многие аспекты вычислений, концепции не зависят от используемой технологии.

Ферранти ввел пейджинг в Atlas , но первые массовые страницы памяти были понятиями компьютерной архитектуры, независимо от того, перемещалась ли страница между ОЗУ и диском. [1] [2] Например, на PDP-8 7 битов команды составляли адрес памяти, который выбирал одно из 128 (2 7 ) слов. Эта зона памяти называлась страницей . Такое использование термина сейчас встречается редко. В 1960-х подкачка была одной из первых технологий виртуальной памяти. Вся программа будет «выгружена» (или «развернута») из ОЗУ на диск, а другая будет заменена (или свернута ). [3] [4]Выгруженная программа будет текущей, но ее выполнение будет приостановлено, пока ее ОЗУ используется другой программой.

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

Изобретение таблицы страниц позволило процессору работать с произвольными страницами в любом месте ОЗУ как с непрерывным логическим адресным пространством. Эти страницы стали единицами обмена между диском и оперативной памятью.

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