Виртуальная память. Страничная память

Виртуальная память. Страничная память

Xalion

Операционная система — посредник между пользователем и железом. Она выполняет команды пользователя и скрывает недостатки железа в компьютере. В этой статье разберём как ОС скрывает маленький объем оперативной памяти.

До 1961 года чтобы запустить большую программу приходилось делить её на маленькие кусочки — оверлеи. При запуске программы, несколько оверлеев загружалось в оперативную память, а остальные оставались на диске. Программисты контролировали их передачу с диска в оперативную память и обратно.

Например: программа делится на 8 оверлеев. Первые четыре загружаются в оперативную память, остальные остаются на диске. Если программе понадобится оверлей с жёсткого диска, она заменит им не нужный оверлей в оперативной памяти.

Виртуальное адресное пространство программы хранится на жёстком диске


В 1961 году ученые из Манчестера придумали механизм виртуальной памяти — расширение оперативной памяти с помощью памяти из диска.

В процессе участвуют две части памяти компьютера: адресное пространство и физические носители памяти.

Адресное пространство — количество адресов с которыми работает команда.
Например, команда с 4-битным полем адреса работает с 2^4 = 16 адресами.
Физическая память — реальная память компьютера: жесткий диск, оперативка.

Виртуальная память работает на одной из двух систем: страничной памяти или сегментации. Про сегментацию будет отдельная статья.


Для работы страничной памяти нужна таблица страниц — список пар реальных и виртуальных адресов всей памяти.

Для примера возьмём компьютер с 4 Кбайтами физической памяти и командами с 16-битным полем адреса.
Адресное пространство компьютера = 2^16 = 65 536.
Физическая память компьютера = 4 Кбайта или 4096 байт.

Запускаем программу размером больше 4 КБ.

Компьютер выставляет в таблице страниц соответствия виртуальной и физической памяти. В начале работы программы виртуальные адреса равны физическим — виртуальный адрес 4096 равен физическому адресу 4096.

Через 30 секунд работы программы, команда запрашивает операнд с адреса 5120. Включается виртуальная память.

  1. Данные из оперативной памяти загружаются на диск. ОС сбрасывает соответствия реальных и виртуальных адресов.
  2. Блок данных с 4096 по 8192 загружается в оперативную память с диска. Компьютер выставляет новые соответствия: физический адрес 4096 равен виртуальному адресу 8192.
  3. Команда получает операнд по адресу 5120 и программа продолжает работать.

Блоки данных загруженные с диска называются страницами.

Размер страницы 1024 байта.
Каждая страница хранит кусочек кода или данных программы

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


В следующей статье разберём механизм передачи страниц.

Report Page