- Lektsia - бесплатные рефераты, доклады, курсовые работы, контрольные и дипломы для студентов - https://lektsia.info -

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



время выполнения. После того как приложение перестает нуждаться в

Дополнительной памяти, оно может возвратить ее системе. Выделение памяти

Случайной длины в случайные моменты времени из общего пула памяти

Приводит к фрагментации и, вследствие этого, к неэффективному ее

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

Системы.

Во время работы операционной системы ей часто приходится создавать

Новые служебные информационные структуры, такие как описатели процессов и

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

Процессами для обмена данными, синхронизирующие объекты и т. п. Все эти

Системные объекты требуют памяти»» В некоторых ОС заранее (во время

Установки) резервируется некоторый фиксированный объем памяти для

Системных нужд. В других же ОС используется более гибкий подход, при

Котором память для системных целей выделяется динамически. В таком случае

Разные подсистемы ОС при создании своих таблиц, объектов, структур и т. п.

Обращаются к подсистеме управления памятью с запросами.

Защита памяти — это еще одна важная задача операционной системы, которая

Состоит в том, чтобы не позволить выполняемому процессу записывать или

Читать данные из памяти, назначенной другому процессу. Эта функция, как

Правило, реализуется программными модулями ОС в тесном взаимодействии с

Аппаратными средствами.

Типы адресов. Для идентификации переменных и команд на разных этапах

Жизненного цикла программы используются символьные имена (метки),

Виртуальные адреса и физические адреса.

 Символьные имена присваивает пользователь при написании программы на

Алгоритмическом языке или ассемблере.

 Виртуальные адреса, называемые иногда математическими, или логическими

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

Поскольку во время трансляции в общем случае не известно, в какое место

Оперативной памяти будет загружена программа, то транслятор присваивает

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

Умолчанию, что начальным адресом программы будет нулевой адрес.

 Физические адреса соответствуют номерам ячеек оперативной памяти, где в

Действительности расположены' или будут расположены переменные и команды.

Совокупность виртуальных адресов процесса называется виртуальным адресным

Пространством. Диапазон возможных адресов виртуального пространства у всех

процессов является одним и тем же. Например, при использовании 32-разрядных

Виртуальных адресов этот диапазон задается границами 0000000016и FFFFFFFF16.

Тем не менее каждый процесс имеет собственное виртуальное адресное

Пространство — транслятор присваивает виртуальные адреса переменным и

Кодам каждой программе .

Сегментное - страничное распределение. Данный метод представляет собой

Комбинацию страничного и сегментного механизмов управления памятью и

Направлен на реализацию достоинств обоих подходов.

Виртуальная память делится на сегменты, а каждый сегмент - на страницы.

Все современные ОС используют именно такой способ организации.

Рассмотрим схему управления памятью, основанную на комбинировании

Сегментного и страничного механизмов виртуальное пространство процесса

Делится на сегменты, а каждый сегмент, в свою очередь, делится на

Виртуальные страницы. Первое отличие состоит в том, что виртуальные

Страницы нумеруются не в пределах всего адресного пространства процесса, а

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

(номер сегмента, номер страницы, смещение в странице).

Загрузка процесса выполняется операционной системой постранично, при

Этом часть страниц размещается в оперативной памяти, а часть — на диске.

Для ________83 каждого процесса создается собственная таблица сегментов, а для

каждого сегмента — своя таблица страниц. Адрес таблицы сегментов

Загружается в специальный регистр процессора, когда активизируется

Соответствующий процесс.

Рисунок 1 - Еще одна схема преобразования виртуального адреса в физический для

Сегментно-страничной организации памяти

Таблица страниц содержит дескрипторы страниц, содержимое которых

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

А вот таблица сегментов состоит из дескрипторов сегментов, которые

Вместо информации о расположении сегментов в виртуальном адресном

Пространстве содержат описание расположения таблиц страниц в

Физической памяти.

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

Физический для данного метода.

 По номеру сегмента, заданному в виртуальном адресе, из таблицы

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

Страниц.

 По номеру виртуальной страницы, заданному в виртуальном адресе,

Из таблицы страниц извлекается дескриптор, в котором указан номер

Физической страницы.

 К номеру физической страницы пристыковывается младшая часть

Виртуального адреса — смещение.

Виртуальное пространство процесса делится на сегменты, а каждый сегмент в

Свою очередь делится на виртуальные страницы, которые нумеруются в пределах

Сегмента. Оперативная память делится на физические страницы. Загрузка

Процесса выполняется операционной системой постранично, при этом часть

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

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

Совпадает со структурой таблицы страниц, используемой при страничном

распределении. Для каждого процесса создается таблица сегментов, в которой

Указываются адреса таблиц страниц для всех сегментов данного процесса. Адрес

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

Активизируется соответствующий процесс.

Данный метод представляет собой комбинацию страничного и

Сегментного механизмов управления памятью и направлен на реализацию

Достоинств обоих подходов.

Так же как и при сегментной организации памяти, виртуальное адресное

Пространство процесса разделено на сегменты. Это позволяет определять

Разные права доступа к разным частям кодов и данных программы.

Перемещение данных между памятью и диском осуществляется не

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

Физическая память делятся на страницы равного размера, что

Позволяет более эффективно использовать память, сократив до минимума

Фрагментацию.

В большинстве современных реализаций сегментно-страничной организации

Памяти в отличие от набора виртуальных диапазонов адресов при

Сегментной

организации памяти (рисунок 2, а) все виртуальные сегменты образуют

одно непрерывное линейное виртуальное адресное пространство (рисунок 2, б).

Координаты байта в виртуальном адресном пространстве при сегментно-

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

Линейным виртуальным адресом, который равен сдвигу данного байта

Относительно границы общего линейного виртуального пространства, во-

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

— смещением относительно начала сегмента. При этом в отличие от

сегментной модели, для однозначного задания виртуального адреса вторым

Способом необходимо каким-то образом указать также начальный

Виртуальный адрес сегмента с данным номером. Системы виртуальной

Памяти ОС с сегментно-страничной организацией используют второй способ,

Так как он позволяет непосредственно определить принадлежность адреса

Некоторому сегменту и проверить права доступа процесса к нему.

Рисунок 2 - Два способа сегментации

Для каждого процесса операционная система создает отдельную таблицу

Сегментов, в которой содержатся описатели (дескрипторы) всех сегментов

Процесса. Описание сегмента включает назначенные ему права доступа и

Другие характеристики, подобные тем, которые содержатся в дескрипторах