Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы и ответы по ОС.doc
Скачиваний:
37
Добавлен:
27.08.2019
Размер:
3.35 Mб
Скачать

28 Вопрос. Виртуальная память

Виртуальная память (wikipedia) – схема адресации памяти компьютера, при которой память представляется программному обеспечению непрерывной и однородной, в то время как в реальности для фактического хранения данных используются отдельные (разрывные) области различных видов памяти, включая кратковременную (оперативную) и долговременную (жёсткие диски, твёрдотельные накопители).

Виртуальная память (из лекций) – память, адресация которой не совпадает с физической (с реальными адресами).

НЕВЕРНО говорить: «Память, которой на самом деле нет».

Основная идея виртуальной памяти заключается в том, что объединенный размер программы, данных и стека может превысить количество доступной физической памяти. Операционная система хранит части программы, использующиеся в настоящий момент, в оперативной памяти, остальные – на диске. Например, программа размером 16 Мбайт сможет работать на машине с 4 Мбайт памяти, если тщательно продумать, какие 4 Мбайт должны храниться в памяти в каждый момент времени. При этом части программы, находящиеся на диске и в памяти, будут меняться местами по мере необходимости.

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

Задачи, решаемые виртуальной памятью:

  1. Поддержка одновременного расположения нескольких программ в памяти;

  2. Рациональное управление оперативной памятью компьютера (хранить в ней только активно используемые области памяти);

  3. Изолирование процессов друг от друга (процесс полагает, что монопольно владеет всей памятью);

Вопросы из лекций:

  1. «Может ли процесс попросить увеличить адресное пространство»? – нет.

  2. «Может ли процесс попросить еще ВП»? – нет.

  3. ВП != Своп.

  4. «Процесс попросил 100б, потом еще 100б. Сколько было выделено?» Если данные не вылезли за границы одной страницы, то вообще не было выделено.

  5. Память запрашивается у некоторого аллокатора, если он видит что не хватает памяти, он запрашивает еще одну страницу.

  6. Если память была программной освобождена, это не значит, что страницы вернули ОС?

29 Вопрос. Страничная организация виртуальной памяти

Оперативная память делится на страницы: области памяти фиксированной длины (например, 4096 байт), которые являются минимальной единицей выделяемой памяти (то есть даже запрос на 1 байт от приложения приведёт к выделению ему страницы памяти). Процесс обращается к памяти с помощью адреса виртуальной памяти, который содержит в себе номер страницы и смещение внутри страницы. Операционная система преобразует виртуальный адрес в физический, при необходимости подгружая страницу с жёсткого диска в оперативную память. При запросе на выделение памяти операционная система может «сбросить» на жёсткий диск страницы, к которым давно не было обращений. Критические данные (например, код запущенных и работающих программ, код и память ядра системы) обычно находятся в оперативной памяти.

Управление страничным разбиением памяти обычно возлагается на специальную микросхему MMU (Memory Managment Unit - устройство управления памятью). В микропроцессоре i80486 и выше это устройство встроено в процессор.

Достоинства

  1. достаточно большой объём прямо адресуемой памяти. Действительно объем памяти может исчисляться сотнями мегабайт (и даже гигабайтами). Размер виртуальной памяти целиком зависит от объёма накопителя на жестком магнитном диске;

  2. программы пользователя могут размещаться в любых свободных страницах;

  3. повышение уровня мультипрограммной работы;

Недостатки

  1. затраты времени на загрузку страницы из памяти;