Сейчас пару слов про внешнюю память (свопинг и виртуальную память)
Программа для ее выполнения должна находиться в оперативной памяти.
А процессору для адекватной загрузки нужно довольно большое количество задач, особенно если задачи не вычислительного характера, а больше связаны с ожиданием ввода-вывода.
Итак, нам надо много задач для загрузки процессора, но в оперативную память столько не влезет.
Поэтому было предложено попеременно выгружать неактивные задачи (заблоченные, ожидающие ввода-вывода, готовые, но в очереди на исполнение) с оперативы на диск.
Такая подмена называется ВИРТУАЛИЗАЦИЕЙ – и она здорово помогает повысить уровень мультипрограммирования, т.к. теперь объем оперативы не так жестко ограничивает количество одновременно выполняемых задач.
Виртуальный ресурс – это такой ресурс, который для пользователя вроде как обладает определенными свойствами, но на самом деле их у него нет.
Работа такой виртуальной памяти будет значительно МЕДЛЕННЕЕ.
Что должна делать ОС для поддержки виртуальной памяти:
- размещать часть кодов исполняемых прог в памяти – часть – на диске.
- выбирать нужные образы процессов для перемещения их в/из оперативы;
- перемещать данные между памятью и диском
- преобразовывать виртуальные адреса в физические
- все это она должна делать сама, автоматически, чтобы у прикладного программиста не болела голова.
/* Первая попытка использовать внешнюю память – оверлеи.
Программист разбивал свою прогу на части, которые выполняли работу по очереди: один оверлей закончил – второй загрузился и начал работу.
То есть бедные программисты должны были все это учитывать, морока, в общем.*/
Существует 2 основных подхода к организации виртуализации памяти:
- свопинг
- виртуальная память
Свопинг
Свопинг – (swapping) – образы процессов выгружаются/загружаются ЦЕЛИКОМ.
Плюсы:
- простота реализации
Минусы:
- избыточность. Для активизации процесса и начала его работы вовсе не нужны ВСЕ коды и данные процесса. А для освобождения памяти под другой процесс вовсе не надо первый полностью выгружать на диск.
- замедляет работу системы
- неэффективно используется память
- невозможно исполнять процессы, виртуальное адресное пространство которых больше имеющейся оперативы.
Поэтому свопинг в современных ОС практически не используется. Только кое-где в Юниксе он остался как дополнительный к виртуальной памяти механизм, применяющийся при перегрузках ОС.
Виртуальная память
Виртуальная память (virtual memory) - более совершенный механизм, на диск выгружаются только части процессов.
Ключевая проблема виртуальной памяти – преобразование виртуальных адресов в физические. Оно осуществляется по разному, в зависимости от способа структуризации виртуальной памяти.
Существует 3 класса реализации виртуальной памяти:
- Страничная ВП – данные перемещаются страницами – частями фиксированного и небольшого размера
- Сегментная ВП – данные перемещаются сегментами – частями произвольного размера, организованными по смыслу.
- Сегментно-страничная ВП – ВАП делится на сегменты, сегменты – на страницы. Единица перемещения – страница.
Для временного хранения информации на диске ОС отводит специальную область – специальный файл, называемый файлом свопинга, файлом подкачки или страничным файлом. Чем он больше – тем больше приложений может ОС выполнять одновременно.
Но надо не забывать, что чем он больше, тем медленнее все пашет.
Размер файла подкачки в современных ОС настраивается администратором.