Главная страница

Операционные сети сущ. ОС. Обзор содержания дисциплины операционные системы Обсуждение функций и эксплуатационных требований к ос


Скачать 356.76 Kb.
НазваниеОбзор содержания дисциплины операционные системы Обсуждение функций и эксплуатационных требований к ос
АнкорОперационные сети сущ
Дата18.03.2021
Размер356.76 Kb.
Формат файлаdocx
Имя файлаОС.docx
ТипДокументы
#186086
страница3 из 16
1   2   3   4   5   6   7   8   9   ...   16

ОБЩ:=0;


<оставшаяся часть процесса1>; end;

ПРОЦЕСС2:

begin int ЛОК2; ЛОК2:=1; do while (ЛОК2=1) ПиУ(ЛОК2,ОБЩ);

end;

<критический участок>

ОБЩ:=0;


<оставшаяся часть процесса2>; end;

parend; end;
Основной недостаток приемов нижнего уровня – активное ожидание входа в критический участок. На основе ПиУ можно построить МЬЮТЕКС – переменная, которая может находиться в 2-х состояниях – блокированное и неблокированное. Инструмент, реализующий пассивное ожидание – семафоры.
СЕМАФОРЫ

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

Семафор S целочисленная переменная, значения которой могут изменять неделимые (для прикладных процессов) операции P(S) и V(S)

Различают семафоры общие и двоичные

Операция P(S) – попросить ресурс, связанный с семафором S:

begin

S:=S-1;

if S>=0 then <процесс продолжает работать>

else <процесс останавливается и встает в очередь ожидания, связанную с семафором S, процесс остается заблокированным до тех пор пока операция V(S), выполненная другим процессом не разблокирует его>;

end;

Операция V(S) – вернуть ресурс, связанный с семафором S:

begin

S:=S+1;

if S>0 then <процесс продолжает работать>

else <один процесс удаляется из очереди ожидания, получает ресурс и разрешение продолжить работу; продолжает работать либо процесс, который обратился в операции V(S), либо процесс, получивший ресурс>;

end;

Область значений общего семафора S:


-Pr=<S=
Pr = количество конкурирующих процессов, Res = количество единиц ресурса.

При S=-количество конкурирующих процессов: имеем ТУПИК! Область значений двоичного семафора S: -1=<S=<+1

S=+1 – ни один из процессов не находится в своем критическом участке,

S=0 – один из процессов находится в своем критическом участке,

S=-1 – один из процессов находится в своем критическом участке и один процесс – в очереди в семафору S.

Задача ПОСТАВЩИК – ПОТРЕБИТЕЛЬ решается с помощью семафоров

begin int БУФ, $общий семафор – текущее количество свободных буферов$ ЗАНЯТО, $общий семафор – текущее количество занятых буферов$

СИНХРО; $двоичный семафор – гарантирует, что в каждый момент времени только 1 процесс работает с буферными стрелками $

БУФ:=<исходное количество свободных буферов в системе>; ЗАНЯТО:=0<исходное количество занятых буферов в системе>; parbegin

ПОСТАВЩИК:

begin

do while (true)

<приготовить сообщение> P(БУФ); P(СИНХРО);

<послать сообщение> V(ЗАНЯТО); V(СИНХРО);

end; end;

ПОТРЕБИТЕЛЬ:

begin

do while (true) P(ЗАНЯТО); P(СИНХРО);

<получить сообщение>; V(БУФ); V(СИНХРО);

<обработать сообщение>; end; end;

parend; end;
Сложное ожидание – тогда когда надо дождаться один или множество событий и продолжить работу

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

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


  1. Разделяемая управляющая структура данных (централизация управляющей информации)

  2. Набор функций доступа к структуре данных для управления синхронизацией и коммуникациями между процессами (функции – неделимые операции для приложений=реализованы в ядре).

+: 1. Избавляет программиста от деталей реализации работы с разделяемыми данными;

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

Пример реализации: Монитор на основе таблицы синхронизации (ТС)

Принципы:

  1. Синхронизация взаимодействующих процессов осуществляется через анализ и последующее изменение полей ТС.

  2. В ТС представлены все синхронизируемые процессы, упорядоченные по убыванию приоритета.

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

  4. В строке, соответствующей каждому процессу содержится: а) адрес области сохранения; б) переменная состояния процесса (готов/не готов); в) тайм-аут ожидания выделения ресурсов или наступления событий; г) ссылка на список ресурсов, один из которых ожидает процесс; д) события, наступление которых может привести к переключению процессов.




Процесс

Область сохр

Готовность

Таймер

Ресурсы

Событие1

Событие2



СобытиеN

Р1

Обл1

Не готов

0

Список1

0

0




0

Р2

Обл2

Не готов

5

Список2

0

1




0

Р3

Обл3

Готов

0

0




0




0

Р4

Обл4

Не готов

9

0

1

1




1

Р5

Обл5

Готов

0

0

0

0




0

Р6

Обл6

Готов

0

0

0

0

0

0


Функции управления и синхронизации процессов реализуются с помощью процедур монитора: TP, TV, POST,WAIT, которые анализируют и изменяют поля ТС. Номер строки текущего процесса присваивается переменной монитора ТЕКУЩИЙ. Текущим может стать только самый приоритетный процесс из всех готовых к работе.

Логика операций монитора.

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

ТP(указатель на список семафоров ресурсов, указатель на список событий, тайм-аут)


begin

<задержать текущий процесс>;

for i:=1 to <число семафоров в запросе> do if <счетчик i-го семафора >0> then

<взять ресурс из очереди; передать в область сохранения процесса адреса семафора и ресурса; активизировать задержанный процесс>;

end; end;

ТАБЛИЦА[ТЕКУЩИЙ, ГОТОВНОСТЬ]:= НЕ ГОТОВ; ТАБЛИЦА[ТЕКУЩИЙ, ТАЙМЕР]:= ТАЙМ-АУТ; ТАБЛИЦА[ТЕКУЩИЙ, РЕСУРСЫ]:= АДРЕС СПИСКА СЕМАФОРОВ;

<отметить в соответствующих столбцах таблицы заказанные в запросе события>;

<активизировать наиболее приоритетный готовый процесс>; end;

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

ТV(семафор, указатель на ресурс)


begin

<задержать текущий процесс>;

for i:=1 to <число строк в таблице> do

if ТАБЛИЦА[ТЕКУЩИЙ, РЕСУРСЫ]не=0 then

if <список ожидаемых ресурсов содержит запрос на возвращаемый ресурс> then

<передать в область сохранения процесса Pi адрес семафора и ресурса>; for j:=3 to <число столбцов в таблице> do

ТАБЛИЦА[i, j]:= 0;

end;

ТАБЛИЦА[i, ГОТОВНОСТЬ]:=ГОТОВ;

if i<ТЕКУЩИЙ then <активизировать Pi> else <активизировать задержанный процесс> end; end; end; end;

<возвратить ресурс в очередь к семафору>;

<активизировать задержанный процесс>; end;

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

WAIT(список событий, тайм-аут)


begin

<задержать текущий процесс>; ТАБЛИЦА[ТЕКУЩИЙ, ГОТОВНОСТЬ]:= НЕ ГОТОВ; ТАБЛИЦА[ТЕКУЩИЙ, ТАЙМЕР]:= ТАЙМ-АУТ;

<отметить в соответствующих столбцах таблицы заказанные в запросе события>;

<активизировать наиболее приоритетный готовый процесс>; end;

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

POST(событие)


begin

<задержать текущий процесс>;

for i:=1 to <число строк в таблице> do if ТАБЛИЦА[i, СОБЫТИЕ]не=0 then

for j:=3 to <число столбцов в таблице> do ТАБЛИЦА[i, j]:=0;

end;

<переслать в область сохранения информацию о совершившемся событии>; ТАБЛИЦА[i, ГОТОВНОСТЬ]:= ГОТОВ;

if i<ТЕКУЩИЙ then <активизировать Pi> else <активизировать задержанный процесс> end; end; end;

<активизировать задержанный процесс>; end;

Для обеспечения временной синхронизации необходим процесс CLOCK, имеющий бесконечный цикл работы и приоритет, равный приоритету процедур монитора. Процесс использует системный таймер вычислителя и запускает на один цикл работы таймера текущий процесс, после чего процесс CLOCK уменьшает на единичный интервал ненулевые элементы столбца ТАЙМЕР TC, переводит процессы с истекшими тайм- аутами в состояние готовности, выбирает наиболее приоритетный готовый процесс и изменяет согласно выбору переменную ТЕКУЩИЙ.

Алгоритм процесса CLOCK


begin

do while (true) <запустить на 1 цикл работы таймера ТЕКУЩИЙ процесс>

<задержать текущий процесс>;

for i:=1 to <число строк в таблице> do if ТАБЛИЦА[i, ТАЙМЕР]не=0 then

ТАБЛИЦА[i, ТАЙМЕР]:= ТАБЛИЦА[i, ТАЙМЕР]-1; if ТАБЛИЦА[i, ТАЙМЕР]=0 then

for j:=3 to <число столбцов в таблице> do ТАБЛИЦА[i, j]:=0;

end;

<переслать в область сохранения информацию о истекшем тайм-ауте>; ТАБЛИЦА[i, ГОТОВНОСТЬ]:= ГОТОВ;

end; end; end; end;

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


ТУПИКИ


Ситуация, когда процессы ждут друг друга неопределенно много – ТУПИК! Необходимые (но не достаточные) условия тупика:

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

  2. Условие удержания и ожидания ресурсов (процессы удерживают за собой уже выделенные ресурсы и ожидают выделения дополнительных ресурсов).

  3. Условие неперераспределяемости ресурсов (ресурсы нельзя отобрать у процессов, удерживающих их, пока они не будут использованы для завершения работы).

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


Борьба с тупиками:
1. Тупики не возникают
2. Некий процесс обращается к семафору за тем или иным ресурсом, он проверяет приведет ли к тупику. Алгоритм Банкир (стоим в очереди, пока нам не удовлетворят запрос)
3.Тупики в системе редки .
Предотвращение тупиков, сложное занятие оно не очень рационально для использования ресурсов, потеря работы, сложность программирования. Например нарушить одно из 4 условий и тупики исключены

ЛЕКЦИЯ 4. РАСПРЕДЕЛЕНИЕ ВРЕМЕНИ ПРОЦЕССОРА

Главная причина введения принципа мультипрограммирования – стремление компенсировать различие в скоростях ЦП и ВнУ.

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

  1. Разделение времени – обслуживание задач только в периоды выполнения операций В/В более приоритетными процессами==выполнение задач в фоновом режиме (такой режим планирования используется в системах жесткого РЕАЛЬНОГО времени).

  2. Квантование времени 1+выделение кванта времени на обслуживание каждого из процессов рабочей смеси в соответствии с некоторой стратегией. Процессу выделяется квант времени и он выполняется до тех пор пока не произойдет одно из условий: а) истечет квант времени, б) процесс заблокирован операциями В/В, в) процесс завершится, г) процесс вытеснен более приоритетным процессом. При этом процесс либо попадает в очередь готовых процессов (а,г), либо попадает в очередь В/В (б), либо выходит из системы (в). Процесс переводится из очереди заблокированных процессов в очередь готовых процессов при снятии блокировки.


▲t

Алгоритм планирования очередей готовых процессов включает:


  1. Способ выбора готового процесса из очереди готовых процессов Ready.

  2. Способ вычисления размера кванта времени ▲t для выбранного процесса.

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

Статические характеристики:


  1. Объем занимаемой памяти.

  2. Ожидаемое время выполнения.

  3. Ожидаемый объем В/В.

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

Динамические характеристики:


  1. Ресурсы, находящиеся в распоряжении процесса в данный момент.

  2. Общее время ожидания.

  3. Количество процессорного времени, полученного в течение предыдущего периода Т>>▲t (окно наблюдения).

  4. Объем операций В/В в течение предыдущего периода Тв/в>Т>>▲t (окно наблюдения).

  5. Общее время нахождения в системе.

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

  1. Загрузка ресурсов вычислителя.

  2. Времена простоев ресурсов вычислителя.

  3. Пропускная способность.

  4. Времена ожидания заданий пользователей. Различают 3 основных класса алгоритмов планирования:

  1. По наивысшему приоритету (HPF).

  2. Круговорот.

  3. Планирование с обратной связью.

ПЛАНИРОВАНИЕ ПО НАИВЫСШЕМУ ПРИОРИТЕТУ:


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

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

ПЛАНИРОВАНИЕ ПО КРУГОВОРОТУ не использует информацию о приоритетах.

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

ПЛАНИРОВАНИЕ С ОБРАТНОЙ СВЯЗЬЮ использует набор из N очередей готовых процессов, каждая из которых обслуживается в порядке поступления (FCFS).

Новый процесс в системе попадает в 1 очередь.

После получения первого кванта и обслуживания на процессоре поступает во 2 очередь.

После получения каждого последующего кванта и обслуживания на процессоре поступает в очередь со следующим номером.

В очереди N процесс обслуживается до завершения.

Кванты времени с ростом номера очереди увеличиваются ▲t(i)<▲t(i+1), i=1,.,N-1.

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

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

Практика применения алгоритмов планирования.

  1. ОС Реального времени и Встроенные системы используют планирование по наивысшему приоритету.

  2. ОС Разделения времени и Диалоговые системы используют планирование по наивысшему приоритету и круговорот.

  3. ОС Пакетной обработки используют планирование с обратной связью.

МНОГОУРОВНЕВОЕ ПЛАНИРОВАНИЕ


При реализации планирования необходимо выполнение набора работ:

  1. Работа с очередями.

  2. Переключение процессов.

  3. Вычисление приоритетов.

  4. Текущие измерения характеристик процессов.

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

  1. Диспетчер

  2. Краткосрочный планировщик.

  3. Долгосрочный планировщик.

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

Диспетчер – вызывается после обработки прерывания, выбирает процесс из очереди готовых процессов и запускает его.

Краткосрочный планировщик – вызывается, чтобы поставить готовый процесс в очередь готовых процессов (выстраивает очередь готовых процессов для диспетчера).

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

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

ЛЕКЦИЯ 5. УПРАВЛЕНИЕ ПАМЯТЬЮ


Управление памятью – отображение информации в память с помощью 3-х функций:

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

  2. Функция памяти (П) – отображает идентификаторы (программные адреса) в номера физических ячеек памяти (физические адреса – ФА), в которых они находятся.

  3. Функция содержимого/значения (З) – отображает каждый адрес памяти в значение, которое находится по этому адресу.

Имена ПИ Идентификаторы ПА Ячейки ФА Значения З И П З

Результат каждого отображения зависит от времени:

Именующая – не устанавливается до тех пор, пока задание не будет связано с системными модулями и файлами, которые используются в задании.

Памяти – фиксируется после загрузки задания (как правило).

Значения – меняется всякий раз при выполнении команды записи в память. Эта функция полностью определяется алгоритмом программы (пользователем).

Отображения Именующей функции и функции Памяти находятся в ведении системы.

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

Структура программ и распределение памяти связаны и зависят друг от друга!

ОБЪЕДИНЕНИЕ МОДУЛЕЙ


Обработка программ включает этапы:

  1. Компиляция. На вход подается текст программы, на выходе получаем объектный код.

  2. Сборка. На вход подается объектный код, на выходе получаем загрузочныйкод.

  3. Загрузка. На вход подается загрузочный код, на выходе получаем рабочий код. Основная проблема этапов 2 и 3 – объединение модулей (разрешение внешних ссылок). Процесс разрешения ссылок может быть выполнен 3-мя способами:

  1. Объединение различных процедур во время компиляции. Реализуется в большинстве языков программирования.

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

  3. Объединение откладывается до запуска на счет и осуществляется системой автоматически в процессе счета = динамическое разрешение ссылок. Данный способ

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

СПОСОБЫ ОБЪЕДИНЕНИЯ МОДУЛЕЙ


Сборка как предварительный этап.
Группа объектных модулей объединяется в 1 модуль в относительных адресах с началом в нулевой ячейке. Объединенный модуль – переместимый объект и при загрузке в ОЗУ абсолютный адрес первого слова помещается в Базовый регистр. Тогда абсолютный адрес это сумма содержимого базового регистра и относительного адреса в объединенном модуле. После редактирования задание – переместимый модуль загрузки, начинающийся с нулевого адреса.

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

  1. Объектный модуль.

  2. Длина модуля.

  3. Имена описанные в модуле, на которые могут ссылаться другие модули (ссылки внутрь).

  4. Имена не описанные в данном модуле, на которые есть ссылки в данном модуле (ссылки наружу).

Загрузчик, объединяющий модули, реализует объединение объектных модулей, настройку адресов, загрузку объединенной программы в ОЗУ.

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

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

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

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

Узловые моменты привязки приложения к памяти:


  1. Программирования в абсолютных адресах – при написании программы указываются абсолютные адреса (объединение отображений И и П раз и навсегда).

  2. Программирование в символьных обозначениях – компилятор порождает адреса вместо символьных имен.

А) Порождаемые адреса – фиксированные абсолютные адреса (привязка П происходит сразу же за И).

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

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

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

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


  1. Перекрытие программ в памяти (планируется пользователем).

  2. Попеременная загрузка заданий.

  3. Сегментная организация программ.

  4. Страничная организация памяти.

  5. Сочетание сегментной организации программ со страничной организацией памяти.

ПЕРЕКРЫТИЕ ПРОГРАММ


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

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

Проблемы:

Программист не всегда может априори задать описание перекрытий (т.к. может не знать нужно ли присутствовать перекрывающимся модулям в памяти одновременно).

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

ПОПЕРЕМЕННАЯ ЗАГРУЗКА ЗАДАНИЙ


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

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

СЕГМЕНТНАЯ ОРГАНИЗАЦИЯ ПРОГРАММ


Сегментация программ – прием, при котором адресная структура программы отражает ее содержательное членение. Пространство адресов программы разделяется на отрезки – сегменты различной длины, соответствующие содержательно различным частям программы. Сегмент = процедура, область описания данных. При сегментации АДРЕС состоит из 2-х частей:

  1. Имя сегмента S (его номер).

  2. Адрес слова внутри сегмента d (смещение).

Реализация


Каждому заданию (приложению), состоящему из набора сегментов, соответствует ТАБЛИЦА СЕГМЕНТОВ (ТС), в которой для каждого сегмента имеется запись (строка). Адрес ТС хранится в аппаратном РЕГИСТРЕ ТАБЛИЦЫ СЕГМЕНТОВ (РТС) каждого процессора.

В S-й строке ТС (имя сегмента=№строки) находится:

  1. Признак присутствия сегмента в ОЗУ (Пр).

  2. Адрес (Базовый регистр) S-го сегмента (Адрес).

  3. Длина (Граница) сегмента (L).

  4. Биты защиты для контроля доступа к сегменту (БЗ). Доступ к слову [S,d]:

  1. По РТС обращение к ТС.

  2. Проверяется присутствие сегмента в памяти (по признаку Пр)

  3. При наличии сегмента в ОЗУ в S-й строке выбирается Адрес сегмента.

  4. В d-й ячейке выбирается искомое слово.

Если сегмента в ОЗУ нет – происходит прерывание из-за отсутствия сегмента в памяти.


dd




слово






Сегмент





L

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

а) Сегменты могут размещаться в несмежных областях памяти.

б) Не все сегменты должны одновременно находиться в памяти (часть может располагаться на ВнУ).

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

г) Упрощается объединение модулей. Операция установления внешних связей сводится к просмотру таблицы для отыскания адреса (S,d), соответствующего внешней ссылке (не нужны эти функции в редакторе и загрузчике).

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

Б) Высокие накладные расходы на сопровождение миграции сегментов между ОЗУ и внешней памятью. Профилактика: страничная организация памяти!

В) Два обращения к ОЗУ (первое – к таблице за адресом сегмента, второе – к адресуемому объекту внутри сегмента). Существенно снижает быстродействие вычислителя. Профилактика: полностью ассоциативное кэширование адресных ссылок на сегменты (емкость кэша адресных ссылок TLB обычно несколько сотен строк), реализуется с помощью отображения:
1   2   3   4   5   6   7   8   9   ...   16


написать администратору сайта