Файл: Лекции Абстракция памяти Виртуальная память Разработка, реализация и сегментация страничной реализации памяти.pptx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 26.04.2024

Просмотров: 80

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Тема 5. Управление памятью

Часть 2

Содержание лекции

Методы распределения памяти

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

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

Методы распределения памяти

Все алгоритмы распределения памяти разделены на два класса:

Алгоритмы, в которых внешняя память не привлекается:

Распределение памяти фиксированными разделами

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

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

Виртуальная память

К основным преимуществам виртуальной памяти относят:

Виртуальная память делает программирование приложений проще:

Страничное распределение:

Страничная организация памяти

С точки зрения программиста:

Виртуальный адрес состоит из двух полей:  

Трансляция адресов

Трансляция виртуального адреса:

Трансляция адресов

Таблица страниц

Запись в таблице – дескриптор страницы

Страничное прерывание

Задачи ОС

Задачи ОС

Это происходит в два этапа:

Страничная организация памяти - вывод

Сегментное распределение

Система с сегментной организацией функционирует аналогично системе со страничной организацией:

Сегментное распределение - вывод

Странично-сегментное распределение

Виртуальное адресное пространство зависит от:

Виртуальное адресное пространство не зависит от:

Все методы управления памятью могут быть разделены на два класса:

Подсистема управления памятью в этом случае выполняет следующие задачи:

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

Виртуальный адрес можно представить состоящим из двух полей:   

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

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


При поступлении новой задачи  анализ таблицы свободных областей и выбор раздела, размер которого достаточен для размещения поступившей задачи;

Задачи ОС


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


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

Это происходит в два этапа:


Посредством системы программирования;
Посредством операционной системы (с помощью специальных программных модулей управления памятью и использования соответствующих аппаратных средств вычислительной системы).


с

Символьные имена

Идентификатор переменных в программе на алгоритмическом языке

Виртуальные адреса

Условные адреса, вырабатываемые транслятором

Физические адреса

Номера ячеек физической памяти

Транслятор

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

Страничная организация памяти - вывод


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

Сегментное распределение


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



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


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


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

Система с сегментной организацией функционирует аналогично системе со страничной организацией:


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

Сегментное распределение - вывод


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

Странично-сегментное распределение


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


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




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

Виртуальное адресное пространство зависит от:


Архитектуры процессора;
Системы программирования.

Виртуальное адресное пространство не зависит от:

Объема реальной физической памяти, установленной в компьютере.

Все методы управления памятью могут быть разделены на два класса:


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


Распределение памяти фиксированными разделами.
Распределение памяти разделами переменной величины.
Перемещаемые разделы.


Сегментное распределение;
Страничное распределение;
Сегментно-страничное распределение.


Распределение памяти фиксированными разделами.
Распределение памяти разделами переменной величины.
Перемещаемые разделы.

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

Подсистема управления памятью в этом случае выполняет следующие задачи:


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


Распределение памяти фиксированными разделами.
Распределение памяти разделами переменной величины.
Перемещаемые разделы.

При распределение памяти разделами переменной величины память машины не делится заранее на разделы. Сначала вся память свободна. Каждой вновь поступающей задаче выделяется необходимая ей память. Если достаточный объем памяти отсутствует, то задача не принимается на выполнение и стоит в очереди. После завершения задачи память освобождается, и на это место может быть загружена другая задача.

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


Распределение памяти фиксированными разделами.

Распределение памяти разделами переменной величины.
Перемещаемые разделы.


Сегментное распределение;
Страничное распределение;
Сегментно-страничное распределение.

Виртуальный адрес можно представить состоящим из двух полей:   


указатель на часть программы (с которой идет работы) для определения местоположения этой части;
относительный адрес нужной ячейки памяти (по отношению к найденному адресу).


Сегментное распределение;
Страничное распределение;
Сегментно-страничное распределение.

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

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

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


Сегментное распределение;
Страничное распределение;
Сегментно-страничное распределение.

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


Сегментное распределение;
Страничное распределение;
Сегментно-страничное распределение.

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