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

При таком методе виртуальное адресное пространство процесса делится на части – сегменты, размер которых определяется с учетом смыслового значения содержащейся в них информации. Отдельный сегмент может представлять собой подпрограмму, массив данных и т.п. Деление виртуального адресного пространства на сегменты осуществляется компилятором на основе указаний программиста или в соответствии с принятыми в системе соглашениями. Максимальный размер сегмента определяется разрядностью виртуального адреса, например 32-разрядная организация ЦП равна 4Гб. При этом максимально возможное виртуальное адресное пространство процесса представляет собой набор из N виртуальных сегментов, каждый из которых размером 4Гб. В каждом сегменте виртуальные адреса находятся в диапазоне (00000000 – FFFFFFFF). Сегменты не упорядочены друг относительно друга, так что общего линейного виртуального адреса для сегментов не существует.

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

1. Базовый физический адрес в ОЗУ

2. Размер сегмента

3. Правила доступа к сегменту

4. Признаки модификации, присутствия и обращения к данному сегменту.

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

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

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

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

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

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

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

23 <СЕГМЕНТНО-СТРАНИЧНОЕ РАСПРЕДЕЛЕНИЕ ПАМЯТИ>

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

1) Линейным виртуальным адресом, который равен сдвигу одного байта относительно границы общего линейного виртуального пространства.

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

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

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

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

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

КЭШ ПАМЯТЬ

КЭШ – это способ совместного функционирования двух типов памяти, отличающихся временем доступа и способом хранения данных, который за счет динамического копирования в быстрое запоминающее устройство наиболее часто используемой информации из более медленного ЗУ, позволяет ускорить доступ к данным, хранящимся на диске. Сейчас существует один КЭШ, т.к. сейчас делают КЭШ большого объема и помещают его рядом с процессором.

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

Наши рекомендации