Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SPPO_shpora_final_ver_1.pdf
Скачиваний:
41
Добавлен:
30.03.2015
Размер:
1.19 Mб
Скачать

Второй пользователь

4

6

Третий пользователь

5

8

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

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

Недостатки алгоритма банкира

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

Алгоритм банкира исходит из фиксированного количества ресурсов.

Он требует, чтобы число работающих пользователей оставалось постоянным

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

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

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

30.ИЕРАРХИЯ ЗАПОМИНАЮЩИХ УСТРОЙСТВ ВС, ХАРАКТЕРИСТИКИ УСТРОЙСТВ И СВЯЗЬ, МЕХАНИЗМЫ СОЗДАНИЯ ИЕРАРХИИ. ПРИМЕРЫ.

Иерархия ЗУ. В современных ВС основная память не является однородной, а состоит из иерархии устройств памяти M1, M2, ... , Mn, различающихся своими скоростными характеристиками и размерами. Характеристики каждого уровня устройств этой иерархии, следовательно:1) Время доступа (Mi) < Время доступа (Mi+1) 2) Размер (Mi) <

Размер (Mi+1) 3) Стоимость (Mi) > Стоимость (Mi+1), где ( i = 1, 2, ..., n-1). При работе с множеством ЗУ различного типа аппаратура и ПО проектируются так, чтобы наиболее

часто используемая информация хранилась в M1 с целью приближения производительности ВС к производительности системы с однородной памятью того же типа M1, но объема, равного объему Mn. Существует две базовые схемы соединения ЦП и внеш. вспомогательной памяти в иерархию: подчиненная (ведомая) и распределенная. При распределенной организации вся основная память непосредственно доступна как для обмена со вспомогательной памятью, так и для ЦП при выполнении им операций выборки и записи. Подчиненная организация предпочитает, что устройство M1 является напрямую доступным для ЦП устройством, к которому имеет доступ только сам ЦП, а связь со вспомогательной памятью ограничивается в общем случае более медленными уровнями основной памяти. При записи данных на любой уровень Mi аппаратура автоматически обеспечивает появление новой копии в ЗУ уровней Mi+1, ..., Mn путем передачи информации через иерархию. При выборке данных с уровня Mi они также запоминаются на всех уровнях Mi-1, ..., M1 для более быстрого доступа при использовании в будущем. Эта схема предпочитает использование определенной дисциплины замещения, если очередной уровень оказывается заполненным. При замещении информации на каком-либо уровне Mi ее копии остаются на следующих уровнях и/или во вспомогательной памяти. В ВС используется также комбинации этих двух схем обмена между уровнями иерархии.

44

31 Способы распределения памяти: статическое и динамическое распределение, связные и несвязные распределения. Сравнение.

Регистр GDTR

 

Память

 

Статическое

и

динамическое

31

 

0

 

┌──────────────┐

распределение

памяти.

Два

уровня

┌────────┬───────────────┐

 

│ Предел │ Базовый

адрес ├─┬──── ├──────────────┤───

распределения памяти:

 

 

 

└────┬───┴───────────────┘

 

│ Деск

 

 

 

 

 

├──────────────┤ │

1)

на

 

уровне

долгосрочного

└────────────────────

 

+

├─────

 

 

│ Дескриптор 1 │ G

планирования

память

распределяется

 

 

 

├──────────────┤ │

 

 

 

│ . . . . .

│ T

статически,

 

 

 

 

 

 

 

└────

├──────────────┤───

 

 

 

 

 

 

 

 

│ Дескриптор K │

 

 

 

 

 

 

 

 

Регистр IDTR

 

 

 

2)

на

уровне

краткосрочного

┌────────┬───────────────┐

 

31

 

0

 

планирования - динамически.

 

└────┬───┴───────────────┘

 

│ Деск

 

│ Предел │ Базовый

адрес

├─┬──── ├──────────────┤───

Статический

 

 

алгоритм

 

│ Дескриптор 1 │ I

 

 

 

 

 

├────────────── ┤ │

 

 

 

 

 

 

 

 

└────────────────────

 

+

├─────

распределения

 

 

памяти

 

 

 

│ . . . . .

│ T

 

 

15┌────────────┐

0

├──────────────┤ │

 

 

 

 

 

статистическим

└──── ├─────────предопределяется

Регистр LDTR 4

0

 

│ Дескриптор M

методом

настройки

адресов.

При

└────────────┘

 

 

│ Селектор

0

 

использовании

этого

 

метода

31

 

 

 

Теневой регистр

 

 

 

 

 

 

 

 

 

 

┌─ ─ ─ ─ ┬ ─ ─ ─ ─ ─ ─ ─ ┐

 

необходимой

программе

оперативная

Предел │ Базовый адрес ├─┬──── ├──────────────┤───

└─ ─

┬ ─ ┴ ─ ─ ─ ─ ─

─ ─ ┘ │

│ ДескрипА

память назначается ей до начала

├──────────────┤ │ к з

│ Дес криптор 1 │ │ т а

│ D в а

выполнения

программы, а все адреса

└────────────────────

+

├─────

настраиваются так, чтобы отразить это

│ │ о и

│ . . .

│ T н ч

 

 

├──────────────┤ │ й

назначение.

Статическое

│ Дескриптор N │

 

 

└────

├──────────────┤───

распределение памяти выполняется при

 

└──────────────┘

трансляции программы и остается неизменным в ходе ее выполнения. В ВС статически обычно выделяется память для размещения резидентных программ (например, компонентов ядра ОС), системы таблиц. При выполнении программы статически выделяется память для размещения ее кода и глобальных данных, буферов ввода/вывода. Плюсы: 1) во время выполнения не требуется никаких доп. средств управления памятью 2) нет необходимости прерывать выполнение программы для запросов к системе 3) отпадают вопросы утилизации. Минусы: использование только статического распределения памяти ограничивает возможности системы: 1) не позволяет организовать рекурсивные вычисления 2) не позволяет работать со структурами данных, размер которых зависит от вводимой или вычисляемой в программе информации, - память всегда должна выделяться по максимуму. Поэтому возникает необходимость динамического распределения памяти. Возможность динамического распределения памяти обеспечивается динамической настройкой адреса (настройка происходит во время выполнения программы, непосредственно предшествуя обращению к памяти). Динамическая настройка делает возможным динамическое распределение памяти, то есть память может выделяться для данных и других компонентов программы и освобождаться во время ее выполнения. Динамически память может выделяться автоматически и по запросам, выдаваемым программой. Автоматически выделяется память для размещения локальных данных процедур при их вызовах, для сохранения служебной информации и передачи параметров. Кроме того, в программе могут использоваться специальные операторы запроса на выделение памяти на уровне обращений к операционной системе или операторов языка программирования. При динамическом распределении памяти объекты размещаются в «куче». Динамическое выделение в Си: malloc, calloc, realloc и освобождение: free.

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

45

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

При использовании динамического распределения памяти может возникнуть проблема появления “мусора” и висячих ссылок. Висячая ссылка-это указатель на элемент кучи, который является свободным, но программа считает, что этот элемент распределен, и она может его использовать. Мусор - это элементы памяти, которые числятся занятыми, но недоступны для использования программе, которой принадлежит куча.

Связные и несвязные распределения памяти: Первые ВС требовали связного

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

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

32

Сегментная организация памяти. Страничная организация памяти. Сегментно-страничная организация памяти. Аппаратная поддержка в процессорах Intel.

46

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

 

┌────────┬──┐

┌────────────┬─────────────┬──────────┐

CR3 = PDBR (page Directory Base Register) – 20-ти

┌──┤ PDBR │ 0│

Таблица

Страница

│ Смещение │

разрядный регистр,

в котором

хранится

корневая

└────────┴──┘

└────┬───────┴───────┬─────┴─────┬────┘

 

 

 

 

 

 

 

 

 

таблица

страниц

(каталог

страниц/таблица

страниц

 

┌────┴────┬──╥───────┴───┬──┐

 

Таблица 00║

Страница

00│

первого уровня). юююююююВ этой таблице хранится

 

└──────┬──┴──╨───────┬───┴──┘

│ ┌──────────────────────┘

 

 

 

┌──────┘

1024

записи

(каталог страниц

занимает

1 страницу).

│ │Каталог страниц │

Таблицы страниц

 

Физическая

│ │

 

┌───────────────────┘

 

 

Каждая запись содержит ссылку на таблицу страниц,

└ +─┌──────── ─┐┌───────

 

 

 

 

 

память

──

 

 

 

 

┌───────────┐

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00000h──┐

где

хранятся

адреса

физических

страниц.

Корневая

├───────────┤ │

 

PTE

40 0

│ PDE - 0

├┘│

 

┌─────────────┐

страница

содержит

1024

32-х

битных

дескриптора,

└─ ├───────────┤

 

 

 

│ . . .

│ │

├─────────────┤

называемых элементами каталога

страниц PDE (Page

 

├───────────┤ │

PTE -

0

 

 

│PDE-Таблица├─ + ┌─────────────┐───┤

Directory Entry). Каждый из них адресует подчиненную

 

├───────────┤ │

│ . . .

.... │

 

│ . . .

│ │

├─────────────┤───┤

таблицу страниц. Каждая из этих таблиц содержит 1024

 

└───────────┘│

│ TEСтраница├ 0─────

 

+─├──────

 

│ PDE-1023

├┐└─

├──────────┤───┘

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

├───. . .

 

──┤

 

│Страничн│

32-х

битных

дескриптора, называемая

элементами

 

 

└ ┌───────────┐

│ │

 

 

 

PTE

- 0

│───┘

 

└─╞══Байт══╡

таблицы страниц. PTE (Page Table Entry). Каждый PTE

 

 

├───────────┤

 

 

 

кадр │

 

 

. . .

 

 

 

├────────┤

содержит

адрес

страничного

кадра в

физической

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

памяти.

 

 

 

 

 

 

 

 

 

 

 

├───────────┤

 

 

 

.... │

 

 

 

 

 

 

 

 

 

 

 

PTE-1023 │

 

 

 

Основное

применение

страничной

организации

 

 

└───────────┘

 

 

 

└────────┘

памяти связано с организацией виртуальной памяти. Независимо от того, содержит ли логическое адресное пространство задачи один или несколько сегментов, операционная система может разделить линейное адресное пространство на страницы. Для операционной системы страницы являются удобными элементами распределения и перераспределения памяти, поскольку все они имеют одинаковый размер. Они обеспечивают традиционный и удобный способ реализации виртуальной памяти. Как и сегментация, страничная организация памяти связана с преобразованием виртуального адреса в физический адрес, выдаваемый на шину адреса. Но в страничном преобразовании базовым объектом памяти служит блок фиксированного размера 4 Кбайта (Intel), называемый страницей. При разрешенном страничном преобразовании адреса линейное адресное пространство в 4 Гбайт, которые может адресовать процессор при использовании 32-разрядных адресов, подразделяется на 1 Мбайт страниц по 4 Кбайта каждая. Физическая память также разделяется на страницы соответствующего размера (их иногда называют страничными кадрами, программы кадрируются). Пространство виртуальных адресов практически всегда много больше пространства физически реализованной памяти, которая составляет, например, от 1 до 16 Мбайт. При организации виртуальной памяти отсутствующие в физической памяти страницы хранятся обычно во внешней памяти (для этого чаще всего служат накопители на жестких магнитных дисках). Фиксированный размер страниц позволяет в любой момент времени загрузить недостающую виртуальную страницу в любой страничный кадр физической памяти. Формат элемента таблицы страниц(32-хразрядный):

Собственно преобразование линейных адресов в физические состоит из следующих действий:

-Старшие 10 бит 31 - 22 линейного адреса, дополненные двумя младшими нулями, служат индексом PDE.

-Средние 10 бит 21 - 12 линейного адреса, дополненные двумя младшими нулями, индексируют таблицу страниц PTE. Элемент PTE содержит 20-битный базовый адрес страничного кадра в физической памяти.

Этот базовый адрес из элемента PTE объединяется с младшими 12-ю битами линейного адреса, образуя 32-х битный физический адрес.

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

47

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

┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐

│ | | │ | | | │ │ | │ | │ │ адрес страничн кадра|Avail|0 0|D|A|PCD|PWT|U\S|R\W|P|

└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘

 

+

Линейный

LDT

адрес

TI=

GDT

LDTR

 

Базовый адрес

сегмента

GDTR

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

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

Дескрипторные таблицы. 1) GDT (Global Descriptor Table) – общесистемная дескрипторная таблица – к ней могут обратиться все программы. Размер таблицы – количество дескрипторов*8 2) IDT (Interrupt Descriptor Table) – дескрипторная таблица прерываний (заменяет вектор прерываний). В ней последовательно хранятся дескрипторы прерываний. Элементы таблицы прерываний называются шлюзами – gate. 3) LDT (Local Descriptor Table) – локальная дескрипторная таблица – принадлежит задаче. Ей может распоряжаться только 1 задача.

В сегментных регистрах хранятся индексы дескрипторов в таблице (селекторы сегментов)

15

 

3

2

1

 

0

PRL Requested Privilege Level – запрашиваемый

 

 

уровень привилегий;

TI

Table

Indicator

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

Index

 

TI

 

RPL

выбирается индекс: если TI=0, то GDT, TI=1, то LDT.

 

 

Для выбора таблицы и дескриптора в ней

 

 

 

 

 

 

 

 

 

 

 

 

 

 

используются два

поля:

поле

TI является

индикатором таблицы и показывает, из какой таблицы выбирается дескриптор (если TI=0, то обращение производится к глобальной таблице, при TI=1 - к локальной), а 13-битовое поле Index служит индексом массива и определяет нужную строку-дескриптор в таблице. Двухбитовое поле RPL запрашиваемого уровня привилегий не участвует в выборе дескриптора, а привлекается для контроля привилегий в механизме защиты. Значение селектора с полями Index=0 и TI=0, выбирающего первый зарезервированный элемент таблицы GDT, допустимо, но такой селектор называется пустым селектором, а соответствующий ему дескриптор - пустым дескриптором, так как он не описывает никакого сегмента, поэтому любая попытка использования пустого селектора, загруженного в сегментный регистр, для формирования адреса приводит к прерыванию программы. Между селектором и определяемым им дескриптором существует прямая связь: каждое значение селектора выбирает только один дескриптор. Изменение всего нескольких бит в сегментном регистре может иметь очень серьезные последствия для адресации памяти, значение селектора может оказаться бессмысленным. Например, индекс может указывать на несуществующую строку в таблице, тип сегмента может оказаться несоответствующим типу сегментного регистра и т.п.

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

48

Адрес должен включать:S (сегмент), P (страница), d (смещение) (S, P, d)-виртуальный адрес. Имеются 2 типа таблиц – таблицы сегментов и таблицы страниц. Для минимизации кол-ва обращений к памяти те строки таблиц, к которым постоянно происходит обращение, загружаются в специальную кэш-память.

Трансляция адреса. Seg (дескриптор сегмента): Offset (смещение) – сегментная трансляция адреса (переходит от многосегментного адресного пространства к линейным адресам) – есть страницы?

– нет – данный 32-х разрядный линейный адрес и есть физический, отправленный на шину адреса

- есть страничная трансляция – через каталог таблица строится, опять же получаем физический адрес.

Сегментация памяти в реальном режиме

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

Логические адреса, используемые в программе, являются двухкомпонентными: первый компонент представляет собой номер параграфа, с которого начинается сегмент, которому принадлежит адресуемый объект, второй компонент - это смещение внутри сегмента. Эти два компонента адреса представляют собой сегментный адрес (или просто сегмент) и смещение. В этом случае для получения 20-разрядного линейного адреса к сегментному адресу приписывается справа четыре нуля (то есть номер параграфа умножается на 16 - его длину). Полученный таким образом 20-разрядный адрес представляет собой абсолютный адрес начала сегмента. Для получения физического адреса нужной ячейки памяти к этому адресу прибавляется смещение внутри сегмента. Логический адрес = <Сегмент: Смещение> Начало сегмента в физической памяти всегда выравнивается на начало параграфа, то есть сегментный адрес всегда кратен 16. При работе в реальном режиме вся оперативная память доступна программе, не существует средств ее защиты и каких-либо ограничений на диапазон используемых адресов. Поэтому в программе может быть установлено любое значение сегмента адреса. Следовательно, одному и тому же физическому адресу памяти может соответствовать несколько логических адресов в программе. Архитектура процессоров i80x86, работающих в реальном режиме, предполагает хранение сегментного компонента адреса в сегментных регистрах: CS - сегмент кода; DS - сегмент данных; ES - дополнительный сегмент данных; SS - сегмент стека. Простая сегментация памяти в реальном режиме обладает следующими особенностями: - сегменты, определяемые одними лишь сегментными регистрами, имеют всего два атрибута: начальный адрес и максимально допустимый размер; - размещение сегментов в памяти произвольно, они даже могут перекрывать друг друга; - программа может обращаться по любому адресу памяти для выполнения любой операции, нет защиты от несанкционированного доступа; нет никаких аппаратных средств контроля правильности использования адресов, нет никаких препятствий даже для обращения к несуществующей памяти. Основными недостатками адресации памяти в реальном режиме являются следующие: - ограниченное адресное пространство; - свободный доступ любых программ к любым областям памяти, что представляет потенциальную опасность (в случае ошибки адресации) не только для самой программы, но и для целостности операционной системы. Эти недостатки устранены в схеме адресации в защищенном режиме.

Сегментация в защищенном режиме

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

49

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

таблицы.

33. Общие принципы организации виртуальной памяти. Управление виртуальной памятью: стратегии загрузки, стратегии размещения, стратегии замещения. Пример реализации в Intel.

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

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

50

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

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

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

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

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

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

выбор наименее подходящего блока).

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

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

-блок управления памятью процессора, реализующий сегментную и страничную организацию памяти на основе использования дескрипторов;

-включение бита присутствия, показывающего, находится ли блок в оперативной памяти или требуется его подкачка с диска в дескрипторы сегментов и страниц;

-механизм особого прерывания при необходимости загрузки блока (сегмента или страницы);

-наличие в дескрипторах битов, показывающих использование блока:

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

- возможность рестарта команд, вызвавших ошибку обращения к несуществующему

блоку (сегменту или странице).

34. Средства защиты памяти: изоляция адресных пространств. Поддержка в Intel.

Можно выделить следующие подходы к защите памяти: 1) Изоляция адресных пространств (процесс может видеть только свою память). 2) Кольцевая защита (по уровням привилегий).

51

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