- •Создание процесса.
- •Завершение процесса
- •Приведем пример использования потоков.
- •Основным недостатком управления потоками в ядре является существенная цена системных запросов
- •Виртуальное адресное пространство
- •Виртуальное адресное пространство процесса.
- •Нечто странное и необъяснимое Как избежать состязания?
- •Если нам удастся избежать одновременного нахождения двух процессов в критических областях, мы сможем избежать состязаний.
- •14) Критические области. Взаимное исключение с активным ожиданием. Запрещение прерываний.
- •Переменные блокировки.
- •Строгое чередование
- •Опечатка
- •Алгоритм Петерсона
- •Команда tsl
- •Задачи алгоритмов планирования.
- •Список задач
- •Виртуальная память. Архитектурные средства поддержки виртуальной памяти
- •9.2.1 Страничная память
- •9.2.3 Таблица страниц
- •Идеальный алгоритм замещение страниц
- •Алгоритм nru
- •Алгоритм fifo
- •Алгоритм "часы"
- •Алгоритм lru (Least Recently Used - использовавшаяся реже всего)
Виртуальная память. Архитектурные средства поддержки виртуальной памяти
Уже давно существует проблема размещения в памяти программ, размер которых превышает размер доступной памяти. Один из вариантов ее решения организация структур с перекрытием рассмотрен в предыдущей главе. При этом предполагалось активное участие программиста в процессе сегментации и загрузки программы.
Было предложено переложить проблему на компьютер. Развитие архитектуры компьютеров привело к значительному усложнению организации памяти, соответственно, усложнились и расширились задачи операционной системы по управлению памятью. Одним из главных усовершенствований архитектуры стало появление виртуальной памяти (virtual memory). Она впервые была реализована в 1959 г. на компьютере Атлас, разработанном в Манчестерском университете, и стала популярной только спустя десятилетие.
При помощи виртуальной памяти обычно решают две задачи= Во-первых, виртуальная память позволяет адресовать пространство, гораздо большее, чем емкость физической памяти конкретной вычислительной машины. В соответствии спринципом локальности для реальных программ обычно нет необходимости в помещении их в физическую память целиком.
Возможность выполнения программы, находящейся в памяти лишь частично имеет ряд вполне очевидных преимуществ:
Программа не ограничена величиной физической памяти. Упрощается разработка программ, поскольку можно задействовать большие виртуальные пространства, не заботясь о размере используемой памяти.
Поскольку появляется возможность частичного помещения программы (процесса) в память и гибкого перераспределения памяти между программами, можно разместить в памяти больше программ, что увеличивает загрузку процессора и пропускную способность системы.
Объем ввода-вывода для выгрузки части программы на диск может быть меньше, чем в варианте классического свопинга, в итоге, каждая программа будет работать быстрее.
Таким образом, возможность обеспечения (при поддержке операционной системы) для программы видимости практически неограниченной (32- или 64-разрядной) адресуемой пользовательской памяти при наличии основной памяти существенно меньших размеров очень важный аспект. Но введение виртуальной памяти позволяет решать другую не менее важную задачу обеспечение контроля доступа к отдельным сегментам памяти и в частности =
защиту пользовательских программ друг от друга
и защиту ОС от пользовательских программ.
С целью защиты виртуальная память поддерживалась и на компьютерах с 16-разрядной адресацией, в которых объем основной памяти зачастую существенно превышал 64 Кбайта (размер виртуальной памяти). Например, 16-разрядный компьютер PDP-11/70 мог иметь до 2 Мбайт оперативной памяти. Операционная система этого компьютера, тем не менее, поддерживала виртуальную память, основным смыслом которой являлось обеспечение защиты и перераспределения основной памяти между пользовательскими процессами.
Напомним, что в системах с виртуальной памятью те адреса, которые генерирует программа, -(логические адреса) - называются виртуальными, и они формируют виртуальное адресное пространство. В отсутствие механизма виртуальной памяти виртуальное адресное пространство непосредственно отображается в физическое пространство.
Хотя известны и чисто программные реализации виртуальной памяти, это направление получило наиболее широкое развитие после получения соответствующей аппаратной поддержки. Идея аппаратной части механизма виртуальной памяти состоит в том, что адрес памяти, вырабатываемый командой, интерпретируется аппаратурой не как реальный адрес некоторого элемента основной памяти, а как некоторая структура, где адрес является лишь одним из компонентов наряду с атрибутами, характеризующими способ обращения по данному адресу.
Традиционно считается, что существует три модели виртуальной памяти:
страничная,
сегментная
и их комбинация - сегментно-страничная модель.
По-видимому, более правильно считать, что существует (и поддерживается аппаратно большинством платформ) страничная модель виртуальной памяти. Сегментно-страничнаямодель является синтезом страничной модели и идеи сегментации, изложенной в предыдущей главе. Причем для тех архитектур, в которых сегменты не поддерживаются аппаратно их реализация - задача архитектурно-независимой компоненты менеджера памяти. Сегментная организация в чистом виде практически не встречается.
Страничная организация памяти. Таблицы страниц.
