Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Глава 1 Принципы организации электронных вычислительных машин





Введение

 
 

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

 
 

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

Теперь несколько слов о терминологии. Сначала расшифровка аббревиатуры ЭВМЭ лектронная В ычислительная М ашина. Как и всякая другая машина ЭВМ обеспечивает преобразование сырья, поступающего на вход машины, в конечный продукт. Особенность ЭВМ в том, что в качестве сырья на вход машины поступает информация (исходные данные), а на выход выдаются результаты решения задачи. Термин вычислительная означает, что обработка информации осуществляется путем выполнения сравнительно простых математических (арифметических, логических и т.п.) операций, т.е. путем вычислений. Термин электронная означает, что машина построена на основе электронных элементов, электронной элементной базы. В настоящее время под термином ЭВМ (компьютер) имеют в виду ЦВМ, т.е. ЭМ для обработки дискретной информации. Области применения ЭВМ самые разнообразные – от «физиков» до «лириков». В настоящее время трудно назвать область человеческой деятельности, где бы не применялись ЭВМ.

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

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

К классу АС относятся: информационно-измерительные системы (ИИС), АС управления технологическими процессами (АСУ ТП) и т.п. АС.

Технические средства СОД строятся на базе ЭВМ (в основном). Следует отметить, что в настоящее время термин ЭВМ (компьютер) трактуется широко – под ним понимается не только аппаратура, но и ПО, т.е. система в целом. Поэтому в ВТ аппаратную часть СОД обычно называют ВК. ВК – это аппаратная основа всех СОД.

Таким образом, предметом курса «Организация ЭВМ и систем» являются различного рода ВК и принципы их организации (построения). В одном ряду с понятиями ЭВМ, СОД, ВК стоит и понятие ВС.

Определение ВС. Под ВС понимается система, состоящая из двух частей (элементов) - АО и ПО, находящихся во взаимодействии (рисунок 2). Здесь: АО - аппаратное обеспечение. АО ВС - это технические средства ВС, т.е. ВК. ПО ВС - это системное ПО (СПО) и прикладное ПО (ППО), т.е., если точнее, ВС состоит из трех частей (рисунок 3).

Понятие ВС по составляющим элементам (АО+ПО) похоже на понятие СОД. Однако это разные понятия. Когда говорят СОД, то имеют в виду назначение системы, т. е. управление конкретным объектом (двигателем, например).

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

Теория ВС состоит из двух разделов: архитектура ВС и метрическая теория ВС.

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

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

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

Таким образом, термин ЭВМ (в широком смысле) является популярным термином для обозначения более сложных специальных понятий, которые используются в ВТ: ВК, ВС, СОД, АС. В курсе «Организация ЭВМ и систем» будут рассматриваться прежде всего ВК (ЭВМ в узком смысле), их принципы организации. Как на основе ВК построить конкретную СОД в курсе «Организация ЭВМ» вы ответ не получите! Ответ на этот вопрос будет изложен в других специальных курсах, посвящённых проектированию СОД (языки программирования, проектирование АСНИ, устройства сопряжения с объектом (УСО), датчики и др.).

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

Система —это совокупность элементов, объединенных в единое целое для достижения определённой цели.

ЭВМ —это система, предназначенная для автоматизации обработки информации на основе алгоритмов.

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

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

Отсюда схема изложения материала курса: сверху - вниз, от функции к структуре. Из определения ЭВМ следует функция ЭВМ (рисунок 4): обработка исходных данных D на основе алгоритма А с целью получения результата R. Это первый, верхний уровень в иерархии описаний ЭВМ.

Далее известно, что ЭВМ состоит из устройств (внутренних элементов): процессоров, запоминающих устройств (ЗУ), устройств ввода-вывода (УВВ). Поэтому на втором уровне иерархии (более детальном) описание ЭВМ можно представить схемой, изображенной на рисунке 5. На этом уровне предстоит ответить на вопрос: откуда взялись и для чего предназначены эти устройства (понятия): центральный процессор (ЦП), оперативное запоминающее устройство (ОЗУ), устройство ввода-вывода (УВВ), общая шина (ОШ).

В свою очередь, на следующем уровне детализации (иерархии описаний) раскрывается внутренняя организация устройств, из которых строится ВК. Например, ЦП строится на базе арифметико-логического устройства (АЛУ), центрального устройства управления (ЦУУ), регистров общего назначения (РОН) и т.д. вниз до известного вам уровня схемотехники.

В результате мы получим иерархию описаний ЭВМ, составленных по принципу «сверху - вниз» (в смысле сложности) и от функции F к структуре S (при обосновании внутренней структуры и организации элементов системы).

С точки зрения теории сложных систем система считается заданной (т.е. спроектированной), если определены и описаны её функция и структура (схема). Структура системы задаётся схемой соединения её элементов.

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

Функция системы - это такое описание системы, из которого ясно, как достигается поставленная перед системой цель. Другими словами, функция системы - это правила получения результатов, вытекающих из назначения системы. Например, назначением АЛУ является выполнение арифметических и логических операций (АЛО). Отсюда функция АЛУ - правила получения результатов, т.е. правила выполнения арифметических и логических операций. Эти правила задаются путём описания алгоритмов выполнения АЛО: FАЛУ = {А+, А-, … } - перечень алгоритмов операций сложения, вычитания, и т. д.

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

Со схемами, изображающими внутреннюю структуру интегральных схем (ИС), вы хорошо знакомы по курсу «Схемотехника». Пример: АЛУ строится на базе известных вам элементов: сумматоров, регистров, счетчиков, мультиплексоров, демультиплексоров и др.

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

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

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

В теории сложных систем различают два типа организации - функциональную и структурную.

Функциональная организация - это принципы построения абстрактных систем, то есть систем, заданных только их функциями. Примеры: таблица истинности для логических элементов (ЛЭ), набор алгоритмов операций – для АЛУ.

Структурная организация - это принципы перевода абстрактных систем в материальные (реальные) системы. Другими словами, это методы, приёмы, правила, с помощью которых осуществляется переход от функции F системы к структуре S, её реализующей (F®S). Примеры: переход от таблицы истинности для ЛЭ к схеме (структуре) ЛЭ, переход от функции АЛУ FАЛУ к структуре АЛУ.

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

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

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

Пример: АЛУ строится на базе сумматоров, регистров, счётчиков и т.п. элементов. В свою очередь, каждый из них строится на базе элементов другого уровня - логических элементов. Каждый ЛЭ, в свою очередь, состоит из известных вам полупроводниковых (электронных) элементов: транзисторов, резисторов, диодов, конденсаторов и электрических проводников для связи между ними.

 


Основные понятия

Архитектура ЭВМ – это совокупность свойств и характеристик ЭВМ, рассматриваемых с точки зрения человека. Например, с точки зрения пользователя: его в первую очередь интересуют языки программирования, возможности ОС, организация работы с файлами, базами данных, приложениями и т.п. возможности ЭВМ, т.е. пользователя технические возможности ВК почти не интересуют.

Другой, более глубокий взгляд на ЭВМ у системных программистов (и тех, кто пишет на ассемблере). Их интересуют возможности машинного языка – т.н. ассемблера, организация ввода/вывода информации, система прерываний, способы представления данных, способы адресации информации в памяти ЭВМ и т.п.

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

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

Рассмотрев эти вопросы, мы тем самым определим (зададим) те функции, которые должна выполнять аппаратура ЭВМ. Затем перейдем от функции ЭВМ F к ее структуре S.

Представление данных в ЭВМ

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

Представление чисел

 
 

Число А в позиционной системе счисления можно представить:

где akÎ{0,1,….q-1}, q – основание системы счисления, обычно принимает значения q=2(8,10,16), a0 - знак числа, ak - цифры числа, qn-k - вес цифры в зависимости от ее позиции, n - количество цифр в целой части числа, m - общее количество цифр.

Пример: А=217,37 – десятичное число, q=10, n=3, m=5.

Множество чисел можно разделить на два подмножества - целые и вещественные (действительные). Основной формой представления чисел в ЭВМ являются двоичные числа.

 
 

Целые двоичные числа в ЭВМ представлены в следующем формате:

Веса: 2k 2k-1 … 21 20.

Диапазон представления: ±(2k-1). Основная особенность - переполнение разрядной сетки при выполнении операций сложения, вычитания, умножения и деления, если результат операции С удовлетворяет условию |С|³2k. Как обнаружить? Например, при сложении переполнение возможно, если знаки слагаемых одинаковы. В результате переполнения знак суммы изменяется и не совпадает со знаком слагаемых. Технически в ЭВМ переполнение обнаруживается путем анализа битов переноса в знаковый разряд сумматора p1 и из знакового разряда p0. Условие переполнения: p0 ¹ p1.

Пример: +5+(+4)= -1, (k=3).

p0 p1 Å
1-переполнение
0

   
     
     
     

Сигнал переполнения формируется схемой сложения Å по mod 2.

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

 
 

Двоичная правильная дробь имеет формат:

20 2-1 2-k

Диапазон представления: ±(1-2-k). Наименьшее число, отличное от нуля, - 2-k=0,0…01. Числа, меньшие чем 2-k, рассматриваются как машинный ноль. Таким образом, если целые числа в ЭВМ представлены точно (без погрешности), то действительные числа с дискретностью D=2-k. То есть разрядность числа k определяет точность представления действительных чисел в k-разрядной сетке. D=2-k - это дискретность, с которой идет «прореживание» множества действительных чисел в k-разрядной сетке.

 
 

-1 +1

Пример: k=15, D=2-15»0,3×10-4, т.е. точность представления приблизительно три десятичных знака.

Особенности операций над правильными дробями: переполнение разрядной сетки при выполнении операций сложения, вычитания и деления. Условие переполнения |С|³1=20, переполнение разрядной сетки при выполнении операции умножения не происходит. Общая для двух форматов с фиксированной запятой – и для целых чисел и для правильной дроби - особенность: представление отрицательных чисел не в прямом коде (как для положительных чисел), а в дополнительном (или обратном) коде.

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

Пример: +4+(+3)=+7(0.111), -4+(-3)=1.100+1.011=0.111(+7)? При сложении чисел с отрицательными знаками сумматор дает неправильный результат. Для того, чтобы знаки чисел стало возможным обрабатывать так же, как цифры числа, и вводится дополнительный код. Дополнительный код определяется выражением:

где А - цифровая часть числа (без знака).

Примеры: -4 = 1.100пр = 1.100д.к., -3 = 1.011пр = 1.101д.к.

Сложение: 1.100+1.101=1.001д.к.=1.111пр= -7.

Кроме того, дополнительный код позволяет использовать сумматор и для вычитания чисел. При этом вычитание сводится к сложению с дополнительным кодом вычитаемого: С=А-В=А+`В+1. Здесь `В+1 – дополнительный код В – инверсия В плюс единица.

Примеры: 1) 4-3=0.100-0.011=0.100+1.101=0.001= +1.

2) –4-(-3)=1.100-1.101=1.100+0.011=1.111д.к.= -1.

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

 
 

где d=2h, (h=1или 4) - основание системы счисления с плавающей запятой, M – мантисса ( формат представления - правильная дробь), P - порядок числа ( формат представления - целое число). Формат числа с плавающей запятой:

Здесь: М – мантисса числа, Р - порядок числа, m0 – знак числа, p0 – знак порядка. Диапазон представления (если мантисса нормализована):

d-1 d-Pmax£ |A| £ (1-2-n)d+Pmax (2.3)

Здесь: Pmax = (2k-1) – максимальный порядок числа.

 
 

Диапазон представления на числовой оси:

Двоично-десятичные числа (ВСD) -можно использовать для представления десятичных чисел. Суть: каждой десятичной цифре 0,1, …, 9 ставится в соответствие двоичный код 0000, …, 1001.

Для представления двоично-десятичного числа можно использовать упакованный и не упакованный форматы произвольной длины (машинный элемент - строка байтов). Упакованный формат: один байт содержит две десятичных цифры (по 4 бита каждая). Не упакованный формат: один байт - одна десятичная цифра (4 бита из 8 не используются). Количество байтов зависит от количества десятичных цифр и формата числа.

Особенности ВСD-чисел: операции над ними выполнятся обычно при помощи двоичного сумматора, поэтому их результат требует коррекции. Коррекция осуществляется путем сложения каждой цифры результата с цифрой 6. Для этого в систему команд ЭВМ вводятся специальные команды коррекции. Другой вариант решения этой проблемы – использование корректирующих кодов, например, с избытком три, для представления ВСD-чисел.

Представление данных

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

Для представления действительных чисел можно использовать три формата с плавающей запятой - с одинарной, двойной и расширенной точностью:

 

Здесь: М – мантисса разрядностью m=23(52,64) разряда, Х=Р+(2k-1-1) – характеристика порядка длиной k=8(11,15) бит числа с плавающей запятой:

А=±М*d±P, Р=Х-(2k-1-1), d=2. Один формат от другого отличается длиной мантиссы и, следовательно, точностью представления чисел: D=2-m, m=23(52,64), а также разрядностью характеристики k и, следовательно, диапазоном представления чисел.

Основные особенности формата с плавающей запятой:

- вместо порядка Р используется его характеристика Х=Р+127 (1023, 16383). Характеристика – целое без знака, что упрощает операции над порядками;

- Мантисса М – неправильная дробь:

После выполнения операции над мантиссами операндов мантисса результата подвергается нормализации. У нормализованной мантиссы старший бит m0 всегда равен 1, поэтому в памяти его можно не хранить и тем самым экономить один бит всех ячеек памяти, в которых хранятся числа с плавающей запятой. При извлечении из памяти эта единица восстанавливается по умолчанию и мантисса становится 24-разрядной (или 53-разрядной – с двойной точностью);

- Дополнительный код для представления отрицательных чисел не используется, а используется обратный код, поэтому ноль имеет две формы – плюс ноль: 0.0…0 и минус ноль:1.1...1.

Операции с плавающей запятой выполняются в специальном АЛУ с плавающей арифметикой (в сопроцессоре).

Двоично-десятичные числа (BCD). Можно использовать три формата: упакованный и не упакованный форматы произвольной длины (машинный элемент - строка байтов), а также упакованный формат фиксированной длины 10 байтов (18 десятичных цифр). Упакованный формат: один байт содержит две десятичных цифры (по 4 бита каждая). Не упакованный формат: один байт - одна десятичная цифра (4 бита из 8 не используются). Количество байтов зависит от количества десятичных цифр и формата числа.

 
 

Упакованный формат фиксированной длины содержит 80 двоичных разрядов (10 байтов):

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

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

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

Защита информации

Система защиты информации – это совокупность специальных аппаратных средств ЦП и специальных программных средств ОС. Устойчивость системы защиты зависит от эффективности программ ОС, использующих средства защиты ЦП, поэтому не абсолютна, не обеспечивает 100% защиты информации. Здесь рассмотрим лишь аппаратные средства ЦП, предназначенные для защиты информации.

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

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

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

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

3) не позволяет использовать сегмент не по назначению.

Разграничение доступа осуществляется по четырем уровням привилегий (PL – Privilege Level): 0,1,2,3. Чем меньше значение PL, тем выше уровень привилегий, т.е. права доступа к ресурсам компьютера, к информации, размещенной в сегментах. Максимальный уровень обычно присваивается ядру ОС, PL=1 - сервисным средствам ОС, PL=2 - расширениям ОС, PL=3 - прикладным программам.

Уровень привилегий задачи указывается в поле СPL (Current PL – текущий уровень привилегий задачи) селектора программного сегмента, размещенного в регистре CS. СPL задает уровень привилегий ЦП, выполняющего программу. С этим уровнем привилегий ЦП обращается к различным ресурсам, в частности к сегментам.

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

CPL £ DPL, (2.9)

т.е. данные из сегмента с уровнем привилегий DPL доступны программе, имеющей уровень привилегий CPL такой же или более высокий.

Схема доступа к данным по уровням (кольцам) доступа:

 
 

Таким образом, уровень привилегий задачи CPL используется как пропуск (ключ), который предъявляет ЦП, обращаясь к различным информационным или аппаратным (устройствам ввода/вывода) ресурсам, выделенным задаче ОС, уровень привилегий которых DPL (или IOPL). Уровень привилегий информации задается DPL, а аппаратуры – полем IOPL (уровнем привилегий ввода-вывода), размещенным в соответствующем поле регистра флагов. Доступ к аппаратным ресурсам ввода-вывода осуществляется при условии: CPL£IOPL (2.10)

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

Теперь подробнее о работе механизма защиты ОП. Обращение к сегментам данных производиться через сегментные регистры DS, (ES...) путем загрузки в них соответствующих селекторов. Например, обращение к сегменту данных осуществляется по следующей упрощенной схеме (рисунок 2.26). Эта схема (аппаратура процессора) разрешает программе доступ к сегменту данных только при выполнении условия:

DPL ³ max (CPL, RPL), (2.11)

где RPL (Requsted PL) – запрашиваемый ОС уровень привилегий. В противном случае вызывается прерывание с номером 13 – «нарушение защиты памяти». Эта схема защиты работает всякий раз, когда осуществляется загрузка нового селектора в один из сегментных регистров (вCS или DS – на схеме). «Новый» селектор обычно загружается TSS, a в TSS загружается ОС заранее. В этот момент из дескрипторной таблицы по индексу Index.TI (длиной 14 бит) извлекается дескриптор сегмента данных и загружается в программно «невидимый» дескрипторный регистр. Поле DPL из байта доступа используется для проверки условия (2.11).

 
 

Рисунок 2.26

 

Итак, механизм защиты (доступа) реализует разграничение доступа к сегменту данных в зависимости от уровня его защищенности DPL, от уровня привилегий задачи CPL и, наконец, от степени важности запроса RPL, определяемого ОС. Уровень привилегий запроса RPL позволяет ОС гибко изменять (уменьшать) уровень доступа к данным, меняя RPL путем загрузки нового селектора в регистр DS (ES,...). Итоговый уровень привилегий EPL=max(RPL,CPL) принято называть эффективным уровнем привилегий. Он и используется при обращениях к сегментам данных. Другими словами, DPL задает абсолютный уровень привилегий, а RPL – относительный, текущий, временный.

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

RPL=CPL=DPL, (2.12)

т.е. разрешается только в пределах одного кольца защиты. Нарушение этого условия вызывает исключение с номером 13. Условие (2.12) более «жесткое», чем при обращениях к другим, не стековым сегментам данных. Объясняется это тем, что каждое кольцо защиты обслуживается своим стеком.

Следует отметить, что дескриптор сегмента может быть глобальным или локальным, точнее, память делится на глобальные (общие для всех) и локальные (для задачи) области памяти. Сегменты, размещаемые в общей области памяти, описываются дескрипторами глобального типа, а сегменты, размещаемые в локальной области памяти, описываются дескрипторами локального типа. Глобальные дескрипторы объединяются в одну глобальную дескрипторную таблицу GDT, которая размещается в ОП в системном сегменте объемом до 8К дескрипторов. Локальные дескрипторы задачи образуют дескрипторную таблицу LDT, которая также хранится в ОП в системном сегменте размером до 8К дескрипторов. Локальных дескрипторов столько, сколько задач.

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

 
 

Следует отметить, что GDTR программно доступен, LDTR - нет. Загрузка GDTR осуществляется привилегированной командой LGDT (выполняется с нулевым уровнем привилегий ядром ОС). Эта команда загружает БА и размер (Limit) таблицы GDT. Команда LLDT загружает в LDTR только 16-разрядный селектор (который ссылается на дескриптор в GDT, содержащий БА и лимит LDT), в программно доступную часть регистра LDTR:

 
 

После загрузки селектора в поле селектора LDTR из GDT автоматически загружается невидимая часть регистра LDTR (БА и лимит LDT).

Итак, контроль доступа к сегментам данных производится в момент загрузки селектора в один из сегментных регистров DS,ES,FS,GS,SS (на рисунке 2.26 – в DS). Пример: пусть уровень привилегий задачи CPL=0 и по команде MOV DS,AX в сегментный регистр DS загружается селектор 0х2F из регистра АХ. Защитные действия:

1. Анализируется бит TI селектора 0х2F (второй бит). Так как он равен 1, дескриптор сегмента является локальным и должен быть загружен из LDT.

2. Проверяется условие невыхода за пределы (границы) таблицы LDT: (Index+1)*8-1£Limit*(4К)G (*). В этом неравенстве слева стоит выражение, определяющее номер N последнего байта дескриптора в LDT, справа – размер таблицы LDT в байтах, поле Limit – из LDTR, бит G (равный 0 или 1) – из дескриптора GDT. В примере Index=5, N=47.

3. Если условие (*) выполняется, то из LDT (со смещением D=Index*8) извлекается дескриптор и загружается в невидимый дескрипторный регистр, соответствующий регистру DS. Если условие (*) не выполняется, то вырабатывается исключение 11 – некорректный селектор, а именно – отсутствие селектора, т.к. индекс указывает за пределы LDT. Выполнение команды прерывается.

4. Анализируется тип сегмента (по битам байта доступа). Тип сегмента задается следующим образом:

сегмент кода: S=1, Е=1,

сегмент данных: S=1, Е=0, ED=0,

сегмент стека: S=1, Е=0, ED=1,

системный сегмент: S=0, TYPE=2 (дескриптор LDT).

Если дескриптор системный (S=0) или кода (S=1, Е=1), причем он недоступен для чтения (R=0), то фиксируется несовместимость типа селектора и типа сегментного регистра DS (данных) и генерируется исключение 13 – общая ошибка защиты, выполнение команды прерывается.

5. Проверяется условие (2.11). Если оно выполняется, то DS:=АХ. Если нет, то фиксируется недостаточный уровень привилегированности и генерируется исключение 13, выполнение команды прерывается.

Итак, при загрузке селектора в сегментный регистр производятся следующие проверки:

-наличие дескриптора в таблице (в локальной или глобальной),

-совместимость типа дескриптора и типа сегментного регистра,

-сравнение уровней привилегированности DPL, CPL, RPL.

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

-допустима ли запись в сегмент,

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

Пример: MOV ES:[EBX+4]. Защитные действия:

1. Анализ типа сегмента. Если это сегмент кода (Е=1, S=1), то запись в него невозможна, поэтому выполнение команды прерывается и генерируется исключение 13.

2. Если это сегмент данных или стека (Е=1, S=0), то анализируется бит W. Если W=0 (только для чтения), то выполнение команды также прерывается и генерируется исключение 13.

3.







ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования...

Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычис­лить, когда этот...

ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между...

ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.