36253

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

Доклад

Информатика, кибернетика и программирование

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

Русский

2014-09-23

71.5 KB

36 чел.

6

PAGE  6

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

Оперативная память.

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

1) оперативная память, несмотря на развитие схемотехники, остается дорогим ресурсом, поэтому необходимо заботиться о ее эффективной с точки зрения ОС загрузке;

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

3) ОП является особым ресурсом, поскольку ее распределение должно происходить не изолированно, а согласованно с распределением ЦП.

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

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

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

Задача распределения ОП как на уровне долгосрочного, так и краткосрочного планирования распадается на три взаимосвязанных задачи: учета, выделения и возврата, которые заключаются в следующем:

  1.  Учету подвергаются по определенным правилам либо только дыры, либо, более часто, и дыры и занятые участки.
  2.  Решение задачи выделения происходит всякий раз, когда приходит запрос на выделение некоторой области памяти для отдельного задания или процесса в составе задания. В наиболее простых случаях выделение требуемого непрерывного участка памяти происходит из резерва свободной памяти, представленной некоторой совокупностью дыр. По определенным правилам выбирается дыра, внутри которой и выделяется участок памяти требуемого размера. Если все дыры имеют размер, меньший требуемого непрерывного участка памяти, то используется более сложный алгоритм. Тогда, если это допустимо в системе, распределение обеспечивается за счет переупорядочивания (перемещения) занятых участков и дыр с целью получить дыру большего размера. В других случаях память выделяется непрерывно так, что выделяемая область частично захватывает и дыры, и смежные занятые участки. Для обеспечения сохранности информации, находящейся в занятых участках распределяемой памяти, осуществляется ее переписывание на внешнюю память. В последующем эта информация возвращается либо в то же место ОП, либо в другое (тогда происходит перенастройка адресов средствами ОС) без нарушения логики работы других процессов.
  3.  Задача возврата решается при освобождении занятых участков по требованию самих процессов или без их ведома (в случае необходимости выделения памяти за счет занятых участков).

При решении указанных задач стремятся:

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

Независимо от того, какой из двух алгоритмов распределения памяти применяется – самая подходящая или первая подходящая дыра, распределение и освобождения памяти требует выполнения следующих действий:

  1.  найти свободную область не меньше требуемого размера;
  2.  поделить ее на две части – распределяемую и свободную;
  3.  при освобождении, если возможно, объединить освободившуюся область с любой свободной смежной областью.

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

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

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

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

Обычно адрес – это число, которое однозначно определяет номер требуемого элемента хранения. Адресное пространство в этом случае есть последовательность целых чисел, начинающаяся с 0. Число различных адресов конечно и равно N, т.е. размеру адресного пространства (или объему памяти V).

В качестве адреса может быть использовано некоторое символьное имя, однозначно определяющее элемент хранения. Такие адреса называют виртуальными, а их совокупность – виртуальным адресным пространством. Виртуальное адресное пространство поддерживается с помощью программно-аппаратного механизма доступа, который является средством виртуализации физического адресного пространства. Программный слой обеспечивает преобразование каждого виртуального адреса в некоторый физический адрес.
Адресное пространство символических адресов, используемых в программах на ассемблере, можно рассматривать как виртуальное адресное пространство. Оно преобразуется статически в адресное пространство физической памяти средствами транслятора и загрузчика, которые в данном случае представляют собой программный компонент механизма доступа к ОП.
При построении виртуальной ОП приходиться распределять не только виртуальное и физическое адресные пространства ОП, но и адресное пространство внешней памяти.
В представлении как виртуального, так и физического адресного пространства оперативной памяти применяется несколько схем структуризации. В основе их лежит два класса схем структуризации: страничная схема и сегментная схема.
Рассмотрим сначала страничную схему. На первом шаге ее реализации сгруппируем адреса в адресном пространстве 0А N-1. В каждую группу, называемую страницей, должно входить одинаковое число адресов L. Обычно N=2n, L=2m, тогда 2(n-m) есть число страниц. Последовательность номеров страниц есть k= 0,1,2,…, 2(n-m)-1. Адресом начала страницы номер k является Ak0=kL.

Второй шаг структуризации заключается в том, что нумеруются адреса независимым образом внутри каждой страницы. В пределах каждой страницы адрес R меняется 0 до 2(m-1) и называется смещением. В результате адресное пространство превращается в двумерное, состоящее из адресных пар (k, R), где k – номер страницы, R – смещение. Каждая страница при этом рассматривается как отдельное адресное пространство.

Переход от странично-структурированного адресного пространства к одномерному непрерывному осуществляется по формуле A=kL+R по принципу база + смещение.
В случае страничной схемы с переменными страницами для задания адреса необходимы две координаты – базовый адрес страницы Ak0 и смещение R , которые в совокупности образуют адресную пару (Ak0, R). В этом случае переход от структурного представления (Ak0, R) к непрерывному выполняется по формуле A= Ak0+R, обратный же переход невозможен.
Второй класс схем структуризации называется сегментным. Он представляет собой обобщение варианта структуризации переменными страницами.
На первом шаге структуризации производят объединение адресов в группы, называемые сегментами. Размеры сегментов 1LsN, где s – номер сегмента. Упорядочивание номеров необязательно, номер выступает лишь как идентификатор сегмента.
На втором шаге структуризации каждому сегменту ставится в соответствие его базовый адрес AS0 , так что каждый сегмент определяется своими координатами (s, AS0). В каждом сегменте производится перенумерация адресов, адрес внутри сегмента называется смещением. Получаем трехмерное адресное пространство: (s, AS0, R). В рассматриваемой схеме можно осуществить переход от трехмерного адреса к одномерному непрерывному, обратный же переход невозможен. На практике при использовании сегментной схемы структуризации задают две координаты (s, R). Тогда при переходе к непрерывному адресу необходима операция установления соответствия (сегменту с номером s присваивается базовый адрес AS0).
Используются также комбинированные схемы структуризации, называемые сегментно-страничными: адресное пространство сначала структурируется фиксированными страницами, затем происходит группировка страниц в сегменты. Каждый сегмент с номером s содержит некоторое количество страниц, нумеруемых с нуля в возрастающем порядке. Адрес задается четырьмя координатами (s, AS0, R’, R), где s – номер сегмента, AS0 – базовый адрес сегмента, R’ – смещение страницы в пределах сегмента, R – смещение в пределах страницы.
Виртуальная память строится как для удовлетворения нужд пользователя, так и для повышения эффективности работы ОС в плане управления главными ресурсами – оперативной памятью и центральным процессором.
Использование виртуальной памяти позволяет ОС исключить потери памяти и уменьшить задержку при обращении процессов к данным, обеспечивает условия для функционирования максимального числа параллельных процессов, не мешающих друг другу, т.е. повышает пропускную способность системы. Виртуальная память дает возможность ОС решать и другие важные задачи: эффективное использования программных ресурсов, защита информации при развитии процессов, обеспечение взаимодействие между процессами и т. д.
Требования пользователей разнообразны и весьма противоречивы: одни пишут короткие программы, другие – длинные (больше объема ОП). Некоторые программы не структурированы (не содержат в своём составе дистанционно вызываемых программных единиц типа подпрограмм, процедур, блоков и т. д.), другие, наоборот, состоят из ведущей программы и некоторые числа вызываемых ей программных единиц.
Процесс исполнения программы одного пользователя может взаимодействовать с процессом исполнения программы другого пользователя посредством разделения одного и того же программного ресурса (процедуры).

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

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

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

  1.  Чисто страничная схема функционирования виртуальной оперативной памяти. Разбиению на страницы одинакового размера L=2m подвергается как виртуальное, так и реальное адресные пространства. Структуризация осуществляется системой, а не пользователем. Весь текст программы размером Q слов полностью помещается в оперативную память, для чего требуется K=[Q/L]+1 виртуальных страниц, где [x] означает целую часть числа x.

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

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

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

2) Имеет место локальность вычислений – в течение малого промежутка времени t происходит обращение к памяти в пределах ограниченного интервала адресов. Обращение к другому блоку памяти может произойти в более редких случаях либо по командам перехода (условного или безусловного), либо после исполнения последней команды данного блока.

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

  1.  Сегментная схема функционирования виртуальной оперативной памяти. Адресное пространство и виртуальной памяти и физической ОП сегментно-структурировано. Предполагается также, что пользователь пишет сегментно-структурированную программу, текст которой состоит из произвольного числа сегментов. Размер Ni каждой i-й составной части программы произволен, но не превосходит размера оперативной памяти. Перед исполнением каждая часть программы заносится в архивную среду. Система производит замену пользовательского имени виртуального сегмента s’ на системный номер сегмента s, последовательно размещая сегменты в едином виртуальном адресном пространстве пользователя. При этом не требуется отображения всего адресного пространства программы на адресное пространство оперативной памяти. Перед исполнением программы выделяется непрерывная область в оперативной памяти (физический сегмент) для первой исполняемой части программы, написанной в пределах некоторого виртуального сегмента. По мере исполнения этой части производится отображение данного виртуального сегмента на выделенный физический. Система отслеживает обращение из одного сегмента к другому в составе одной программы и динамически обеспечивает связь с вызываемым сегментом. Вызываемая часть программы переносится из архивной среды в рабочую, после чего в процессе ее исполнения происходит отображение виртуального сегмента адресов на выделенный физический сегмент и т.д. Данная схема функционирования ОП ориентирована на пользователя. Он имеет возможность не только писать произвольно большие программы, но и разрабатывать их на основе принципов модульного программирования.
  1.  Сегментно-страничная схема функционирования виртуальной оперативной памяти. Здесь адресное пространство оперативной памяти разбивается на фиксированные страницы, причем размеры виртуальной и физической страниц берутся одинаковыми. Данная схема также ориентирована на то, что пользователь пишет многомодульные программы в сегментно-структурированном виртуальном адресном пространстве. Но в отличие от предыдущей схемы при погружении программы в виртуальную память каждый виртуальный сегмент не только получает системный номер, но и подвергается дополнительной структуризации. Каждому сегменту длиной qi отводится целое число виртуальных смежных страниц, перенумерованных в пределах каждого сегмента. При длине страницы L=2m их потребуется K=[qi/L]+1.
При выполнении программы сначала выбирается модуль, который должен быть выполнен первым. Но соответствующий ему виртуальный сегмент не переносится полностью в ОП. В этом модуле выбирается совокупность команд, с которой начинается счет программы, находящаяся в пределах адресов некоторой виртуальной страницы. Именно для этой страницы и выделяется блок оперативной памяти. После перенесения в него текста программы устанавливается соответствие между адресами выбранной виртуальной страницы и выделенной физической страницы. По мере исполнения загруженной части программы происходит соответствующее преобразование виртуальных адресов в физические. При обращении к виртуальной странице, еще не отображенной на соответствующую физическую, система определяет требуемый сегмент, отыскивает в нем необходимую виртуальную страницу и производит ее отображение на некоторую физическую страницу.
Данная схема работы с виртуальной памятью обеспечивает должный компромисс при удовлетворении требований как пользователя, так и ОС. Система имеет возможность эффективно распределять ОП и увеличивать пропускную способность на основе преимуществ страничной по требованию схемы, а пользователь – использовать преимущества модульного программирования и писать сколь угодно большие программы.


 

А также другие работы, которые могут Вас заинтересовать

3838. Определение ускорения свободного падения 146.5 KB
  Определение ускорения свободного падения Цель: Изучение динамики движения тел в поле гравитационного притяжения. Задача: измерение ускорения свободного падения с помощью математического и физического маятников Оборудование: универс...
3839. Обработка результатов измерений 95.21 KB
  Обработка результатов измерений. Табличное значение попадает в полученный нами интервал. Выберем на этой прямой достаточно удаленные друг от друга точки А (0,1;50) и В(0,8;300). По их координатам вычислим массу тележки как угловой коэффициент прямой...
3840. Дослідження параметрів вільних коливань фізичного маятника 141.5 KB
  Дослідження параметрів вільних коливань фізичного маятника Мета: вивчення закономірностей вільних коливань фізичного маятника. Використання комп’ютерного моделювання фізичних процесів у пакеті Interactive Physics...
3841. Математический и физический маятник 42.5 KB
  Цель: изучение зависимости периода колебаний от параметров маятников и измерение на этой основе величины ускорения свободного падения. Оборудования: секундомер, математический маятник (шарик на нити на штативе), физический маятник (кольцо и обруч на...
3842. Перевірка основного рівняння динаміки обертального руху за допомогою маятника Обербека 159 KB
  Перевірка основного рівняння динаміки обертального руху за допомогою маятника Обербека Мета роботи: Експериментальна перевірка основного рівняння динаміки обертального руху. Ознайомлення на дослідах з поняттями момент інерції, кутове прискорення, но...
3843. Принцип действия полупроводникового транзистора 121 KB
  Цель работы: ознакомиться с принципом действия полупроводникового транзистора. Задача: получить выходные характеристики транзистора по напряжению в схеме с общей базой, рассчитать коэффициент усиления транзистора по напряжению. Приборы и прин...
3844. ИЗУЧЕНИЕ МАЯТНИКА МАКСВЕЛЛА 62.5 KB
  ИЗУЧЕНИЕ МАЯТНИКА МАКСВЕЛЛА Цель работы: определение момента инерции маятника Максвелла. Краткая теория. Маятником Максвелла называют однородный диск с валом (тонким стержнем кругового сечения), проходящим через центр масс диска перпендикулярно его ...
3845. Закон сохранения момента импульса 159 KB
  Закон сохранения момента импульса. Закон сохранения момента импульса. Гироскоп. Работа и кинетическая энергия при вращательном движении. Закон сохранения момента импульса. Согласно основному уравнению динамики вращательного движени...
3846. Определение отношения удельных теплоемкостей воздуха методом адиабатного расширения 190.5 KB
  Определение отношения удельных теплоемкостей воздуха методом адиабатного расширения Приборы и принадлежности Закрытый стеклянный баллон с краном, манометр, насос рис. 1 Теория работы и описание прибора Для вещества в любом агрегатном состоянии харак...