- •Занятие 1. Понятие операционной системы, ее назначения и функции
- •Занятие 2. Эволюция операционных систем
- •Занятие 3. Различные операционные системы
- •Занятие 4. Базовые понятия архитектуры операционных систем
- •Занятие 5. Особенности архитектуры Unix и Linux
- •Занятие 6. Введение в процессы, потоки и задания операционной системы.
- •Занятие 7. Управление процессами в Unix и Linux
- •Занятие 8. Планирование потоков и процессов в операционных системах
- •Занятие 9. Стратегия и алгоритмы планирования потоков и процессов
- •Занятие 10. Различные алгоритмы планирования
- •Занятие 11. Взаимодействие потоков
- •Занятие 12. Базовые механизмы синхронизации потоков
- •Занятие 13. Концепция монитора и взаимодействие потоков в Linux и Windows
- •Занятие 14. Работа с виртуальной памятью
- •Занятие 15. Реализация управления основной памятью в Linux и Windows
- •Занятие 16. Динамический участок памяти процесса и сборщик мусора
- •Занятие 17. Реализация динамического управления памятью в Linux и Windows
- •Занятие 18. Файлы, файловые системы, работа с файлами и каталогами
- •Занятие 19. Операции над файлами и каталогами. Строение жесткого диска
- •Занятие 20. Размещение информации в файловых системах
- •Занятие 21. Файловые системы ext и fat
Занятие 14. Работа с виртуальной памятью
План занятия:
Виртуальная память
Проблемы реализации виртуальной памяти. Фрагментация памяти
Логическая и физическая адресация памяти
Под памятью следует понимать ресурс компьютера, предназначенный для хранения программного кода и данных. Память изображают как массив машинных слов или байтов с их адресами. В Фон-Неймановской архитектуре компьютерных систем, процессор выбирает инструкции и данные из памяти и может хранить в ней результаты выполнения операций.
Различные виды памяти организованы в иерархию. На нижних уровнях такой иерархии находится более дешевая и медленная память большего объема, а по мере продвижения иерархией вверх память становится дороже и быстрее (а ее объем становится меньше). Самым дешевым и медленным запоминающим устройством является жесткий диск компьютера. Его называют также вспомогательным запоминающим устройством (secondary storage). Быстрее и дороже есть оперативная память, сохраняется в микросхемах памяти, установленных на компьютере, - такую память называть основной памятью (main memory). Еще более быстрыми средствами хранения данных являются различные кэши процессора, а объем этих кэшей еще более ограниченный.
Управление памятью в ОС - достаточно сложная задача. Нужной по характеристикам памяти часто недостаточно, и чтобы это не мешало работе пользователя, необходимо реализовывать средства координации различных видов памяти. Так, современные приложения могут не поместиться целиком в основной памяти и неиспользуемый код может временно храниться на жестком диске.
Виртуальная память
Виртуальная память - это технология, в которой вводится уровень дополнительных преобразований между адресами памяти, используемых процессом, и адресам физической памяти компьютера. Такие преобразования должны обеспечивать защиту памяти и отсутствие привязанности процесса к адресу в физической памяти.
Благодаря виртуальной памяти физическая память адресного пространства процесса может быть фрагментированной, поскольку основной объем памяти, которую занимает процесс, большую часть времени остается свободным. Есть так называемое правило «девяносто к десяти», или правило локализации, которое утверждает, что 90% обращений к памяти в процессе приходится на 10% его адресного пространства. Адреса можно перемещать так, чтобы основной памяти соответствовали только те разделы адресного пространства процесса, которые действительно используются в конкретный момент.
При этом неиспользуемые разделы адресного пространства можно ставить в соответствие медленной памяти (например пространство на жестком диске), а в это время процессы могут использовать основную память, в которой ранее отображались адреса этих разделов. Когда раздел понадобится, его данные загружают с диска в основную память. Данные могут считываться с диска в оперативную память при обращении к ним.
Таким образом можно значительно увеличить размер адресного пространства процесса и обеспечить выполнение процессов, по размеру превышающих основную память.
Проблемы реализации виртуальной памяти. Фрагментация памяти
Основная проблема, возникающая при использовании виртуальной памяти, касается эффективности ее реализации. Поскольку преобразование адресов необходимо делать во время каждого обращения к памяти, небрежная реализация этого преобразования может привести к худшим последствиям для производительности всей системы. Если для большинства обращений к памяти система будет вынуждена обращаться к диску (в десятки тысяч раз медленнее, чем основная память), работать с такой системой будет практически невозможно.
Еще одной проблемой является фрагментация памяти, это происходит, когда возникает ситуация, что невозможно использовать свободную память. Различают внешнюю и внутреннюю фрагментацию памяти.
Внешняя сводится к тому, что в результате выделения и последующего освобождения памяти в ней образуются свободные блоки малого размера - дыры (holes). Поэтому может возникнуть ситуация, при которой невозможно выделить непрерывный блок памяти размера N, поскольку нет ни одного непрерывного свободного блока, размер которого S> N, хотя в целом объем свободного пространства памяти превышает N.
Внутренняя фрагментация сводится к тому, что по запросу выделяют блоки памяти большого размера, чем на самом деле будут использоваться, в результате внутри выделенных блоков остаются неиспользуемые участки, которые уже не могут быть предназначены для чего-то другого.
Логическая и физическая адресация памяти
Важнейшими понятиями концепции виртуальной памяти является логическая и физическая адресация памяти.
Логическая или виртуальный адрес - адрес, который генерирует программа, запущенная на некотором процессоре. Адреса, использующих инструкций конкретного процессора, логичны адресам. Совокупность логических адресов составляет логическое адресное пространство.
Физический адрес - адрес, которым оперирует микросхема памяти. Приложение в современных компьютерах никогда не имеет дела с физическими адресами. Специальное аппаратное устройство MMU (memory management unit - устройство управления памятью) отвечает за преобразование логических адресов в физические. Совокупность всех доступных физических адресов составляет физический адресное пространство. Итак, если в компьютере микросхемы па 128 Мбайт памяти, то именно такой объем памяти адресуют физически. Логично обычно адресуют значительно больше памяти.
.
