double arrow

Введение в управление памятью


УПРАВЛЕНИЕ ПАМЯТЬЮ. ПРОСТЕЙШИЕ СХЕМЫ УПРАВЛЕНИЯ ПАМЯТЬЮ

Контрольные вопросы

Голод

Тупики не ресурсного типа

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

Близкая к тупикам проблема – голод (starvation). В динамических системах постоянно происходят запросы процессов к ресурсам. Естественно, что должна быть реализована некоторая политика для принятия решения относительно того, кто получит ресурсы и когда. Эта политика может быть дискриминационной по отношению к некоторым процессам, хотя формально они и не в тупике.

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




1) Опишите тупик, приведите пример

2) Приведите условия возникновения тупиков

3) Приведите основные направления борьбы с тупиками

4) В чем заключается обнаружение тупика, приведите пример обнаружения тупика

5) Опишите факторы, обуславливающие сложность восстановления после тупика

6) Опишите восстановление после тупиков при помощи перераспределения ресурсов

7) Опишите восстановление после тупиков через откат назад

8) Опишите восстановление после тупиков через ликвидацию одного из процессов

9) Приведите алгоритм банкира для предотвращения тупиков

10) Опишите предотвращение тупиков за счет нарушения условия взаимоисключения

11) Опишите предотвращение тупиков за счет нарушения условия ожидания дополнительных ресурсов

12) Опишите предотвращение тупиков за счет нарушения принципа неперераспределяемости

13) Опишите предотвращение тупиков за счет нарушения условия кругового ожидания

14) Приведите проблемы, аналогичные тупикам (Двухфазная локализация, Тупики не ресурсного типа, голод)


На лекции рассматриваются следующие вопросы:

1) Введение в управление памятью

2) Связывание адресов

3) Простейшие схемы управления памятью (с фиксированными разделами, со свопинг, с переменными разделами)

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



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

Часть ОС, которая управляет памятью, называется менеджером памяти. В процессе эволюции в менеджерах памяти современных ОС было реализовано несколько основополагающих идей.

Во-первых, это идея сегментации. По-видимому, вначале сегменты памяти появились в связи с необходимостью обобществления процессами фрагментов программного кода (текстовый редактор, тригонометрические библиотеки и т.д.), без чего каждый процесс должен был хранить в своем адресном пространстве дублирующую информацию. Эти отдельные участки памяти, хранящие информацию, которую система отображает в память нескольких процессов, получили название сегментов. Память, таким образом, стала двумерной. Адрес состоит из двух компонентов: номер сегмента, смещение внутри сегмента. Далее оказалось удобным размещать в разных сегментах данные разных типов (код программы, данные, стек и т.д.). Попутно выяснилось, что можно контролировать характер работы с конкретным сегментом, приписав ему атрибуты, например, права доступа или типы операций, разрешенные с данными, хранящимися в сегменте. Большинство современных ОС поддерживают сегментную организацию памяти. В некоторых архитектурах (например, Intel) сегментация поддерживается оборудованием.



Вторая идея, о которой можно упомянуть, рассматривая поддержку памяти в ОС, это разделение памятина физическую и логическую. Адреса, к которым обращается процесс, отделяются от адресов, реально существующих в оперативной памяти. Адрес, сгенерированный программой, обычно называют логическим (в системах с виртуальной памятью он обычно называется виртуальным) адресом, тогда как адрес, который видит устройство памяти (то есть нечто, загруженное в адресный регистр) обычно называется физическим адресом. Задача ОС, в какой-то момент времени осуществить связывание (или отображение) логического адресного пространства с физическим.

И, наконец, идея локальности. Свойство локальности присуще природе. Пространственная локальность - соседние объекты характеризуются похожими свойствами (если в данной местности хорошая погода, то вероятнее всего, что в близкой окрестности также хорошая погода). Временная локальность - если в 15:00 была хорошая погода, то, вероятно, что и в 14:30 и в 15:30 также наблюдалась хорошая погода. Свойство локальности (скорее эмпирическое) присуще и работе ОС. Фактически свойство локальности объяснимо, если учесть, как пишутся программы и организованы данные, то есть обычно в течение какого-то отрезка времени ограниченный фрагмент кода работает с ограниченным набором данных. Понимание данной особенности позволяет организовать иерархию памяти, используя быструю дорогостоящую память для хранения минимума необходимой информации, размещая оставшуюся часть данных на устройствах с более медленным доступом и подкачивая их в быструю память по мере необходимости. Типичный пример иерархии: регистры процессора, кэш процессора, главная память, внешняя память на магнитных дисках (внешняя память).

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

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

Существует несколько схем управления памятью. Выбор той или иной схемы зависит от многих факторов. Рассматривая ту или иную схему важно учитывать:

1) Механизм управления памятью или идеологию построения системы управления.

2) Архитектурные особенности используемой системы.

3) Структуры данных в ОС, используемые для управления памятью.

4) Алгоритмы, используемые для управления памятью.

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







Сейчас читают про: