Главная » Просмотр файлов » Жмакин А.П. Архитектура ЭВМ (2006)

Жмакин А.П. Архитектура ЭВМ (2006) (1186252), страница 28

Файл №1186252 Жмакин А.П. Архитектура ЭВМ (2006) (Жмакин А.П. Архитектура ЭВМ (2006)) 28 страницаЖмакин А.П. Архитектура ЭВМ (2006) (1186252) страница 282020-08-27СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 28)

Так как TLB хранит адреса 32 страниц по 4 Кбайт, то непосредственно дос­тупными становятся физические адреса 128 Кбайт памяти.

7.1.3. Защита памяти

В х86 предусмотрены два вида защиты памяти: на уровне сегментов и на уровне страниц.

Защита памяти на уровне сегментов

В *86 определено понятие привилегии для сегмента и установлены 4 уровня привилегий PL (рис. 7.7), которые задаются номерами от 0 (наиболее защи­щенный) до 3 (низший).

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

Выше отмечалось, что основой организации памяти *86 является сегмент. С каждым сегментом (данных, кода или стека) ассоциируется уровень приви­легий DPL и все, что находится внутри этого сегмента, имеет данный уровень привилегий. DPL располагается в байте доступа дескриптора сегмента, по­этому его называют уровнем привилегий дескриптора (Descriptor Privilege Level), однако правильнее считать его уровнем привилегий сегмента.

Уровень привилегий выполняющегося кода называется текущим уровнем привилегий CPL (Current Privilege Level или Code Privilege Level) и он задает­ся полем RPL селектора в сегментном регистре CS. Значение CPL можно считать уровнем привилегий процессора в текущий момент времени, т. к. при передаче управления сегменту кода с другим уровнем привилегий процессор будет работать на новом уровне привилегий.

Каждый селектор выбирает точно один дескриптор и, соответственно, один сегмент, но конкретный сегмент могут идентифицировать несколько селекто­ров ("альтернативное именование"). Младшие два бита селектора содержат поле запрашиваемого уровня привилегий RPL (Requested Privilege Level). Это поле не влияет на выбор дескриптора, но учитывается при контроле приви­легий.

Таким образом, текущее состояние системы защиты характеризуется сле­дующими признаками:

Е CPL — уровень привилегий выполняемого кода, размещается в поле RPL сегментного регистра кода CS;

О DPL — уровни привилегий для каждого из восьми открытых сегментов, располагаются в байте доступа дескрипторов, помещенных в "теневые ре­гистры";

О RPL — определяют уровни привилегий источника селектора, размещают­ся в полях RPL сегментных регистров.

Процессор постоянно контролирует, обладает ли текущая программа доста­точным уровнем привилегий, чтобы:

□ выполнять некоторые команды;

□ обращаться к данным других программ;

□ передавать управление внешнему (по отношению к программе) ко командами передачи управления типа FAR.

В системе команд существуют специальные привилегированные команды, которые могут выполняться процессором, работающим только на уровне привилегий 0. При попытке выполнить их на другом уровне привилегий ге­нерируется прерывание 13 — нарушение общей защиты.

К привилегированным относятся команды:

□ останов процессора;

□ сброс флага переключенной задачи;

□ загрузка регистров дескрипторных таблиц;

□ загрузка регистра задачи;

□ загрузка слова состояния машины;

□ модификация флага прерываний IF*;

□ команды ввода/вывода*.

Последние две группы команд (отмеченные *) не обязательно выполняются на нулевом уровне, достаточно, чтобы уровень привилегий программы был выше уровня привилегий ввода/вывода, определяемого полем IOPL в регист­ре EFLAGS.

Защита доступа к данным

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

Контроль реализуется двумя способами. Во-первых, проверка привилегий осуществляется при загрузке селектора в один из сегментных регистров дан­ных — DS, ES, FS или GS. Если значение DPL того сегмента, который выби­рает селектор, численно меньше CPL, процессор не загружает селектор и формирует нарушение общей защиты. Во-вторых, после успешной загрузки селектора при использовании его для фактического обращения к памяти про­цессор контролирует, разрешена ли для этого сегмента запрашиваемая опе­рация (чтение или запись). Кроме того, при обращении контролируется зна­чение запрашиваемого уровня привилегий RPL, причем обращение разреша­ется, если DPL > max(RPL, CPL), иначе формируется прерывание 13.

Обращение к сегменту стека возможно, если RPL = DPL = CPL, причем сег­мент стека должен иметь разрешение на запись— бит W в байте доступа должен быть установлен.

Защита сегментов кода

Межсегментная передача управления происходит по командам jnp, call, ret, int, iret. Для передачи управления существуют жесткие ограничения: пере­давать управление в общем случае можно только в пределах своего уровня привилегий, т. е. DPL целевого дескриптора должен быть точно равен CPL (см. рис. 7.8).

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

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

Когда управление передается подчиненному сегменту, биты поля RPL реги­стра CS не изменяются на значение поля DPL дескриптора нового сегмента кода, а сохраняют прежнее значение. Только в этой единственной ситуации биты поля RPL регистра CS не соответствуют битам поля DPL дескриптора текущего выполняемого сегмента кода.

При использовании подчиненных сегментов сохраняется одно ограниче­ние— значение DPL дескриптора подчиненного сегмента всегда должно быть меньше или равно текущему значению CPL. Другими словами, передача управления подчиненному сегменту разрешается только во внутренние, более защищенные сегменты. Если бы это ограничение нарушалось, то возврат в вызывающую программу был бы вызовом неподчиненного более защищен­ного сегмента, что никогда не разрешено.

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

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

При этом, если вызываемая программа имеет более высокий уровень приви­легий, чем текущая, то для нее по команде call создается новый стек, пози­ция которого определяется из сегмента состояния задачи TSS. В этот стек последовательно записываются: старые значения SS и ESP, параметры, пере­носимые из старого стека, старые CS и EIP. По команде ret происходит воз­врат к старому стеку.

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

Селектор, определяющий шлюз вызова, можно загружать только в сегмент­ный регистр CS для передачи управления сегменту кода на другом уровне привилегий.

Защита памяти на уровне страниц

В отличие от 80386, процессоры 80486 и Pentium имеют дополнительные по­ля в элементе страничной таблицы [3]. Формат строки СТ i80486 представлен на рис. 7.10, сравните его с форматом на рис. 7.6.

Кроме используемых в i80386 полей:

□ Р — бит присутствия; П R/W — чтение/запись;

□ U/S — пользователь/супервизор;

□ А — бит доступа;

□ D — признак записи на страницу;

□ резерв ОС

введены биты управления кэшированием:

□ PCD — запрет кэширования страницы;

□ PWT — сквозная запись.

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

□ ограничение адресуемой области;

□ контроль типа.

Ограничение адресуемой области. Для страниц и сегментов привилегии интерпретируются по-разному: для сегментов— 4 уровня, для страниц — только 2, определяемые битом U/S. При U/S = 0 страница имеет уровень су­первизора, иначе — уровень пользователя. На уровне супервизора работают обычно операционные системы, драйверы ВУ, а также располагаются защи­щенные данные (например, страничные таблицы). Уровни привилегий сег­ментов отображаются на уровень привилегий страниц: если значение CPL равно 0, 1 или 2, то процессор работает на уровне супервизора, при CPL = 3 — на уровне пользователя. На уровне супервизора доступны все страницы, а на уровне пользователя — только страницы уровня пользователя.

Контроль типа. Механизм защиты распознает только два типа страниц: с доступом только по считыванию (R/W = 0) и с доступом по считыва­нию/записи (R/W = 1), причем в 80386 ограничение по записи действительно только для уровня пользователя. Программа уровня супервизора игнорирует значение бита R/W и может записывать на любые страницы. В отличие от 80386, процессор 80486 разрешает защитить от записи страницы уровня пользователя в режиме супервизора: установка в регистре CR0 бита WR = 1 обеспечивает чувствительность режима супервизора к защищенным от запи­си страницам режима пользователя.

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

7.2. Мультизадачность

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

Для реализации мультизадачности необходимо:

□ располагать быстродействующим процессором;

□ процессор должен аппаратно поддерживать механизм быстрого переклю­чения задач;

□ процессор должен аппаратно поддерживать механизм защиты памяти;

□ использовать специальную мультипрограммную операционную систему.

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

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6455
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее