Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционные системы Лекция 09(Управление памят...doc
Скачиваний:
6
Добавлен:
16.09.2019
Размер:
243.71 Кб
Скачать

8

Операционные системы Лекция 9 (Управление памятью)

Отображение программных модулей на оперативную память.

Программа имеет пространство имен – набор логических имен переменных и входных точек программных модулей (чаще всего являются символьными и для которых отсутствует отношение порядка).

Оперативная память – упорядоченное множество ячеек. Количество ячеек ограничено и фиксировано.

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

Отображение осуществляется в два этапа (рис 9.1):

Рис. 9.1. Отображение программных модулей на оперативную память

  1. Системой программирования на основе логических (символьных) имен формируется виртуальное адресное пространство (виртуальная память) программы - множество всех допустимых значений виртуального адреса.

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

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

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

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

Частные случаи отображения:

А) Виртуальное адресное пространство тождественно физической памяти.

Нет необходимости во втором отображении.

В данном случае система программирования генерирует абсолютную двоичную программу.

Абсолютная двоичная программа – все двоичные адреса в ней таковы, что программа может исполняться только в том случае, если ее виртуальные адреса будут точно соответствовать физическим.

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

Б) Виртуальное адресное пространство тождественно исходному пространству имен.

Отображение выполняет сама ОС, которая во время исполнения использует таблицу символьных имен.

Отображение имен на адреса выполняется для каждого нового имени. Схема интерпретации.

Промежуточные варианты:

  1. Транслятор-компилятор генерирует относительные адреса (которые по сути являются виртуальными.

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

  1. Транслятор-компилятор генерирует в качестве виртуального адреса относительный адрес и информацию о начальном адресе.

Процессор, используя подготовленную ОС адресную информацию, выполняет второе отображение не один раз (при загрузке программы), а при каждом обращении к памяти.

Методы управления памятью.

  1. Своппинг (Swapping).

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

При выделении процессу процессора он перемещается в ОП (swap in/roll in).

При прерывании процесса он перемещается во внешнюю память (swap out/roll out).

При свопинге происходит перемещение всей программы.

Основное применение своппинг находит в системах разделения времени, где он используется одновременно с циклической стратегией планирования.

Недостаток «чистого» своппинга в больших потерях времени на загрузку/выгрузку процессов.

В современных ОС используются модифицированные варианты своппинга (во многих версиях ОС UNIX своппинг включается только в том случае, если количество процессов в ОП становится слишком большим).

  1. Смежное размещение процессов.

Простейшее размещение. Выделяется один непрерывный участок адресного пространства.

  1. Однопрограммный режим.

  2. Мультипрограммирование с фиксированными разделами MFT (Multiprogramming with a fixed number of tasks). Фиксируются границы разделов. В каждом разделе один процесс. Фрагментация: Внутренняя – размер процесса меньше размера раздела. Внешняя – размер процесса в очереди больше размера раздела

  3. Мультипрограммирование с переменными разделами MVT (Multiprogramming with a variable number of tasks). Границы разделов не фиксируются. В начальной фазе фрагментации нет. На фазе повторного размещения те же причины фрагментации, что и для MFT.

  4. Мультипрограммирование с переменными разделами и уплотнением памяти. Уплотнение – перемещение занятых разделов по адресному пространству памяти таким образом, чтобы свободный фрагмент занимал одну связную область.

Недостатки: когда мультипрограммная смесь неоднородна по отношению к размерам программ, возникает необходимость в частом уплотнении, что расходует ресурс «процессорное время» и компенсирует экономию ресурса «оперативная память».

  1. Несмежное размещение процессов.

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

  1. Сегментная организация (рис 9.2).

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

Логический адрес при сегментной организации состоит из двух частей:

  • S - номер сегмента

  • d - смещение в пределах сегмента

S используется в качестве индекса для таблицы сегментов. С помощью таблицы сегментов определяется начальный адрес сегмента в оперативной памяти. Физический адрес определяется как S+d.

Если таблица сегментов имеет значительные размеры, она располагается в ОП, а ее начальный адрес и длина хранятся в специальных регистрах.

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

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

Сегментной организации присуща фрагментация:

  • Внутренняя фрагментация – когда размер загружаемого сегмента меньше размера имеющегося свободного раздела.

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

  1. Страничная организация памяти (рис. 9.3)

Позволяет свести к минимуму общую фрагментацию за счет полного устранения внешней фрагментации и минимизации внутренней фрагментации.

Адресное пространство оперативной и внешней памяти разбивается на блоки фиксированного размера, называемые страничными рамками (frames, фреймы, кадры).

Логическое адресное пространство программы также разбивается на блоки фиксированного размера, называемыми страницами (pages). Размеры страничных рамок и страниц совпадают.

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

При такой организации памяти внешняя фрагментация отсутствует, а внутренняя ограничена частью последней страницы процесса.

Каждый адрес, генерируемый процессором, состоит из двух частей:

P – номер страницы (page number),

d – смещение в пределах страницы.

Физический адрес определяется сложением начального адреса страничной рамки и смещения.

В современных ОС типичный размер страницы составляет 2 или 4 Кб.

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