Запуск таймера прерываний




Сион

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

15.1 допущения

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

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

15.2 Пример

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

o

PERATING

С

YSTEMS

[В.

ERSION

1.00]

ВСЕМИРНАЯ ПАУТИНА

.

ОСТЕП

.

Орг

М

ЭХАНИЗМ

: Один

DDRESS

T

Выкуп

T

ИНТЕЛЛЕКТУАЛЬНАЯ СОБСТВЕННОСТЬ

: Я

NTERPOSITION

Я

С

p

OWERFUL

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

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

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

void func

int x = 3000; / / спасибо, Перри.
х = х + 3

// вот строка кода, которая нас интересует

...

Компилятор превращает этот код в сборку, которая может выглядеть
примерно так (в x86 ассамблеи). Использовать objdump на Linux или otool
на Mac, чтобы разобрать его

128: movl 0x0 (%ebx), %eax

; загрузить 0 + ebx в eax

132: addl $0x03, %eax

;добавить 3 в реестр eax

135: movl %eax, 0x0 (%ebx

; храньте eax назад к mem

Этот фрагмент кода является относительно простым; оно предполагает, что
адрес х был помещен в регистр ebx, а затем загружает значение
по этому адресу в регистр общего назначения регистр eax с помощью мовл
инструкция (для “длинное” движение). Следующая инструкция добавляет 3 в eax,
и окончательная инструкция сохраняет значение в eax возвращается в памяти в то
же самое место.

На рис. 15.1 (стр. 4), наблюдать, как код и данные закладываются
в процессе адресного пространства; три инструкция кода последовательности
расположенном по адресу 128 (в код раздела, вверху), и значение
переменной x по адресу 15 КБ (в стеке внизу). В
рисунке, начальное значение x 3000, как показано на его месте в стеке.

Когда эти инструкции выполняются, с точки зрения процесса,

следующие доступы памяти имеют место.

Инструкция Fetch по адресу 128

Выполнить эту инструкцию (загрузить с адреса 15 КБ

Инструкция Fetch по адресу 132

Выполнить эту инструкцию (нет ссылки на память

Получить инструкцию по адресу 135

Выполните эту инструкцию (store to address 15 KB

c 2008-18, A

RPACI

USSEAU

T

ХРИ

Ми

ASY

p

IECES

М

ЭХАНИЗМ

: Один

DDRESS

T

Выкуп

16KB

15KB

14KB

4KB

3KB

2KB

1КБ

0KB

Стек

(бесплатный

Куча

программный код

128
132
135

мовл с 0x0(%и ebx),%eax версий
приставной 0x03, %еах
мовл %еах,0х0(%регистр ebx

Рис. 15.1: Процесса И Его Адресным Пространством

С программы зрения, его адресное пространство начинается с адреса 0
и вырастает максимум до 16 кбайт; память ссылки генерирует
должны быть в пределах этих границ. Однако, виртуализация памяти, ОС
хочет поставить этот процесс где-либо в физической памяти, не
обязательно по адресу 0. Таким образом, у нас есть проблема: как мы можем перенести
этот процесс в памяти таким образом, что прозрачный процесс? Как
мы можем обеспечить иллюзию виртуального адресного пространства, начиная с 0, когда
в реальности адресного пространства находится в какой-то другой физический адрес?

o

PERATING

С

YSTEMS

[В.

ERSION

1.00]

ВСЕМИРНАЯ ПАУТИНА

.

ОСТЕП

.

Орг

М

ЭХАНИЗМ

: Один

DDRESS

T

Выкуп

64KB

48KB

32KB

16KB

0KB

(не используется

(не используется

операционная система

Стек

Код
Кучи

(выделено, но не используется

Перемещенный Процесс

Рис. 15.2: физическая память с одного перебазировались процесс

Пример того, что физическая память может выглядеть после того, как этот
процесс адресное пространство был помещен в память на рисунке 15.2.
На рисунке, вы можете увидеть ОС, используя первый слот оперативной памяти
для себя, и что она переезжает процесс из примера выше,
в слот начиная с физического адреса памяти 32 КБ. Другие два
слота свободны (16 КБ-32 КБ и 48 КБ-64 КБ).

15.3 динамическое (аппаратное) перемещение

Чтобы получить некоторое представление о аппаратный адрес,
мы сначала обсуждаем ее первое воплощение. Введен в первый раз-обмен
машин в конце 1950-х годов-это простая идея, именуемые базы и границ;
метод также называют динамическими переездом, мы будем использовать оба
понятия как взаимозаменяемые [SS74].

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

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

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

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

физический адрес = виртуальный адрес + база

c 2008-18, A

RPACI

USSEAU

T

ХРИ

Ми

ASY

p

IECES

М

ЭХАНИЗМ

: Один

DDRESS

T

Выкуп

есть

СТОРОНА

: С

OFTWARE

-

ОСНОВЫВАЮЩИЙСЯ

Р

ELOCATION

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

Например, если инструкция было загрузить с адреса 1000 в
регистр (например, мовл 1000, в регистре %eax), и адресное пространство программы
были загружены, начиная с адреса 3000 (а не 0, так как программа думает),
загрузчик будет переписать инструкцию к зачету каждый адрес на 3000
(например, мовл 4000, в регистре %EAX). Таким образом, простой статический перенос
процесса адресного пространства достигается.

Однако статическое перемещение имеет множество проблем. Первое и самое
главное, что он не обеспечивает защиту, так как процессы могут генерировать плохие
адресов и таким образом незаконно доступ к другому процессу или даже ОС памяти; в
общем, аппаратная поддержка, вероятно, необходима для защиты [ДС+93].
Еще один минус заключается в том, что после размещения, трудно потом изменить местоположение
адресного пространства в другое место [М65].

Каждый памяти, порожденный процесс-это виртуальное адресное;
оборудование, в свою очередь, добавляет содержимое Базового регистра по этому адресу
и в результате получается физический адрес, который может быть выдан в памяти
системы.

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

128: movl 0x0 (%ebx), %eax

Программный счетчик (РС) устанавливается равным 128; когда оборудование нужно
принести эту инструкцию, он сначала добавляет значение Базового регистра
в 32 KB (32768), чтобы получить физический адрес 32896; аппаратные то
выбирает инструкция с этого физического адреса. Затем процессор
начинает выполнение инструкции. В какой-то момент, процесс затем выдает
груз из виртуального адресного 15 КБ, в котором процессор принимает и снова
добавляет в базовый регистр (32 КБ), получать конечный физический адрес
47 КБ, и таким образом необходимой информации.

Преобразование виртуального адреса в физический адрес-это именно тот
метод, который мы называем преобразование адресов, то есть оборудование занимает
виртуальному адресу процесса, считает, что он ссылается и преобразует его в
физический адрес, который является, где данные фактически проживает. Потому что это
перевод адреса происходит во время выполнения, и потому мы можем двигаться
адресные пространства даже после того, как процесс будет запущен, техника
часто называется динамическое перемещение [М65].

o

PERATING

С

YSTEMS

[В.

ERSION

1.00]

ВСЕМИРНАЯ ПАУТИНА

.

ОСТЕП

.

Орг

М

ЭХАНИЗМ

: Один

DDRESS

T

Выкуп

T

ИНТЕЛЛЕКТУАЛЬНАЯ СОБСТВЕННОСТЬ

: Ч

ARDWARE

-

ОСНОВЫВАЮЩИЙСЯ

Д

YNAMIC

Р

ELOCATION

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

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

Теперь вы можете спросить: Что случилось с границы (предела)
зарегистрировать? В конце концов, разве это не подход к основанию и границам? Действительно, так и есть. Как
вы уже догадались, границы зарегистрироваться здесь, чтобы помочь с
защитой. В частности, процессор сначала проверяет, что память ссылка
находится вблизи границы, чтобы убедиться, что это законно; в простом примере выше,
границы регистр должен всегда быть равным 16 кбайт. Если процесс генерирует
виртуальные адреса, превышающее границы, или тот, который является отрицательным, то
ЦП будет вызывать исключение, и процесс, вероятно, будет прекращено.
Точки границы таким образом, чтобы убедиться, что все адреса, генерируемые
в процессе являются юридические и в “рамках” процесса.

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

; по мере того как мы начинаем более изощренную память

методы управления, мы будем добавлять больше сетей к ММУ.

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

Примеры Переводов

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

Виртуальный адрес

Физический адрес

16 КБ

1 КБ

17 KB

Ошибка (вне границ

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

c 2008-18, A

RPACI

USSEAU

T

ХРИ

Ми

ASY

p

IECES

М

ЭХАНИЗМ

: Один

DDRESS

T

Выкуп

есть

СТОРОНА

: Д

АТА

С

Перемирие

- Т

ОН

Ф

РЗЭ

Л

IST

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

15.4 Аппаратная Поддержка: Сводка

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

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

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

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

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

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

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

Есть ли что-то, кроме "хаос”, что можно “посеять"? [W17

o

PERATING

С

YSTEMS

[В.

ERSION

1.00]

ВСЕМИРНАЯ ПАУТИНА

.

ОСТЕП

.

Орг

М

ЭХАНИЗМ

: Один

DDRESS

T

Выкуп

Требования к аппаратуре

Примечания

Привилегированный режим

Необходимы для предотвращения процессов режима пользователя
от выполнения привилегированных операций

Регистры Base / bounds

Нужна пара регистров в ЦП для
решения перевод и границы проверяет

Возможность перевода виртуальных адресов

Схемы для выполнения переводов и проверки

и проверьте, если в пределах границ

пределы; в этом случае, довольно просто

Привилегированные инструкции

ОС должна иметь возможность устанавливать эти значения

обновление Base / bounds

перед запуском пользовательской программы

Привилегированные инструкции для регистрации

ОС должна уметь сказать, что

обработчик исключений

код для запуска при возникновении исключения

Возможность повышения исключений

Когда процессы пытаются получить доступ к привилегированным
инструкциям или вне границ памяти

Рис. 15.3: Динамическое Перемещение: Аппаратные Требования

15.5 Проблемы Операционной Системы

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

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

Давайте посмотрим на пример. На рис. 15.2 (стр. 5), Вы можете ознакомиться с операционной системы
, используя первый слот оперативной памяти для себя, и что она переезжает
процесс из примера выше, в слот-начиная с физического
адреса памяти 32 КБ. Другие два слота свободны (16 кбайт-32 Кбайт и 48
KB64 КБ); таким образом, бесплатный список должен состоять из этих двух записей.

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

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

c 2008-18, A

RPACI

USSEAU

T

ХРИ

Ми

ASY

p

IECES

М

ЭХАНИЗМ

: Один

DDRESS

T

Выкуп

Требования к ОС

Примечания

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

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

Управление Base / bounds

Необходимо правильно установить Base / boundings при переключении контекста

Обработка исключений

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

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

(ПЕЧАТНАЯ ПЛАТА.) Аналогичным образом, когда ОС возобновляет выполнение процесса
(или руководит ею в первый раз), она должна установить значения базы и границ на
процессор правильные значения для этого процесса.

Отметим, что если процесс останавливается (т. е. не работает), это
возможно для операционной системы для перемещения адресное пространство из одного места в
памяти в другое достаточно легко. Для перевода процесса в адресное пространство ОС,
первая deschedules процесс; затем, ОС копирует адресное пространство из
текущего местоположения в новое; и, наконец, операционной системы обновления сохраненной
базы регистра (в процессе структуры), чтобы он указывал на новое местоположение. Когда
процесс возобновляется, ее (новую) базу реестр восстанавливается, и он начинает
бежать снова, не замечая, что его инструкции и данные находятся теперь в COM
совершенно новое место в памяти.

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

Рис. 15.5 (стр. 11) иллюстрирует многое из оборудования/ОС взаимодействие
в сроки. На рисунке показано, что ОС делает во время загрузки, чтобы подготовить
машину к использованию, и то, что происходит, когда процесс (процесс
а) начинает работать; обратите внимание, как своей памяти переводов обрабатываются
аппаратные средства без вмешательства ОС. В какой-то момент прерывания от таймера
происходит, и ОС переключается на процесс B, который выполняет “плохой нагрузки” (на
незаконное адреса памяти); в этой точке, ОС должна увлекаться,
завершает процесс очистки, освобождая Б памяти и удаление
его запись из таблицы процесса. Как вы можете видеть из диаграммы, мы
по-прежнему следуя основным подходом общества прямого исполнения. В большинстве
случаев, операционная система просто устанавливает оборудование надлежащим образом и позволяет
работать непосредственно на процессор; только когда процесс хулиганит ли ОС
должны участвовать.

o

PERATING

С

YSTEMS

[В.

ERSION

1.00]

ВСЕМИРНАЯ ПАУТИНА

.

ОСТЕП

.

Орг

М

ЭХАНИЗМ

: Один

DDRESS

T

Выкуп

Загрузка ОС

Оборудования
(режиме ядра)
инициализировать ловушку таблице

помните адреса.

системный вызов обработчика
таймера обработчик
незаконным мэм-доступ к обработчику
недопустимая инструкция обработчика

запуск таймера прерываний

запуск таймера; прерывания после Х МС
инициализации процесс
инициализации в списке

OS @ run

Аппаратура

Программа

(режим ядра

(пользовательский режим

Для начала процесса a

выделить запись в таблице процесса
выделить память для процесса
набора базы/границы регистров
вернуться-из-ловушка

восстановление регистров
переехать в пользовательском режиме
перейти к в (начальный) ПК

Выполнение процесса a

Инструкция Fetch

Перевести виртуальный адрес

и выполните fetch

Выполнить инструкцию

Если явная загрузка / хранение

Обеспечить-адрес "в поле";
перевести виртуальный адрес

и выполните нагрузку / магазин

...
Таймер прерываний
двигаться в режиме ядра
перейти к обработчика прерываний

Ручка ловушку
звонок переключатель() рутины

сохранить рэгс(а) в прок-структуры(а)
(в том числе базы/границы)
восстановить рэгс(Б) от тез-структуры(Б)
(в том числе базы/по часам

Возвращение из ловушки

(into B

восстановить регистры Б
переехать в пользовательском режиме,
перейти к Б ПК

Процесс B выполняется

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

Справиться с ловушкой

Решили завершить процесс B
де-выделить память Б
бесплатно Б вступления в процесс таблица

Рис. 15.5: Ограниченное Прямое Исполнение Протокола (Динамическое Перемещение

c 2008-18, A

RPACI

USSEAU

T

ХРИ

Ми

ASY

p

IECES

М

ЭХАНИЗМ

: Один

DDRESS

T

Выкуп

15.6 резюме

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

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

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

К сожалению, этот простой метод динамического переезд имеет
свои недостатки. Например, как видно на рис. 15.2 (стр. 5), в
передислоцировали процесс использования физической памяти от 32 КБ до 48 КБ;
однако, поскольку процесс стека и кучи не слишком большой, все пространство
между двумя растрачиваются. Этот тип отходов обычно называют
внутренней фрагментацией

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

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

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

o

PERATING

С

YSTEMS

[В.

ERSION

1.00]

ВСЕМИРНАЯ ПАУТИНА

.

ОСТЕП

.

Орг

М

ЭХАНИЗМ

: Один

DDRESS

T

Выкуп

Ссылки на литературу

[M65]” о перемещении динамической программы " W. C. McGee. Системах IBM журнал, Том 4:3,
1965, стр. 184-199. Этот документ представляет собой хороший итог начальной работы на динамическое перемещение, а также
некоторые основы статического перемещения.
[Р90] “перемещающего загрузчика для МС-Дос.Исполняемые файлы EXE " Kenneth D. A. Pillay.
Микропроцессоры и архив микросистем, том 14:7 (сентябрь 1990). Пример перемещающего
загрузчика для МС-Дос. Не первый, а просто относительно современный пример того, как работает такая система.
[SS74] “защита информации в компьютерных системах” И. Сэлцер и М. Шредер.
CACM, июль 1974. Из этого документа: “концепции базы и границ зарегистрируйтесь и аппаратно-интерпретируется
дескрипторы появился, по всей видимости, самостоятельно, между 1957 и 1959 годами по три проекта с различных
целей. В M. I. T., Маккарти предложил базы и границ понятия как часть памяти системы защиты
необходимо произвести разделение времени осуществимо. IBM независимо разработанной базы и границ зарегистрироваться в качестве
механизма, позволяющего надежных мультипрограммных стрейч (7030) компьютерной системы. В Барроуз,
Р. Бартон предположил, что аппаратно-интерпретируется дескрипторов будет оказывать прямую поддержку для именования
правила применения языков более высокого уровня в компьютерной системе B5000.” Мы нашли эту цитату на Mark
Smotherman классная история [S04]; ознакомиться с ними для получения дополнительной информации.
[S04] “система поддержки звонок” от Mark Smotherman. Май 2004. people.cs.clemson.edu/
mark/syscall.html

. Аккуратная история поддержки системных вызовов. Smotherman также собрал некоторые
ранние истории о предметы, такие как прерывания и других интересных аспектах истории вычислительной техники. Увидеть его веб-страницы для
более подробной информации.
[ДС+93] “эффективные программные неисправности изоляции” исполнителя Robert Wahbe, Стивен Лукко, Томас
Э. Андерсон, Сьюзен л. Грэхэм. СОСП ' 93. Потрясающий документ о том, как можно использовать компилятор поддержку
, чтобы привязать памяти ссылки из программы, без аппаратной поддержки. В статье разожгло
интерес к программным методам для выделения памяти ссылок.
[W17] ответ на сноску: "есть ли что-то, кроме опустошения, которое можно нанести?” по
Waciuma Wanjohi. Октябрь 2017. Удивительно, этот предприимчивый читатель нашел ответ через гугл по
n-грамм инструмент просмотра (доступно по следующему адресу: https://books.google.com/ngrams).
Ответ, благодаря г-ну Wanjohi: “это только приблизительно с 1970 года, что ’сеять смуту’ был более
популярен, чем ’отмщения’. В 1800-х годах, слово сеять почти всегда следует ’его/их
мщение.” Видимо, когда вы творили, вы не так хороши, но, по крайней мере, wreakers есть несколько
вариантов сейчас.

c 2008-18, A

RPACI

USSEAU

T

ХРИ

Ми

ASY

p

IECES

М

ЭХАНИЗМ

: Один

DDRESS

T

Выкуп



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-06-26 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: