русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Управление памятью при сегментном распределение


Дата добавления: 2013-12-23; просмотров: 1149; Нарушение авторских прав


 

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

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

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

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

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



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

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

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

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

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

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

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

Логический адрес при сегментной организации памяти представлен парой (Nвс, Oвс), где Nвс – номер сегмента, Oвс – смещение внутри сегмента. Смещения в логическом и физическом сегментах равны, т.е. Oвс= Oфс. При преобразовании адреса производятся следующие действия:

1) из специального регистра процессора (регистр таблицы сегментов) извлекается начальный адрес таблицы сегментов активного процесса (Aнтс).

2) на основе этого адреса и номера виртуального сегмента Nвс в таблице сегментов определяется адрес нужной записи.

3) из этой записи извлекается базовый физический адрес необходимого сегмента Aбф;

4) линейный физический адрес вычисляется как сумма базового физического адреса сегмента и смещения в сегменте: Aлф = Aбф + Oфс.

В данном случае нельзя обойтись операцией конкатенации, как это

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

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

1) имеет место фрагментация на уровне сегментов, возникающая из-за непредсказуемости размеров сегментов;

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

3) более медленное по сравнению со страничной организацией преобразование адреса т.к. операция сложения медленее операции конкатенации.

Применялся в ОС OS/2 первого поколения.

 



<== предыдущая лекция | следующая лекция ==>
Управление памятью при страничном распределение | Управление памятью при сегментно-страничном распределение


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.