Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Сегментный способ



Программа разбивается на логические части – сегменты – и каждому сегменту выделяется физическая память. Каждый программный модуль м.б. сегментом. Логически обращение к сегменту – имя сегмента и смещение от его начала. Физически имя соотв. адресу, с которого сегмент размещается в памяти. Преобразует имя сегмента в его номер система программирования. Для каждого сегмента она задаёт его объём – это нужно ОС.

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

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

В памяти Адрес начала Длина Права доступа
      R-X

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

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

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

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

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

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

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

Дисциплина замещения позволяет определить сегмент, который должен быть перемещён во внешнюю память, либо просто замещён:

1. FIFO (first in first out) –

2. LRU (least recently used) – дольше других неиспользуемый

3. LFU (least frequently used – реже других используемый

4. Random – случайный выбор

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

Для 2-й и 3-й ЦП должен иметь доп. Средства – для фиксации обращений.

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

Плюсы сегментной организации:

Размещать части программ в памяти по необходимости

Некоторые программные модули можно сделать разделяемыми между задачами

Минусы:

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

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

Сегментный способ применён в OS/2 v.1.





Дата публикования: 2015-10-09; Прочитано: 269 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...