Остальные методы требуют использования внешней памяти

Сейчас пару слов про внешнюю память (свопинг и виртуальную память)

 

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

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

 

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

 

Поэтому было предложено попеременно выгружать неактивные задачи (заблоченные, ожидающие ввода-вывода, готовые, но в очереди на исполнение) с оперативы на диск.

 

Такая подмена называется ВИРТУАЛИЗАЦИЕЙ – и она здорово помогает повысить уровень мультипрограммирования, т.к. теперь объем оперативы не так жестко ограничивает количество одновременно выполняемых задач.

 

Виртуальный ресурс – это такой ресурс, который для пользователя вроде как обладает определенными свойствами, но на самом деле их у него нет.

Работа такой виртуальной памяти будет значительно МЕДЛЕННЕЕ.

 

Что должна делать ОС для поддержки виртуальной памяти:

- размещать часть кодов исполняемых прог в памяти – часть – на диске.

- выбирать нужные образы процессов для перемещения их в/из оперативы;

- перемещать данные между памятью и диском

- преобразовывать виртуальные адреса в физические

- все это она должна делать сама, автоматически, чтобы у прикладного программиста не болела голова.

 

/* Первая попытка использовать внешнюю память – оверлеи.

Программист разбивал свою прогу на части, которые выполняли работу по очереди: один оверлей закончил – второй загрузился и начал работу.

То есть бедные программисты должны были все это учитывать, морока, в общем.*/

 

Существует 2 основных подхода к организации виртуализации памяти:

- свопинг

- виртуальная память

 

Свопинг

Свопинг – (swapping) – образы процессов выгружаются/загружаются ЦЕЛИКОМ.

Плюсы:

- простота реализации

Минусы:

- избыточность. Для активизации процесса и начала его работы вовсе не нужны ВСЕ коды и данные процесса. А для освобождения памяти под другой процесс вовсе не надо первый полностью выгружать на диск.

- замедляет работу системы

- неэффективно используется память

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

 

Поэтому свопинг в современных ОС практически не используется. Только кое-где в Юниксе он остался как дополнительный к виртуальной памяти механизм, применяющийся при перегрузках ОС.

 

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

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

 

Ключевая проблема виртуальной памяти – преобразование виртуальных адресов в физические. Оно осуществляется по разному, в зависимости от способа структуризации виртуальной памяти.

Существует 3 класса реализации виртуальной памяти:

- Страничная ВП – данные перемещаются страницами – частями фиксированного и небольшого размера

- Сегментная ВП – данные перемещаются сегментами – частями произвольного размера, организованными по смыслу.

- Сегментно-страничная ВП – ВАП делится на сегменты, сегменты – на страницы. Единица перемещения – страница.

 

Для временного хранения информации на диске ОС отводит специальную область – специальный файл, называемый файлом свопинга, файлом подкачки или страничным файлом. Чем он больше – тем больше приложений может ОС выполнять одновременно.

 

Но надо не забывать, что чем он больше, тем медленнее все пашет.

Размер файла подкачки в современных ОС настраивается администратором.