При сегментно страничном способе распределение памяти

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

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

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

Достоинства сегментного распределения памяти:

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

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

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

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

Фрагментация памяти, которая возникает из-за непредсказуемых размеров сегментов.

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

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

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

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

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

Кэширование данных в современных операционных системах. Кэш-память [1, тема 2].

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

Кэш-память прозрачна для программ и пользователей. С ней работает только операционная система.

В современных компьютерах применяют кэширование, как оперативной памяти, так и диска.

В процессе работы системы в кэш-память заносятся данные, считываемые системой из оперативной памяти при выполнении каких-либо задач. Каждая запись в кэш-памяти включает в себя:

значение элемента данных;

адрес, который этот элемент данных имеет в основной памяти;

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

При каждом обращении к основной памяти просматривается содержимое кэш-памяти с целью определения, не находятся ли там нужные данные. Кэш-память не является адресуемой, поэтому поиск осуществляется по содержимому. Далее возможна одна из двух ситуаций:

если данные обнаруживаются в кэш-памяти (кэш-попадание), то они считываются из нее;

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

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

Читайте также:  Способы выплавки черных металлов

Возможны два решения проблемы: сквозная и обратная запись.

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

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

Для кэширования используются две основные схемы отображения: случайное отображение и детерминированное отображение.

При случайном отображенииэлемент оперативной памяти вместе со своим адресом может быть размещен в произвольном месте кэш-памяти.

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

Детерминированный (прямой) способ отображения предполагает, что любой элемент основной памяти всегда отображается в одно и то же место кэш-памяти. Между номерами строк кэш-памяти и адресами основной памяти устанавливается соотношение «один ко многим»: одному номеру строки соответствует несколько адресов оперативной памяти.

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

Источник

При сегментно страничном способе распределение памяти

Режимы работы микропроцессора.

1. Режимы работы микропроцессора

2. Организация памяти

· Модели использования оперативной памяти (сегментированная, страничная)

· Понятие о сегментированной модели памяти

· Понятие о страничной модели памяти

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

3. Плоская модель памяти

Режимы работы микропроцессора

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

Защищенный режим ( protected mode)

Означает, что параллельные вычисления могут быть защищены программно-аппаратным путем.

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

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

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

Режим виртуального 8086

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

Физическая память, к которой микропроцессов имеет доступ по шине адреса, называется оперативной памятью ( или оперативным запоминающим устройством — ОЗУ).

ОП организована как последовательность байтов.

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

Диапазон значений адресов зависит от разрядности шины адреса микропроцессора.

Для i486 и Pentium он находится в диапазоне от 0 до 2**32-1 — 4 Гбайт (32-разрядная шина адреса).

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

Читайте также:  Терапия при для суставов что это такое способ лечения

Микропроцессор аппаратно поддерживает несколько моделей использования оперативной памяти:

Понятие о сегментированной модели памяти

Память для программы делится на непрерывные области памяти, называемые сегментами.

Сегменты — это логические элементы программы.

Сама программа может обращаться только к данным, которые находятся в этих сегментах.

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

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

Замечание. Программист может либо самостоятельно разбивать программу на фрагменты (сегменты), либо автоматизировать этот процесс и возложить его на систему программирования.

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

Операционная система (! а не сама программа) размещает сегменты программы в ОП по определенным физическим адресам, а значения этих адресов записывает в определенные места, в зависимости от режима работы микропроцессора:

· в реальном режиме адреса помещаются непосредственно в сегментные регистры ( cs, ds, ss, es, gs, fs) ;

· в защищенном режиме — в специальную системную дескрипторную таблицу (Элементом дескрипторной таблицы является дескриптор сегмента. Каждый сегмент имеет дескриптор сегмента -8 байт. Существует три дескрипторные таблицы. Адрес каждой таблицы записывается в специальный системный регистр).

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

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

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

Например, 0040:001Ch; 0000:041Ch; 0020:021Ch; 0041:000Ch .

Каждый сегмент описывается дескриптором сегмента.

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

Дескриптор содержит поле адреса, с которого сегмент начинается и поле длины сегмента. Благодаря этому можно осуществлять контроль

1) размещения сегментов без наложения друг на друга

2) обращается ли код исполняющейся задачи за пределы текущего сегмента.

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

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

2) возможность размещать в памяти как можно больше задач (до определенного предела) Þ увеличивает загрузку системы и более эффективно используются ресурсы системы

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

3) потери памяти на размещение дескрипторных таблиц

4) потери процессорного времени на обработку дескрипторных таблиц.

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

Понятие о страничной модели памяти

Это надстройка над сегментной моделью.

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

Каждый такой блок называется страницей.

Их число 1.048.576 Þ 4 Гб адресуемой памяти.

Читайте также:  Домашняя пыль способы борьбы

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

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

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

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

В настоящее время файл подкачки может динамически изменять свой размер в зависимости от потребностей системы.

Для i486 и Pentium размер возможной виртуальной памяти может достигать 4 Тб (терабайт).

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

Говорят, что память разбивается на физические страницы, а программа — на виртуальные страницы.

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

Для каждой текущей задачи создается таблица страниц.

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

Если он = 1, это означает, что данная страница сейчас размещена в ОП.

Если он = 0, то страница расположена во внешней памяти.

Защита страничной памяти основана на контроле уровня доступа к каждой странице.

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

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

Основное достоинство страничного способа распределения памяти —

минимально возможная фрагментация (эффективное распределение памяти).

1) потери памяти на размещение таблиц страниц

2) потери процессорного времени на обработку таблиц страниц (диспетчер памяти).

3) Программы разбиваются на страницы случайно, без учета логических взаимосвязей, имеющихся в коде Þ межстраничные переходы осуществляются чаще, чем межсегментные + трудности в организации разделения программных модулей между выполняющими процессами

Чтобы избежать недостатка №3 был предложен сегментно-страничный способ распределения памяти.

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

Программа разбивается на сегменты.

Адрес, по-прежнему, состоит из двух частей — сегмент + смещение.

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

Для доступа к памяти необходимо:

1) вычислить адрес дескриптора сегмента и причитать его;

2) вычислить адрес элемента таблицы страниц этого сегмента и извлечь из памяти необходимый элемент;

3) к номеру (адресу) физической страницы приписать номер (адрес) ячейки в странице.

Þ Задержка в доступе к памяти (в три раза больше, чем при прямой адресации).

Чтобы избежать этого вводится кэширование (кэш строится по ассоциативному принципу). Мы будем это изучать позже.

Плоская модель памяти

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

Это подход называется плоской памятью.

· При использовании плоской модели памяти упрощается создание и ОС, и систем программирования.

· уменьшаются расходы памяти на поддержку системных информационных структур

В абсолютном большинстве современных 32-разрядных ОС (для микропроцессоров Intel ) используется плоская модель памяти.

Источник

Оцените статью
Разные способы