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