Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Часть 1.doc
Скачиваний:
4
Добавлен:
26.03.2016
Размер:
4.42 Mб
Скачать

Операционные системы.

Операционные системы различаются особенностями реализации алгоритмов управления ресурсами компьютера, областями использования. Так, в зависимости от алгоритма управления процессором, операционные системы делятся на:

  • Однозадачные и многозадачные

  • Однопользовательские и многопользовательские

  • Однопроцессорные и многопроцессорные системы

  • Локальные и сетевые.

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

  • Однозадачные (MS DOS)

  • Многозадачные (OS/2, Unix, Windows)

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

В зависимости от областей использования многозадачные ОС подразделяются на три типа:

  • Системы пакетной обработки (ОС ЕС)

  • Системы с разделением времени (Unix, Linux, Windows)

  • Системы реального времени (RT11)

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

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

Точного определения мягкого реального времени не существует, поэтому можно отнести сюда все СРВ, не подпадающие в категорию жестких. Так, система мягкого реального времени может не успевать все делать в заданное время, поэтому возникает проблема определения критериев успешности (нормальности) ее функционирования. По числу одновременно работающих пользователей на ЭВМ ОС разделяются на однопользовательские (MS DOS) и многопользовательские (Unix, Linux, Windows 95 - XP) В многопользовательских ОС каждый пользователь настраивает для себя интерфейс пользователя, т.е. может создать собственные наборы ярлыков, группы программ, задать индивидуальную цветовую схему, переместить в удобное место панель задач и добавить в меню Пуск новые пункты. В многопользовательских ОС существуют средства защиты информации каждого пользователя от несанкционированного доступа других пользователей. Многопроцессорные и однопроцессорные операционные системы. Одним из важных свойств ОС является наличие в ней средств поддержки многопроцессорной обработки  данных. Такие средства существуют в OS/2, Net Ware, Widows NT.По способу организации вычислительного процесса эти ОС могут быть разделены на асимметричные и симметричные. Одним из важнейших признаков классификации ЭВМ является разделение их на локальные и сетевые. Локальные ОС применяются на автономных ПК или ПК, которые используются в компьютерных сетях в качестве клиента. В состав локальных ОС входит клиентская часть ПО для доступа к удаленным ресурсам и услугам. Сетевые ОС предназначены для управления ресурсами ПК включенных в сеть с целью совместного использования ресурсов. Они представляют мощные средства разграничения доступа к информации, ее целостности и другие возможности использования сетевых ресурсов. 

Вычислительная среда (система) – это совокупность аппаратуры и операционной среды.

ОС – это преобразователь с языка возможностей аппаратуры на язык пользователя.

Аппаратура:

  • ЦП (центр и ядро системы 4*3 ГГц)

    • Кэш (скорость сравнима со скоростью ЦП)

  • ОЗУ (частота системной шины 0,5-1 ГГц)

  • устройства ввода-вывода

  • каналы ввода-вывода

  • групповые устройства ввода-вывода

Ресурс – это объект, распределяемый (в пространстве либо во времени) внутри системы.

2 способа распределения ресурсов:

  • Централизованный (сейчас основной) – кто-то один отвечает

  • Децентрализованный – каждое приложение отвечает

Основные функции операционной среды.

  1. Обеспечение интерфейса между аппаратурой и прикладными программами

  2. Предоставление средств для работы с большими структурами данных

  3. Распределение времени процессора

  4. Управление оперативной памятью

  5. Обеспечение средствами виртуальной памяти

  6. Управление вводом-выводом

  7. Разделение программных ресурсов (реентерабельные программы – программы, в которых исполняемый код отделен от программы)

  8. Синхронизация

Ключевая цель ОС – эффективное использование ресурсов при хорошем обслуживании задач.

Эксплуатационные требования к ОС:

  1. Надежность – не ниже надежности аппаратуры.

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

  3. Предсказуемость операционных характеристик вычислительной системы – скорость (время) выполнения задач.

  4. Эффективность – ОС должна занимать минимум ресурсов (оперативная память, время ЦП).

  5. Удобство работы пользователя в ОС.

ОС общего назначения как правило использует централизованное управление ресурсами

Все программы ОС и приложений подчиняются главной программе – супервизору (ядру).

Функции супервизора:

  1. Контроль и управление выполнения задач пользователей.

  2. Организация связи между программами.

  3. Защита ОС и пользователей.

  4. Обслуживающие программы супервизора – наиболее часто используемые функции, которые обладают низкой трудоемкостью.

Преимущества супервизора:

  1. Простота организации – все основные функции в одном месте.

  2. Простота реализации функций управления и защиты – все обращения с системным функциям и внешней среде проходят через супервизор.

Недостатки супервизора:

  1. Супервизор может быть узким местом среды – при интенсивном обращении к супервизору за служебными функциями.

  2. Трудность внесения изменений в функции супервизора – все функции супервизора тесно связаны.

Практически все современные аппаратные платформы имеют некоторый типичный набор средств аппаратной поддержки ОС, в который входят следующие компоненты:

  •  средства поддержки привилегированного режима;

  •  средства трансляции адресов;

  •  средства переключения процессов;

  • система прерываний;

  • системный таймер;

  • средства защиты областей памяти.

Процессы.

Аппаратура ЭВМ работает параллельно.

ОС выполняет множество задач.

Процесс – формализация идеи независимости

Работа (задание)

Т.к. работы выполняются независимо, то и процессы должны быть независимы.

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

Свойства процессов:

  1. Независимые работы

  2. Параллельное выполнение работ

  3. Различные скорости выполнения работ

Иногда процессам необходимо обмениваться информацией (межпроцессное взаимодействие).

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

Процесс – это пространство состояний набора переменных (переменные состояния).

Состояния описываются заданием значений всех переменных.

Действие – это присваивание значений некоторым переменным состояния.

Функция действия – это функция, отображающая состояние в действие.

Обычно функция действия – это код программы.

Переменные состояния – это ячейки памяти с данными.

Процесс – это некая программа, данные, которые она обрабатывает и некий дескриптор, описывающий состояние процесса в реальной вычислительной среде.

Дескриптор – это некоторая структура данных, в которой содержится информация о процессе

  1. Переменная состояния (определяет текущее состояние процесса):

    1. готов к работе – в очереди готовых процессов

    2. работающий (текущий) – на процессоре

    3. заблокирован – в очереди ожидания (операции ввода-вывода, операции синхронизации)

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

  3. Информация о ресурсах, которыми владеет процесс.

  4. Разделяемые переменные, структуры данных, которые необходимы для общения с другими процессами.

Общение между процессами.

Процессы разделяют ресурсы (ЦП, внешние устройства, переменные, структуры и т.д.)

Критический ресурс – это такой ресурс, который допускает обслуживание только одного процесса в каждый момент времени.

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

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

Критические участки должны быть взаимно исключаемыми. Нужен некий механизм синхронизации.

Механизм синхронизации.

Свойства:

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

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

Инструменты синхронизации.

  1. Инструменты, основанные на неделимых операциях центрального процессора (нужны в многопроцессорных вычислительных системах).

  2. Инструменты, основанные на низкоуровневых примитивах – низкоуровневые методы синхронизации (семафоры).

  3. Высокоуровневые инструменты синхронизации.

Два источника параллелизма:

  1. Независимые потоки команд (различные программы).

  2. Несвязанные потоки данных.

Синхронизация на основе операций блокировки памяти.

Все операции в ЦП – неделимые для процессов.

Алгоритм Деккера (для синхронизации двух процессов).

{

bool c1, c2;

int q;

c1 = c2 = 0;

q = 1;

//c1, c2 - намерение процесса войти в критический участок

parbegin

процесс 1: {

c1 = 1;

while (c2 == 1) {

if (q == 2) {

c1 = 0;

while (q == 2) { }

c1 = 1;

}

}

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

c1 = 0;

q = 2;

<оставшаяся часть первого процесса>

}

процесс 2: {

c2 = 1;

while (c1 == 1) {

if (q == 1) {

c2 = 0;

while (q == 1) { }

c2 = 1;

}

}

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

c2 = 0;

q = 1;

<оставшаяся часть второго процесса>

}

parend

}

Минус– активное ожидание входа в критический участок.

Метод, основанный на неделимой операции «проверить и установить» - ПИУ – TSL

ПИУ(локальная переменная, общая переменная) => лок = общ; общ = 1;

begin int общ; общ := 0;

parbegin

П1:

begin

int лок1;

лок1 := 1;

do while (лок1 = 1)

ПиУ(лок1, общ)

end

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

общ := 0;

<остальное>

end

П2:

begin

int лок2;

лок2 := 1;

do while (лок2 = 1)

ПиУ(лок2, общ)

end

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

общ := 0;

<остальное>

end

parend

end

Минус– активное ожидание

Механизмы с пассивным ожиданием входа в КУ.

Реализуется через средства, расположенные в супервизоре.

Семафоры – прием, позволяющий реализовать пассивное ожидание.

Бывают общие и двоичные.

Семафор – целочисленная переменная, над которой определены 2 неделимые операции: операция – запросить ресурс либо вход в КУ, и – вернуть ресурс или выйти из КУ.

1)

2) Если , то процесс продолжает работать

3) Если , то процесс останавливается и встает в очередь

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

1)

2) Если , то процесс продолжает работу

3) Если , то один из процессов удаляется из очереди ожидания, получает ресурс и конкурирует с текущим процессом за право получить время ЦП.

Количество конкурирующих процессов ( – количество ресурсов в системе

Возврат в прикладной процесс произойдет после завершения запроса к супервизору.

Двоичный семафор

1 – ни один процесс не находится в КУ

0 – один процесс находится в своем КУ

-1 – 1 процесс в КУ, 1 процесс ожидает вход в КУ

Алгоритм синхронизации 2-х процессов:

begin

int своб; своб = 1;

parbegin

П1:

begin

<начало П1>

P(своб)

КУ П1

V(своб)

<конец П1>

end

П2:

begin

<начало П2>

P(своб)

КУ П2

V(своб)

<конец П2>

end

parend

end

Задача поставщик-потребитель (используется при вводе-выводе)

Используется общий семафор

2 процесса:

  1. поставляет данные для обработки

  2. ведет обработку данных

Для общения процессов используется буфер обмена.

Общие семафоры:

  1. Буф – количество свободных буферов

  2. Зан – количество занятых буферов

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

begin int буф, зан, синхро;

буф = <количество буферов в системе, выделенных для решения задач>

зан = 0;

синхро = 1;

parbegin

П1(поставщик):

begin

do while (true)

<приготовить данные>

P(буф)

P(синхро)

<взять буфер из списка>

<послать сообщение>

V(зан)

V(синхро)

end

end

П2(потребитель):

begin

do while (true)

P(зан)

P(синхро)

<получить сообщение>

V(буф)

V(синхро)

<обработка сообщения>

end

end

parend

end

В нетривиальных системах очень часто требуется организация сложного ожидания:

  1. Одного из нескольких ресурсов

  2. Нескольких ресурсов

  3. Одного из нескольких событий

  4. Нескольких событий

  5. 1+2+3+4

2 и 4 необходимо реализовывать через 1 и 3.

Мониторы.

Монитор– набор управляющих структур и процедуры доступа к ним. Эти процедуры неделимы для прикладных процессов и реализованы в ядре/супервизоре.

Монитор позволяет организовать сложные ожидания и взаимодействия процессов.

Ожидания:

  • 1 из ресурсов из списка

  • 1 из событий из списка

  • ограничения ожидания по времени

Монитор, основанный на таблице синхронизации.

Таблица синхронизации

Проц

Обл. сохр

Готовн

Тай

Ресур

Соб1

Соб2

СобN

P1

Обл1

Не гот

0

Спис1

0

1

1

P2

Обл2

Готов

0

0

0

0

0

P3

Обл3

Не гот

5

Спис3

1

1

1

PM

ОблM

Готов

0

0

0

0

0

PM– системный процесс

Процедуры работы с ТС:

  1. TP(указатель на список ресурсов, указатель на список событий, таймаут) – запрос всего

  2. TV(ресурс) – возврат ресурсов

  3. TWAIT(указатель на список событий, таймаут) – запрос событий

  4. TPOST(событие) – извещение о наступлении события

Процесс CLOCK

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

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

for i=1 to <число семафоров в процессе> do

if семафор(i)>0 then

<взять ресурс из списка ресурсов>

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

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

end

end

табл[текущий, готовность]="не готов"

табл[текущий, таймер]=Tout

табл[текущий, ресурсы]=указатель на список ресурсов

<отметить в столбцах заказанные события>

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

end

TV(семафор, ресурс)

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

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

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

<передать в область сохранения Pi адрес семафора и адрес ресурса>

for j=3 to <количество столбцов в таблице> do

табл[i, j]=0

end

табл[i, готов]=да

if i<текущий then

<активизировать Pi>

else

<активизировать текущий>

end

end

end

<возвратить ресурс в систему>

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

end

TWAIT(указатель на список событий, Tout)

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

табл[текущий, готовность]= не готов

табл[текущий, таймер] = Tout

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

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

end

TPOST(событие)

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

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

if табл[i, событие] <> 0 then

for j = 3 to <количество столбцов в таблице> do

табл[i, j] = 0

end

<отметить в области сохранения Pi наступление события>

табл[i, готовность] = готов

if i < текущий then

<активизировать Pi>

else

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

end

end

end

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

end

Процесс CLOCK

begin

do while (true)

<запустить на один цикл работы таймера текущий процесс>

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

if табл[i, таймер] then

табл[i, таймер]--

if табл[i, таймер] = 0 then

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

табл[i, j] = 0

end

табл[i, готов] = да

end

end

текущий = <самый приоритетный готовый процесс>

end

end

Тупики.

Ситуация, в которой процессы ждут друг друга неопределенно долго.

Вычислительная система = множество состояний + множество процессов

Процесс– это функция, отображающая одно состояние в другое

Необходимые условия тупика:

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

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

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

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

Тупик может наступить при выполнении всех 4 условий. Это необходимые условия.

Направления борьбы с тупиками:

  1. Предупреждение (предотвращение) тупиков (нарушается одно из условий – стратегия Хавендера). Минус – неэффективное использование ресурсов.

  2. Обход тупика (алгоритм банкира).

  3. Тупики допускаются в вычислительных системах.

Обнаружение тупика и восстановление после него.

  1. Стратегия Хавендера– нарушение одного из необходимых условий.

    1. Нарушать нельзя (иначе - однопрограммность).

    2. Все ресурсы, необходимые для обработки, запрашиваются сразу (в одном запросе). Минус– неэффективное использование ресурсов (простаивание ресурса по времени).

    3. Разрешение насильного изъятия ресурсов у процессов. Минусы:

      1. Возможность потери проделанной работы процессом, у которого изъяты ресурсы.

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

    4. Для всех процессов вводится упорядочение всех ресурсов по типам, запрос ресурсов возможен только в соответствие с номерами типов (в порядке, предусмотренном типами). Минусы:

      1. Упорядочение ресурсов по типам может быть неудобно для некоторых процессов.

      2. Усложняется разработка приложений.

      3. Неэффективное использование ресурсов (простаивание ресурсов).

  2. Алгоритм банкира– обход тупика.

Менее жесткие ограничения (по сравнению со стратегией Хавендера) => лучшее использование ресурсов.

Алгоритм:

Исходная информация:

  1. Имеется K единиц ресурса.

  2. Имеется N процессов.

  3. Для каждого процесса известна потребность в ресурсах:

    1. Максимальная потребность – MAXР.

    2. Количество выделенных ресурсов – КВР.

    3. Остаток потребности в ресурсах – ОР.

Проверка безопасности состояния при выделении ресурса (по запросу).

begin

сбоврес = k

for i = 1 to N do

begin

свобрес -= КВР[i]

ОР[i] = MAXР[i] - КВР[i]

тупик[i] = true

end

признак = true

do while признак

begin

признак = false

for i = 1 to N do

begin

if ОР[i] <= свобрес then

begin

свобрес += КВР[i]

признак = true

тупик[i] = false

end

end

end

if свобрес = K then

<состояние системы безопасное>

else

<состояние небезопасно>

end

  1. Обнаружение и восстановление.

Установить факт тупика.

Определить количество процессов, вовлеченных в тупик.

Определить типы ресурсов, заблокированных в тупике.

Определение жертв-процессов.

Изъятие ресурсов у жертв => потеря проделанной работы.

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

Распределение времени процессора.

Основная причина введения принципа мультипрограммирования – стремление компенсировать существенно различные скорости ЦП и внешних устройств.

В вычислительной среде имеется смесь активных задач.

Различают 2 режима мультипрограммирования:

  1. Режим разделения времени.

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

  1. Режим квантования времени.

Нет деления на основные и фоновые задачи.

Планирование времени процессора включает:

  1. Способ выбора готового процесса на исполнение

  2. Способ вычисления величины кванта

В общем случае каждому процессу ставится в соответствие число – приоритет (важность процесса).

Величина приоритета определяется статистическими и динамическими параметрами процесса.

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

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

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

      • Ожидаемый ввод/вывод

      • Коэффициент важности задачи

Динамические:

      • Ресурсы, принадлежащие процессу

      • Общее время выполнения задачи

      • Количество процессорного времени, полученного за некоторый последний отрезок времени

      • Объем ввода/вывода за последний период времени

      • Время пребывания в заблокированном состоянии

При планировании используют следующие показатели производительности:

  1. Загрузка ресурсов

  2. Время простоя

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

  4. Время выполнения заданий

3 класса алгоритмов планирования:

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

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

  3. Планирование с обратной связью – в системах пакетной обработки

Многоуровневое планирование

Разбивает задачу планирования на подзадачи

Планирование включает:

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

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

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

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

Элементы многоуровневого планирования:

  1. Диспетчер

  2. Кратковременный планировщик (более трудоемкий)

  3. Долговременный планировщик (самый трудоемкий) – пересчитывает приоритеты

Управление памятью.

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

  1. Именующая функция => отображает имя объекта, данное пользователем, в однозначный идентификатор информации.

  2. Функция памяти => отображает идентификатор в программные адреса.

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

Имена пользователей, данные объектам –

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

  1. Компиляция

  2. Сборка

  3. Загрузка

Разрешение ссылок может быть выполнено несколькими способами:

  1. Объединение модулей при компиляции

  2. Объединение модулей

    1. до загрузки на этапе сборки

    2. во время загрузки

  3. Объединение модулей откладывается до запуска на счет и реализуется системой (ОС) в процессе счета.

Исходная информация о модулях (объединяемых):

  1. Модуль

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

  3. Имена, описанные в модуле, на которые возможны ссылки из внешних модулей (ссылки внутрь).

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

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

Работа сборщика.

Модули располагаются друг за другом.

При сборке составляется таблица сборщика.

Имя

Ссылка разрешена

Адрес объекта / список неразрешенных ссылок

Имя 1

1

Адрес объекта, именуемый имя1

Имя2

0

Указатель на список неразрешенных ссылок

После редактирования сборная программа существует в виде переместимого модуля загрузки, начинающегося с 0 адреса.

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

Функция памяти – выдает переместимому модулю реальные ячейки памяти.

  1. Статическое распределение

Привязку реализует

    1. программист, компилятор до загрузки

    2. загрузчик во время загрузки

  1. Динамическое распределение

Привязка происходит во время выполнения программы

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

  1. Программирование в абсолютных адресах => объединения отображений И и П раз и навсегда.

  2. Программирование в символьных обозначениях.

Компилятор порождает адреса вместо символьных имен:

    1. Порождаемые адреса – фиксированные абсолютные.

Привязка П происходит сразу же за И.

    1. Порождаемые адреса допускают настройку и при загрузке получают абсолютные значения.

Привязка к памяти происходит во время загрузки.

    1. Порождаемые адреса допускают настройку и получают абсолютные значения при каждом обращении к адресуемым объектам.

Привязка П реализуется при выполнении.

1, 2a, 2b – статическое

2c – динамические

Стратегии:

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

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

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

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

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

1, 2, 3… (Переписать)

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

Пространство адресов памяти делится на блоки фиксированной длины.

Программа – набор страниц той же длины.

N страниц – (n-1) страниц полные, n-ая неполная

Адрес: P – номер страницы

d – смещение внутри сегмента

Задание: таблица страниц – содержит описание страниц программ всего задания

ЦП – регистр в таблице страниц (РТСтр – таблица страниц текущего задания)

Признак (в памяти или нет)

Биты защиты

Адрес

P – номер строки

Плюсы:

  1. Перемещение страниц – нетрудоемкая задача (достаточно иметь список свободных страниц).

Минусы:

  1. Для доступа к адресуемому объекту необходимо 2 обращения к ОЗУ.

Борьба: кеширование отображения контекст (идентификатор задачи) + P <-> адрес страницы

Кэш – ПАК

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

  2. Фрагментация при страничной организации памяти внутренняя (внутри страницы возможны неиспользуемые поля). При сегментной организации программ – внешняя (между сегментами возможны неиспользуемые поля).

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

  1. ОЗУ – разбивается на страницы фиксированной длины

  2. Задание – совокупность сегментов с кодом и данными

  3. Каждый сегмент делится на страницы той же длины

Адрес: S, P, d – номер сегмента, страницы, смещение

ЦП – РТС (регистр таблицы сегментов)

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

Адрес таблицы страниц

Плюсы: все преимущества сегментной организации программ и сегментной организации памяти.

Минусы:

  1. Доступ к объекту требует 3 обращения к памяти.

Борьба – кэширование отображения контекст + S + P <-> физический адрес страницы.

Кэш – ПАК

Виртуальная память.

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

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

Реализация ВП в том числе основана на аппаратных средствах.

Регистры, кэш, ОЗУ, HDD.

i < j:

  1. M(i) быстрее M(j)

  2. M(i) меньше M(j)

  3. Удельная стоимость единицы памяти M(i) больше M(j)

Перемещение:

  1. Страниц (4,5 метод)

  2. Сегментов (3 метод)

Сегментация – логический подход к пространству адресов.

Страничная организация – физический подход.

Основные вопросы реализации ВП:

  1. Как распределить память каждого уровня.

  2. Какие критерии применять при подкачке адресуемых объектов.

  3. Какие критерии применять при вытеснении АО.

Стратегии распределения памяти для сегментов переменной длины.

Задачи: найти стратегию распределения, которая

  1. хорошо загружает память

  2. при минимальных издержках распределяющих алгоритмов.

Решения:

  1. Вести список свободной памяти.

  2. Уплотнение множества фрагментов один экстент (непрерывная область)

Список свободной памяти – список пустот в нашей оперативной памяти.

Различают 3 классических способа ведения списков.

  1. Список пустот, упорядоченных по возрастанию адресов

Пустота (указатель на следующую пустоту, длина)

Позволяет соседние пустоты объединять в одну пустоту.

Существует 2 стратегии поиска подходящей пустоты:

    1. Выбор первой подходящей пустоты ().

    2. Выбор самой подходящей пустоты ().

Во многих случаях первая стратегия лучше загружает оперативную память, чем вторая.

  1. Список пустот, упорядоченных по размерам пустот

При этом: 1 стратегия поиска дает 2-ю.

Пустота (указатель на следующую пустоту, длина)

Модификация способа 2:

Список пустот дополняется дополнительным списком (дополнительными указателями).

указывает на 1-ю пустоту размера

Минусы:

    1. Список трудно сопровождать.

    2. Трудно объединить соседние пустоты.

  1. Организация пустот системой расщепления.

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

Сопровождается список.

Некоторые списки могут быть пустыми.

Поиск пустоты размера :

    1. Поиск начинается в списке . Если он не пуст, то выделяет пустоту.

    2. Если нет, поиск продолжается в списке . Если что-то есть, то пустота делится пополам, пустоты отправляется в список , а вторая часть пустоты предоставляется запросу.

    3. Если список S пуст, то запрос неудовлетворен.

Плюсы:

  1. Легко сопровождать списки.

  2. Легко объединять соседей.

Если не найдена пустота нужного размера:

  1. Отказать в запросе

  2. Вытеснить какой-нибудь сегмент

  3. Выполнить операцию уплотнения (перегруппировка пустот и их объединение в единое целое)

Целесообразность:

    • Сумма пустот больше размера запроса

    • Если ЦП не загружен работой

    • Пустоты должны быть относительно велики (определяет трудоемкость уплотнения)

Стратегии подкачки:

  1. Стратегия подкачки по запросу (по прерыванию).

  2. Опережающая подкачка – при известной связи между сегментами/страницами.

Экономия на обработке прерываний.

Издержки – можно подкачать лишнего.

Стратегии вытеснения:

  1. Случайный выбор.

Часто вытесняются нужные объекты.

  1. FIFO.

Часто вытесняются нужные объекты.

  1. Вытесняется по давности использования (LRU – Least Recently Used).

Имеет трудоемкое сопровождение.

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

  1. Оптимальное вытеснение – нереализуема.

Должна вытеснять объект, к которому не будет обращений дольше всего.

Используется для сравнения других стратегий.

  1. Предписанные пользователем приоритеты.

  2. Приоритеты, задаваемые задачам системой на основе измерений.

  3. Смешанные методы – основаны на здравом смысле.

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

    1. АО неактивной задаче, АО только для чтения.

    2. АО неактивной задаче, АО только для записи.

    3. АО управляемый программой, к которой не было обращений уже секунд.

    4. АО задачи, ожидающий в/в.

    5. АО любой другой задачи.

Управление внешней памятью (на магнитном диске).

Время доступа к конкретной записи складывается из:

  1. Время поиска цилиндра (время позиционирования каретки с МГ)

  2. Время поиска записи на дорожке

  3. Время чтения записи наших данных

Планировщик:

  1. Анализ позиционных связей различных запросов

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]