Вы находитесь на странице: 1из 82

Математическая модель МПСУ

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


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

Приведенная НЧ

g x
+ ИЭ ФИ НЧ
-

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

Рис 2
На первый взгляд, соответствие структурной схемы (рис 2) и математической модели
(рис. 1) не просматривается. Попробуем его найти.

Рассмотрим частный случай цифровой САУ – цифровой электропривод (рис. 3).

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

1. Канал обратной связи (УВВ 1, ДОС и линии связи)


2. Канал управляющих сигналов (УВВ 2 и линии связи)
3. Канал входных сигналов (УВВ 3 и линии связи)
Микропроцессорные системы управления. Часть 3

4. Цифровой фильтр (МП и ЗУ)

Таким образом, МПСУ состоит из цифрового фильтра, 3-х каналов связи и непрерывной
неизменяемой части.
Почему МП и ЗУ названы цифровым фильтром? В технике принято называть фильтром
любое устройство, если при прохождении через него синусоидального сигнала амплитуда
этого сигнала меняется. Любое корректирующее устройство представляет собой фильтр.
В ЗУ хранится программа, реализующая алгоритм управления, а, следовательно –
осуществляющая фильтрацию сигналов, проходящих через МПС. Эта фильтрация
называется цифровой, поскольку МП выполняет команды за конечное время и работает с
дискретными величинами. Имеет место квантование по времени и по уровню.
Следовательно, МП работает как цифровой фильтр.
Рассмотрим более подробно структуру 3-х перечисленных каналов связи и попытаемся
получить их математическое описание.

Канал обратных связей (КОС)

Согласно схеме, приведенной на рис. 3. КОС имеет следующую структуру:

x1 УВВ 1 Д
x

Рис 4
Где Д – датчик обратной связи. Датчик может быть непрерывным и дискретным.
Рассмотрим эти два варианта отдельно

КОС с непрерывным датчиком


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

x1 УВВ
x

Рис 5
Здесь x – сигнал обратной связи, приходящий с датчика, x1 – данные, передаваемые по
шине данных и представленные в числовом виде. Из-за ограниченности разрядной сетки
число x1 не может принимать любые значения в диапазоне своего изменения, имеет место
квантование по уровню. Следовательно, КОС должен содержать устройство,
обеспечивающее квантование сигнала по уровню. Такое устройство называется аналого-
цифровым преобразователем (АЦП).
Блок-схема алгоритма управления для цифровой системы имеет вид:

2
Микропроцессорные системы управления. Часть 3

Ввод g, x

Расчет u

Вывод u

Рис. 6
Так как каждый шаг алгоритма состоит из набора команд МП и выполняется за конечное
время, ввод сигнала x производится в дискретные моменты времени, отстоящие друг от
друга на величину T, которая равна общей длительности выполнения одного цикла
алгоритма управления. Следовательно, сигнал x1 (рис 5) квантован по времени. Поэтому в
математической модели КОС должен присутствовать импульсный элемент, отражающий
факт квантования сигнала по времени.

x1 И. Э.
x2 АЦП
x

Рис 7
Здесь x2 – сигнал, квантованный по уровню, x1 – сигнал, квантованный по времени и
уровню. Схема на рис 7 представляет собой математическую модель канала обратной
связи с непрерывным датчиком.
Обратите внимание, что физически импульсного элемента не существует. Присутствие
его в математической модели лишь отражает факт квантования сигнала по времени.
Физически это квантование осуществляет сам МП, выполняя ввод данных в дискретные
моменты времени.

КОС с дискретным датчиком


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

АЦП и его характеристики


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

3
Микропроцессорные системы управления. Часть 3

Рис 8
То есть он является нелинейным элементом. Горизонтальный размер ступеньки на
характеристике называется ценой младшего разряда АЦП δ. Чем меньше цена младшего
разряда, тем большее число разрядов двоичного числа необходимо для представления
преобразованного значения при одном и том же диапазоне его изменения. На практике
цена младшего разряда выбирается исходя из максимально допустимой ошибки (они
должны быть примерно равны).

 ДОП  

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


автоколебаний, амплитуда которых сравнима с ценой младшего разряда АЦП. Однако
колебания могут демпфироваться силами трения в опорах, которые играют роль
нелинейного элемента с зоной нечувствительности. На практике, для того, чтобы уйти от
эффекта автоколебаний, увеличивают разрядность АЦП на 2-3 разряда по сравнению с
той, которая необходима для обеспечения требуемой точности системы. В расчетах часто
используется линеаризованную статическую характеристику АЦП, представляя его
усилительным звеном с коэффициентом усиления

1
K АЦП 

Подобная линеаризация оправдана при условии большого количества разрядов АЦП и


малого значения δ.Влияние нелинейных факторов на работу скорректированной системы
оценивается отдельно.

Канал входных сигналов

Если сигнал g подается на вход МПСУ в непрерывном (аналоговом) виде, структура


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

4
Микропроцессорные системы управления. Часть 3

g АЦП
g2 И. Э.
g1

Рис 9
Где g – непрерывный входной сигнал, g2 – входной сигнал, квантованный по уровню, g1 –
входной сигнал, квантованный по уровню и времени

Канал управляющих сигналов

На входе этого канала (КУС) всегда находится сигнал, квантованный по уровню. На вход
усилителя мощности необходимо подавать непрерывный сигнал. Следовательно, сигнал
должен быть преобразован из квантованного по уровню в непрерывный. Для этого
используется цифро-аналоговый преобразователь (ЦАП). Под ЦАП будем понимать
любое устройство, преобразующее квантованный по уровню сигнал в непрерывный.
Кроме этого, выдача сигнала происходит в дискретные моменты времени в соответствии с
алгоритмом работы МПС (см. рис. 6).

t
0 T 2T 3T 4T
Рис 10

Выдача сигнала на усилитель мощности в дискретные моменты времени может привести к


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

t
0 T 2T 3T 4T
Рис 11
Экстраполятор нулевого порядка технически может быть реализован в виде регистра,
содержащего последнее рассчитанное значение.
Таким образом, канал управляющих сигналов может быть описан следующей структурной
схемой:

5
Микропроцессорные системы управления. Часть 3

u ЦАП
u2 Э-Р
u1

Рис 12
Здесь u – сигнал, квантованный по времени и уровню, u2 – сигнал, квантованный по
времени, u1 – непрерывный сигнал на выходе канала.

ЦАП и его характеристики

Цифро-аналоговый преобразователь имеет нелинейную характеристику, аналогичную


АЦП (рис. 8). Все рассуждения, проводившиеся для АЦП относительно возможности
возникновения автоколебания и выборе цены младшего разряда, справедливы и для ЦАП.
При расчетах он также условно представляется линейным элементом (усилительным
звеном) с коэффициентом усиления
K ЦАП  

Математическая модель МПСУ

Теперь, когда мы нашли описания всех каналов связи, представим их на единой


структурной схеме, взяв за основу структурную схему МПСУ (рис. 3).

g x
АЦП 1 И. Э. + Ц. Ф. ЦАП Э-Р О. У.

И. Э. АЦП 2

Рис 13

Операция вычисления ошибки реально выполняется МП (цифровым фильтром) в


соответствии с алгоритмом управления. На приведенной выше схеме она вынесена за
пределы ЦФ исключительно для удобства моделирования МПС (физически
представленный на схеме сумматор не существует).
Проанализируем схему. АЦП 1 и АЦП 2 имеют разрядности n1 и n2 соответственно.
Однако на практике, как правило, их разрядности совпадают, так как в противном случае
при вычислении ошибки неизбежно будет возникать погрешность. Поэтому мы тоже
можем допустить, что разрядности АЦП 1 и АЦП 2 совпадают.
Рассмотрим теперь работу во времени импульсных элементов в каналах ОС и ВС.
Времена их срабатывания соответствуют моментам ввода сигнала x и сигнала g (рис. 6)..
Если предположить, что время выполнения расчета намного больше, чем время ввода x и
g (а так и бывает в большинстве случаев), можно считать, что импульсные элементы
срабатывают одновременно (то есть работают синхронно и синфазно).
С учетом приведенных рассуждений, схема 13 может быть преобразована к следующему
виду:
g x
+ АЦП 1 И. Э. Ц. Ф. ЦАП Э-Р НЧ

Рис 14

6
Микропроцессорные системы управления. Часть 3

Представим АЦП в виде усилительного звена с коэффициентом усиления k1, ЦАП – в


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

g x
+ И. Э. Ц. Ф. Э-Р K1 * K2 НЧ

Рис 15
Если пренебречь известным эффектом реализации линейных корректирующих устройств
в МПС, когда дискретная реализация дает заведомо худшие показатели качества СУ,
можно заменить ЦФ неким непрерывным корректирующим устройством,
присоединенным к непрерывной части системы. С учетом того, что экстраполятор – то же
самое, что и формирователь импульса, получим из 15 следующую модель:

g x
+ И. Э. Ф. И. НЧ

Рис 16

Таким образом, мы пришли к классической математической модели дискретной САУ


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

7
Микропроцессорные системы управления. Часть 3

Проектирование соединения УСО с МП в случае


нескольких ведущих устройств
Рассмотрим систему, представленную следующей схемой:

Рис 27
Здесь представлены 2 микропроцессора, которые могут через магистраль обращаться к
общими ЗУ и УВВ. Очевидно, для ЗУ и УВВ, представленных на рисунке, существует 2
ведущих устройства – МП 1 и МП 2. Естественно, МП используют общие ресурсы не
одновременно, а по очереди, поэтому в конкретном цикле обмена ведущим устройством
является один из них. В общем случае количество МП может быть больше 2-х.
Такая схема может применяться в разных случаях, например, если нужно осуществить
обмен данными между 2-мя МПС через общее ЗУ, или иметь доступ из нескольких МПС к
одному УВВ, через которое подключен какой-либо датчик.
Рис 27 представляет упрощенное представление системы с несколькими МП. В
реальности, системы будет выглядеть следующим образом:

Рис 28

8
Микропроцессорные системы управления. Часть 3

У каждого МП имеются свои персональные ЗУ и УВВ, находящиеся целиком и полностью


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

Рис 29
Магистраль, выходящая из МП называется локальной шиной МП. Она является
мультиплексированной (в большинстве случаев). Магистраль, соединяющая МП с УВВ и
ЗУ, находящимися в его персональном распоряжении, называется резидентной шиной.
Магистраль, соединяющая МП с общими ЗУ и УВВ, носит название системной шины.
Резидентная и системная шины не мультиплексированы.
Очевидно, для подключения УСО к МП в данном случае мы должны использовать
специальную схему – схему шинного интерфейса (СШИ). Она должна располагаться в
месте соединения всех трех шин (см. рис. 29). СШИ должна решать следующие задачи:
1. Демультиплексирование локальной ШАД
2. Хранение адреса в течение всего цикла обмена
3. Подключение МП (локальной шины) к системной или резидентной шине, в
зависимости от того, по какой шине будет происходить обмен
Отдельно должен решаться вопрос о порядке подключении к системной шине (СШ).
Очевидно, что к общим ресурсам (ЗУ, УВВ) в некий момент времени может иметь доступ
только один МП. Следовательно, должна существовать возможность проверки занятости
СШ. Также необходимо предусмотреть механизм для разрешения конфликтных ситуаций,
например, когда 2 или более МП одновременно попытаются получить доступ к общим
ресурсам. Все эти вопросы будут рассмотрены нами позже, пока же сосредоточимся на
создании СШИ, решающей сформулированные выше 3 задачи.
Очевидно, что СШИ должно быть 2 – одна будет обеспечивать подключение к СШ, другая
– к РШ. Естественно, в каждом цикле обмена работать будет либо одна, либо другая
СШИ.

9
Микропроцессорные системы управления. Часть 3

Рис 30

Рассмотрим более детально саму схему шинного интерфейса

Рис 31
Если посмотреть на сформулированные ранее 3 задачи, которые должна решать СШИ, мы
можем увидеть, что две первые из них совпадают с задачами, которые решала
рассмотренная в предыдущем разделе схема демультиплексирования. Следовательно, она
может быть положена в основу СШИ.
Остается задача №3: обеспечение подключения/отключения от локальной шины (в
соответствии с сигналом, передаваемым по специальной линии «Разрешение
подключения к шине»). На выходе СШИ мы имеем 3 шины: адреса, данных и управления.
Задача отключения шины данных фактически уже решена в схеме
демультиплексирования: при неактивном сигнале DEN шина данных отключена от
локальной шины (см. рис. 23). Отключение шины адреса также может быть выполнено в
рамках известной нам схемы демультиплексирования путем подачи сигнала «Разрешение
подключения к шине» на вход OE буферного регистра.
Для отключения шины управления используется специальное устройство, называемое
контроллером шины (рис. 32).

10
Микропроцессорные системы управления. Часть 3

Контроллер шины

Контроллер шины предназначен для решения задач управления шинным интерфейсом.

MEMR

Состояние МП Генератор MEMW


Дешифратор
командных
состояний IOR
сигналов
IOW

DT/R
CLK
Генератор
Устройство ALE
сигналов
управления
AEN управления
DEN

Рис 32
Контроллер шины (КШ) состоит из следующих блоков:
1. Дешифратор состояний. На вход дешифратора состояний с МП приходит
информация о состоянии МП в виде двоичного кода, передаваемого по
специальным линиям. Обрабатывая эту информацию, дешифратор определяет,
будет ли МП выполнять цикл обмена, если да – будет ли это обмен с ЗУ или УВВ,
обмен по чтению или записи.
2. Устройство управления. Управляет работой КШ. На него подаются тактовые
импульсы (по входу CLK) – для синхронизации с МП. Вход AEN –вход
разрешения подключения к шине
3. Генератор командных сигналов – формирует сигналы шины управления в
соответствии с информацией о типе цикла обмена при условии, что подключение к
шине разрешено сигналом AEN
4. Генератор управляющих сигналов – формирует сигналы управления схемой
демультиплексирования (буферным регистром и шинным формирователем) при
условии, что подключение к шине разрешено сигналом AEN

Таким образом, контроллер шины позволяет выполнять подключение/отключение шины


управления в зависимости от сигнала разрешения AEN. А вся схема шинного интерфейса
будет выглядеть следующим образом:

11
Микропроцессорные системы управления. Часть 3

Рис 33
Здесь мы видим уже знакомую нам схему демультиплексирования, которая в данном
случае управляется контроллером шины. Он же решает задачу
«подключения/отключения» шины управления. Схема шинного интерфейса
«открывается», то есть подключает МП к соответствующей шине, с помощью сигнала
«Разрешение подключения к шине». Этот сигнал подается на контроллер шины, заставляя
его «подключить» МП к шине управления и сформировать сигналы, управляющие
буферным регистром и шинным формирователем. Этот же сигнал подается на буферный
регистр для «отключения» его от шины данных в случае, когда схема шинного
интерфейса находится в «закрытом» состоянии.
Как же формируется сигнал «Разрешение подключения к шине»? Если посмотреть на рис.
30 мы увидим, что у нас имеется 2 СШИ – одна для подключения к системной шине,
другая – для подключения к резидентной шине. Обе схемы имеют вход «Разрешение
подключения к шине». Следовательно, должно быть некое устройство, которое в каждом
цикле обмена определяло бы, будет ли вестись обмен по системной или резидентной
шине. А определить это можно на основании адреса ведомого устройства. Поэтому для
решения рассматриваемой задачи используется дешифратор адреса.

12
Микропроцессорные системы управления. Часть 3

Рис 34
На вход дешифратора адреса подается адрес устройства, с которым будет происходить
обмен. Не углубляясь в нюансы технической реализации дешифратора адреса, мы можем
представить его в виде некоей таблицы из двух столбцов. В первом – все значения
адресов, с которыми возможен обмен, во втором – для каждого адреса признак: к
системной или резидентной шине он относится. Получив значение адреса и определив его
принадлежность, дешифратор активизирует одну из линии «Разрешение подключения к
шине» (на схеме обозначена AEN), «отпирая» таким образом одну из СШИ.
Обратите внимание, что между дешифратором и СШИ системной шины на пути сигнала
AEN находится некое устройство, задачей которого является определение возможности
подключения к системной шине (она может быть занята другой МПС). Об этом
устройстве мы поговорим немного позже.

Синхронизация СШИ и МП

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


шине. Дешифратор формирует сигнал AEN, но подключение к шине невозможно – она
занята. Устройство, отмеченное на рис 34 знаком вопроса, не открывает СШИ, обмен
начаться не может. Но ведь МП не знает об этом! Возникает необходимость
синхронизации шинного интерфейса с МП. В случае, когда доступ к запрашиваемому
устройству по системной шине не может быть получен, МП должен быть извещен об этом
для того, чтобы приостановить цикл обмена до того момента, когда системная шина
станет доступна. Как это можно сделать? Для воздействия на цикл асинхронного обмена
МП есть только один способ – использование сигнала готовности READY, который
проверяется в конце 2-го такта обмена рис 21. Как мы помним, если сигнал READY к
этому моменту неактивен, МП не приступает собственно к обмену, переходя к
выполнению холостых тактов до перехода READY в активное состояние. Следовательно,
в нашем случае сигнал READY должен быть неактивен, если доступ к системной шине
невозможен. Реализовать этот принцип можно, например, с помощью следующей схемы:

13
Микропроцессорные системы управления. Часть 3

Рис 35
Использование логической микросхемы «ИЛИ» с инверсными входами (на ее выходе
будет «1» только если на одном или на обоих входах «0») позволяет формировать
активное значение сигнала READY только в том случае, если хотя бы один из сигналов
AEN (для системной или резидентной шины) активен (на нем присутствует сигнал
логического «0»).

Арбитр шины

Вернемся к рис. 35. Устройство, обозначенное на этом рисунке знаком вопроса и


определяющее возможность подключения к системной шине, называется арбитром шины.
Каждая МПС, подключенная к системной шине имеет в своем составе арбитр шин. Таким
образом, количество арбитров шин (АШ) равно количеству МПС (МП) в
многопроцессорной системе. Образно выражаясь, АШ является «представителем» МПС
по вопросам доступа к системной шине. Получив от МП информацию о желании
использовать системную шину (СШ), АШ «вступает в переговоры» с другими АШ и в
результате определяет момент времени, когда ему (его МП) будет разрешено
использование СШ.

Рис 36
Все АШ соединены между собой посредством специальных линий связи, по которым
осуществляется взаимодействие между ними в процессе решения вопросов о возможности
и порядке доступа к СШ.
Рассмотрим АШ более подробно (рис 37)

14
Микропроцессорные системы управления. Часть 3

Рис 37
От МП к АШ по специальным линиям приходит информация о состоянии МП
(аналогично КШ, рассмотренному ранее). От дешифратора адреса поступает сигнал о том,
что в данном цикле обмен будет вестись по СШ (сигнал SYSB). Когда разрешение на
занятие шины получено, АШ «открывает» СШИ уже известным нам сигналом AEN.
Общая схема соединения АШ с МП и СШИ приведена на рис. 38

Рис 38

В общем случае АШ решает следующие задачи:


1. Проверка занятости СШ. Так как обмен по СШ в каждый конкретный момент
времени может вести только один МП, подключение МП к СШ возможно только в
том случае, если она в данный момент не используется другим МП. Таким образом,
АШ должен проверить свободность СШ, если она свободна – разрешить «своему»
МП ее использовать, если занята – дождаться ее освобождения.
2. Задача разрешения конфликтов (задача арбитража). В случае если одновременно
два или более АШ претендуют на занятие СШ, среди них должен быть выбран

15
Микропроцессорные системы управления. Часть 3

какой-то один и ему предоставлено право работы с СШ, а остальные переведены в


режим ожидания освобождения шины.

Рассмотрим задачу №1. Для определения занятости СШ используется специальная


сигнальная линия BUSY, к которой параллельно подключаются все АШ

Рис 39
Получив от МП и дешифратора адреса информацию о необходимости использования СШ,
АШ проверяет ее занятость, анализируя состояние линии BUSY. Наличие логической «1»
говорит о том, что СШ свободна, наличие «0» - о том, что СШ занята. Если СШ занята,
АШ ожидает ее освобождения «прослушивая» линию BUSY. Если СШ свободна, АШ сам
выдает на линию BUSY сигнал логического «0», сообщая таким образом остальным АШ о
том, что шина занята (им). По окончании использования шины АШ, «захвативший» шину,
переводит сигнал BUSY в неактивное состояние (логической «1»), сообщая другим АШ
об освобождении СШ.
Решение задачи №2 основано на использовании понятия «приоритет». Каждому АШ
назначается некий приоритет и при одновременном запросе СШ доступ получает АШ с
более высоким приоритетом. Рассмотрим 2 основные схемы, используемые для решения
задачи №2: схему последовательного и параллельного арбитража.

Последовательный арбитраж
Схема включения АШ при использовании последовательного арбитража приведена на
рис. 40

Рис 40
Каждый арбитр имеет вход BPRN – разрешение занятия шины. Если на этом входе
присутствует активный сигнал (в данном случае это сигнал логического «0»), АШ
разрешается занять СШ.
Посмотрим на рисунок. У самого левого АШ вход BPRN соединен с «землей» - это
эквивалентно подаче на него логического «0». То есть самый левый АШ всегда имеет
право занять СШ – он имеет наивысший приоритет. Но возможна ситуация, когда АШ не
нуждается в использовании СШ (его МП не выполняет в данный момент циклов обмена
по СШ). В этом случае данный АШ может «передать» свое право на занятие СШ
следующему АШ. Внутри АШ расположен воображаемый логический ключ (рис. 41),
который в этом случае «замыкается», соединяя вход BPRN с выходом BPRO

Рис 41

16
Микропроцессорные системы управления. Часть 3

А выход BPRO соединен с входом BPRN следующего АШ и разрешение на занятие СШ


передается ему за счет подачи уровня «0» на вход BPRN. Второй АШ может начать
использование СШ (если его МП это нужно), а может «передать» право использования Ш
дальше. Очевидно, что самый правый АШ имеет наименьший приоритет и получит право
работы с СШ только в том случае, если все предыдущие АШ «отказались» ее
использовать.
Достоинство последовательного арбитража: простота реализации – не нужно никаких
дополнительных устройств, достаточно лишь соединить в определенной
последовательности выходы и входы АШ
Недостатки последовательного арбитража:
1. Каждый АШ имеет жестко заданный приоритет. Следовательно, если АШ с
высоким приоритетом будут интенсивно использовать СШ, АШ с низким
приоритетом может долго не получать доступа к ней
2. «Передача» разрешения от одного АШ к другому («замыкание» внутреннего
«логического ключа») занимает некоторое время. Следовательно, при большом
количестве АШ, включенных в цепь последовательного арбитража, «разрешение»
на занятие шины к последнему АШ поступит со значительной задержкой. С другой
стороны, протокол обмена по системной шине ограничивает время, отведенное на
решение задачи арбитража. Следовательно, количество АШ, которые могут быть
включены в цепь последовательного арбитража, ограничено.

Параллельный арбитраж

Схема включения АШ при использовании параллельного арбитража приведена на рис. 42.

Рис 42
При необходимости получения доступа к шине АШ устанавливает активный уровень на
линии BREQ – сигнал запроса на занятие шины. Эти сигналы от всех АШ поступают в
специальное устройство – контроллер арбитража, которое в соответствии с заложенными
в него приоритетами выбирает один из АШ и разрешает ему работать с СШ, устанавливая
в активное состояние сигнал BPRN для этого АШ. Внутри контроллера арбитража
каждому АШ может быть назначен жесткий приоритет, либо может использоваться
система циклически меняющихся приоритетов, когда АШ, последним использовавший
СШ, получает наинизший приоритет, а тот, который дольше всего не обращался к СШ –
наивысший.
Достоинства данной схемы:

17
Микропроцессорные системы управления. Часть 3

1. Не ограничено количество АШ (так как задача арбитража решается одновременно


для всех АШ)
2. При использовании циклического изменения приоритетов внутри контроллера
арбитража удается избавиться от ситуации, когда активно использующий СШ
арбитр с высоким приоритетом «не дает работать» арбитрам с меньшим
приоритетом.

Недостаток (по сравнению со схемой последовательного арбитража) – большая


сложность, так как используется дополнительное устройство – контроллер арбитража.

Функционирование арбитра шины при захвате системной шины

Арбитр шины начинает процедуру захвата системной шины при наступлении следующих
событий:

1. МП начинает цикл обмена (эта информация поступает в АШ по линиям состояния


МП)
2. Дешифратор адреса сообщает АШ, что обмен будет производиться по системной
шине (установкой в активной состояние сигнала SYSB, рис. 38).

Функционирование АШ при захвате СШ иллюстрируется рисунком 43

Рис. 43
В момент времени (1) информация о состоянии МП сигнализирует о начале цикла обмена,
в момент времени (2) сигнал SYSB переходит в активное состояние. АШ выдает сигнал
запроса системной шины BREQ (3). После этого АШ ожидает наступления следующих
условий: перехода сигнала BUSY в состояние логической «1» (говорит об освобождении
СШ) и перехода сигнала BPRN в активное состояние логического «0» (означает, что
занятие шины разрешено именно этому АШ). Наступление этих двух условий (моменты
времени (4) и (5)) означает, что АШ может занять СШ. Он переводит сигнал BUSY в
состояние логического «0» (момент (6)), сообщая тем самым другим АШ о занятии шины,
и переводит в активное состояние сигнал AEN, «отпирая» схему шинного интерфейса и
сигнализируя МП о возможности продолжения обмена (момент времени (7)).

Функционирование арбитра шины при освобождении системной шины

Освобождение СШ арбитром происходит при наступлении одного из следующих условий:

18
Микропроцессорные системы управления. Часть 3

1. По линиям состояния МП сообщает АШ, что он не будет производить очередной


цикл обмена
2. Сигнал BPRN на входе АШ переходит в неактивное состояние (логической «1»).
Это говорит о том, что какой-то из АШ с более высоким приоритетом запросил
доступ к СШ.

Процедура освобождения СШ иллюстрируется рис. 44.

Рис 44
АШ переводит в неактивное состояние сигналы BREQ, AEN и устанавливает на линии
BUSY сигнал логической «1», показывая другим арбитрам, что он освободил СШ.

Сигнал блокировки шины

Как было показано в предыдущем разделе, если в процессе обмена по СШ сигнал BPRN
на входе АШ переходит в неактивное состояние, СШ немедленно (по завершении
текущего цикла обмена) освобождается, и использовавший ее МП вынужден ждать, пока
ему снова будет предоставлен доступ к системной шине. Однако существуют операции
ввода-вывода, которые нежелательно прерывать до их полного завершения. Например,
при вводе данных с 20-разрядного цифрового датчика положения нужно произвести 2
цикла обмена, так как за 1 цикл может быть введено только 1 машинное слово (16
разрядов для 16-разрядного МП). Если доступ к датчику осуществляется по СШ и после 1-
го цикла доступ к СШ будет прерван, только часть данных окажется введенной. И МП
должен будет ожидать неопределенное время для ввода оставшейся порции данных и
продолжения вычислений. Такой ситуации можно избежать, если иметь возможность
запретить АШ освобождать СШ при выполнении «критических» операции ввода-вывода.
Для этого служит специальная управляющая линия блокировки шины LOCK

LOCK
МП АШ

Рис 45
Установка активного состояния линии LOCK на выходе МП производится программно с
помощью специального префикса блокировки шины LOCK, например

A. LOCK IN AL, 0001

Таким образом, при составлении программы имеется возможность защиты «критических»


операции ввода-вывода от прерывания, вызванного отказом в доступе к СШ.

19
Микропроцессорные системы управления. Часть 3

Конвейерные вычислительные структуры


Принцип конвейеризации заключается в следующем: некая операция (Op) разбивается на
несколько подопераций (SOp1…Sopm), выполняемых последовательно (рис. 10)

Op

.
SOp1 SOp2 SOpm
1 2 m
Рис. 10
Результат, полученный в очередной подоперации, является исходными данными для
следующей подоперации.
Длительность каждой подоперации обозначим  i . Тогда общее время выполнения
операции может быть рассчитано как сумма времен отдельных подопераций

t op   i
Важно отметить, что суммарное время выполнения операции остается одинаковым, как
при использовании конвейера, так и без его использования.
В чем же тогда состоит смысл использования конвейера, если общее время выполнения
операции не изменяется? Смысл заключается в возможности выполнения большего числа
операций за единицу времени, так как отдельные подоперации выполняются параллельно.
Если без использования конвейера результаты операции появляются с интервалом
времени t op , то при использовании конвейера – с интервалом  max , где  max - длительность
самой продолжительной подоперации.
Если все  i равны между собой, конвейер работает без задержек, результат каждой
подоперации сразу же поступает на вход следующей подоперации (рис. 11).

SOp1 SOp2 SOp3 SOpm

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

SOp1 F1 SOp2 F2 SOp3 F3 SOpm Fm

Рис. 13
Блоки SOp и F на приведенном выше рисунке составляют ступень конвейера. Переход
результатов от одной ступени конвейера к другой происходит в соответствии с сигналами
синхронизации, которые подаются через равные интервалы времени, называемые
периодами синхронизации.

 c   max   f

20
Микропроцессорные системы управления. Часть 3

Структура конвейера, представленная на рис. 13. носит название линейной.

Классификация конвейерных структур

Конвейерные
вычислительные
структуры

Однофункцио- Многофункцио-
Линейные Конвейеры с
нальные нальные
конвейеры обратной связью
конвейеры конвейеры

Статические Динамические

Рис. 14
Конвейеры с обратной связью предполагают, что характер действий на какой-либо
ступени конвейера может быть изменен в зависимости от результатов, полученных на
последующих ступенях.
Многофункциональный конвейер предполагает, что характер действий на отдельных
ступенях конвейера может быть изменен. В статическом случае – достаточно редко, в
динамическом – часто. При частой смене функций ступеней в многофункциональном
динамическом конвейере он должен работать под управлением специальной системы
диспетчеризации.
В дальнейшем изложении мы будем пользоваться следующими допущениями:
 Будем рассматривать только линейные конвейеры
 Не будем рассматривать вопрос оптимального разбиения операции на
подоперации.

Конвейеризация обработки данных


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

Конвейерный сумматор целых чисел


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

k-1 k k+1
Рис. 15
Представим операцию в следующем виде (рис. 16)

21
Микропроцессорные системы управления. Часть 3

X Y Z

M N

Рис. 16
Здесь X и Y – значения соответствующего разряда в первом и втором слагаемых, Z –
перенос из младшего разряда, M – значение в рассматриваемом разряде после сложения,
N – значение переноса в старший разряд.
Рассматриваемая операция может быть представлена таблицей:

X Y Z M N
0 0 0 0 0
1 0 0 1 0
0 1 0 1 0
0 0 1 1 0
1 1 0 0 1
1 0 1 0 1
0 1 1 0 1
1 1 1 1 1

С использованием данного алгоритма легко может быть построен классический сумматор


целых чисел с последовательным переносом (рис. 17).

An-1 Bn-1 A1 B1 A0 B0 0

X Y Z X Y Z X Y Z

M L M L M L

Cn
Cn-1 C1 C0
Рис. 17
Данный сумматор выполняет операцию C=A+B.

22
Микропроцессорные системы управления. Часть 3

В данном сумматоре суммирование разрядов производится последовательно, так как для


суммирования каждого последующего разряда необходимо знать бит переноса,
полученный при суммировании предыдущего разряда. Если время суммирования каждого
разряда составляет  c , то общее время суммирования двух n-разрядных чисел составляет
   n  c .
Такой же сумматор в конвейерном варианте выглядит следующим образом (рис. 18).

An-1 Bn-1 A1 B1 A0 B0 0

X Y Z
F F F F Ступень 1
M L

X Y Z
F F F Ступень 2
M L

X Y Z
F F Ступень n
M L

Cn
Cn-1 C1 C0
Рис. 18
Как видно из рисунка, на каждом шаге конвейера происходит суммирование одного
разряда. Остальные разряды остаются неизменными, хранятся в специальных фиксаторах.
Такой конвейер позволяет выполнять суммирование потока целых чисел – в то время как
происходит сложение второго разряда первой пары чисел, может уже начинаться
суммирование первого разряда второй пары чисел. Важно заметить, что время
суммирования одной пары не изменяется – оно остается равным    n  c . Но интервал
схода результатов с сумматора теперь равен не   , как раньше, а  c . То есть при
суммировании потока данных конвейерный сумматор в n раз быстрее.

Конвейерный сумматор чисел в формате с плавающей запятой


В формате с плавающей запятой представление числа состоит из двух составляющих -
порядка и мантиссы (рис. 2. 10).

23
Микропроцессорные системы управления. Часть 3

Мантисса
Порядок

0.1453  10 3

Рис. 19
В вычислительных системах числа с плавающей запятой всегда представляются в
нормализованной форме – после точки всегда стоит цифра, отличная от нуля. Это
позволяет избавиться от неоднозначности представления в таком формате. Так как слева
от точки всегда стоит ноль, он не хранится в памяти ЭВМ, как и сама точка.
Представление числа в формате с плавающей запятой в ЭВМ имеет вид:

S М а н т и с с а П о р я д о к

Под представление числа отводится определенное количество разрядов – минимум 32.


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

Произвести выравнивание порядков по большему из чисел, «сдвинув» мантиссу


меньшего числа вправо на соответствующее число разрядов.

d1  0.12  10 1  0.00012  10 2
d 2  0.4657  10 2  0.4657  10 2
Так как у полученных чисел порядки одинаковые, их сложение сводится к сложению
мантисс как обычных целых чисел (мантисса – целое число)
После сложения необходимо представить полученную сумму в нормализованной
форме, скорректировав мантиссу и порядок.

Работающий по такому алгоритму конвейеризированный сумматор представлен на


рис. 20.

24
Микропроцессорные системы управления. Часть 3

A E M B E M

Сравнение порядков, определение разности порядков и наибольшего из


двух слагаемых
Ступень 1

F1 F2 F3 F4

Сдвиг вправо

Ступень 2
F1 F2 F5

Целочисленный сумматор
(также может быть
конвейеризирован) Ступень 3

F1 F6

Приведение числа к нормализованной


форме - коррекция мантиссы и порядка

Ступень 4
F1 F6

С E M
Рис. 20

Итак, на вход конвейера поступают два числа в формате с плавающей запятой (A и B).
На первой ступени конвейера происходит сравнение порядков и определение
максимального из двух чисел, а также разницы порядков. На выходе промежуточные
значения фиксируются в фиксаторах: F1 – старший порядок, F2 – мантисса числа со
старшим порядком, F3 – мантисса числа с младшим порядком, F4 – разность порядков.
На второй ступени конвейера происходит приведение чисел к одному порядку путем
сдвига мантиссы меньшего числа вправо. На выходе промежуточные значения
фиксируются в фиксаторах: F1 – порядок (он теперь одинаков для обоих чисел), F2 –
мантисса первого слагаемого, F5 – мантисса второго слагаемого.
На третьей ступени выполняется целочисленное суммирование мантисс. Используемый
при этом целочисленный сумматор в свою очередь может быть конвейеризирован. На
выходе имеем F1 – порядок суммы, F6 – мантисса суммы.

25
Микропроцессорные системы управления. Часть 3

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


форме с коррекцией мантиссы и порядка. На выходе: F1 – порядок суммы после
приведения к нормализованной форме, F6 – мантисса суммы после приведения к
нормализованной форме. В результате получили число в формате с плавающей запятой C,
которое будет являться суммой исходных чисел A и B.

Конвейеризация выполнения команд в МП


Выполнение команд в МП происходит под управлением устройства управления (УУ). В
общем случае выполнение команды состоит из следующих основных шагов:

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

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


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

Предварительная загрузка команд, очередь команд


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

Предварительная
выборка команд

Выполнение
команды

Рис. 21
Команды, загруженные в МП на этапе предварительной выборки, необходимо временно
сохранить до тех пор, пока не станет возможным их исполнение в АЛУ. Для временного
сохранения используются специальные регистры, получившие название «очередь
команд».
Использование предварительной выборки позволяет передавать очередную команду на
выполнение в АЛУ сразу же после окончания выполнения предыдущей команды, таким
образом, АЛУ не простаивает в ожидании загрузки очередной команды и общая
эффективность работы МП повышается.

26
Микропроцессорные системы управления. Часть 3

Первичная дешифрация, предсказание переходов


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

Предварительная
выборка команд

Первичная
дешифрация

Выполнение
команды

Рис. 22

Задача первичной дешифрации – проанализировать код операции очередной команды, и


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

Определение адреса перехода


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

Предварительная
выборка команд

Первичная
дешифрация
Предсказание
перехода

Выполнение
команды

Рис. 23
Обратите внимание, что здесь мы видим пример конвейера с обратной связью.

27
Микропроцессорные системы управления. Часть 3

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

Предварительная загрузка операндов


После того, как АЛУ закончило выполнение очередной команды, в него загружается
новая команда из очереди команд. Но в этот момент может оказаться, что для выполнения
команды необходимо загрузить из ЗУ один или несколько операндов. На их загрузку
требуется определенное время, в течение которого АЛУ простаивает. Для того чтобы
этого не происходило, нужно ввести в наш конвейер (рис. 23) еще одну операцию –
предварительную загрузку операндов. Для того чтобы определить, есть ли в данной
команде операнды, загружаемые из ЗУ, производится вторичная дешифрация (рис. 24)

Предварительная
выборка команд

Первичная
дешифрация
Предсказание
перехода

Вторичная
дешифрация
Загрузка операндов
из ЗУ

Выполнение
команды

Рис. 24
Загруженные операнды сохраняются в специальных внутренних регистрах МП, таким
образом, к моменту окончания АЛУ выполнения предыдущей команды, очередная
команда и все необходимые данные уже загружены в МП. Такая организация конвейера
позволяет с максимальной эффективностью использовать мощности АЛУ и всего
процессора в целом.

28
Микропроцессорные системы управления. Часть 3

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

Предварительная
выборка команд

Первичная
дешифрация
Предсказание
перехода

Вторичная
дешифрация
Загрузка операндов
из ЗУ

Выполнение
команды

Сохранение
результата в ЗУ

Рис. 25
Микропроцессоры, имеющие конвейер выполнения команд, изображенный на рис. 25,
получили название «МП со скалярной архитектурой». Дальнейшая эволюция
микропроцессоров пошла по пути создания суперскалярной архитектуры, в которой
использовалось более одного конвейера и несколько АЛУ. Таким образом, стало
возможным одновременное выполнение нескольких команд, не связанных друг с другом
по данным.
Важное замечание. Получение максимальной эффективности использования скалярной
архитектуры МП возможно только в случае специальной оптимизации программы под
конкретный МП с учетом его архитектуры и особенностей функционирования отдельных
блоков конвейера.

Применение принципа конвейеризации для построения ЗУ


Мы рассмотрели пути увеличения быстродействия микропроцессора. Предположим, что
мы получили быстродействующий процессор. Быстродействие же ЗУ осталось прежним.
Это приводит к тому, что при обмене МП-ЗУ процессор вынужден ожидать готовности
памяти в цикле асинхронного обмена, что снижает эффективность системы в целом.
Поэтому необходимо подумать о повышении быстродействия ЗУ.
Рассмотрим два наиболее популярных технических решения:

 Схема расслоения памяти


 Использование локального ЗУ

29
Микропроцессорные системы управления. Часть 3

Расслоение ЗУ

Обычное ЗУ можно представить в виде одномерного массива ячеек, каждая из которых


имеет свой уникальный номер – адрес. Расслоение ЗУ подразумевает, что все ячейки
распределяются между несколькими условными «слоями» или банками памяти (рис. 26).

0/0
4/1

1/0
0 5/1
1
2
3
2/0
6/1

3/0
4/1

Рис. 26
На рисунке приведен пример с 4-мя «слоями». Как видно из рисунка, каждые четыре
последовательно расположенные ячейки ЗУ распределяются между разными слоями
«расслоенного» ЗУ. Схема подключения такого ЗУ представлена на рис. 27.

ЗУ F

ЗУ F
К МП
Коммутатор

ЗУ F

ЗУ F

А0 А1
…..
А15 А2
Рис. 27
Идея использования расслоенного ЗУ заключается в том, что считывание из ЗУ
производится «пакетными» циклами, то есть одновременно считываются данные из
нескольких ячеек ЗУ (соответственно количеству слоев, в нашем примере – 4). В качестве
адреса используются 14 старших линий адреса (из 16-ти), считанные из каждого слоя
значения попадают в регистры-фиксаторы «F» и оттуда, при помощи коммутатора,
направляются на шину данных. Младшие линии адреса (A0, A1), подключенные к
коммутатору, позволяют менять при необходимости порядок передачи данных внутри
пакета.
30
Микропроцессорные системы управления. Часть 3

Очевидно, что при использовании такой организации ЗУ мы получаем выигрыш в


скорости, пропорционально количеству «слоев» памяти.
Важное замечание. Реальный выигрыш в скорости работы с ЗУ при использовании
«расслоения» можно получить только в том случае, если процессору действительно
необходимо считывать последовательно расположенные данные. То есть программа
должна быть определенным образом оптимизирована. С точки зрения команд, должно
быть минимизировано количество переходов, так как они нарушают последовательную
логику выборки из ЗУ. С точки зрения данных – данные должны быть размещены
компактно таким образом, чтобы максимально использовать преимущества пакетного
цикла передачи.
Если же программа не оптимизирована, может быть сведена на нет вся потенциальная
эффективность «расслоенного» ЗУ. Предположим, процессор считывает содержимое 4-х
ячеек из ЗУ, а реально требуется информация только из одной ячейки. Очевидно, что
эффективность «расслоенной» памяти будет в этом случае равна 0.

Использование локального запоминающего устройства


Локальным запоминающим устройством (ЛЗУ) называют буферное ЗУ, расположенное
между МП и основным ЗУ (рис. 28)

МП ЛЗУ ОЗУ

Рис. 28
Идея использования ЛЗУ базируется на том факте, что быстродействие ЛЗУ существенно
больше быстродействия основного ЗУ. Это достигается за счет использования для
построения ЛЗУ статических запоминающих элементов (в отличие динамических
запоминающих элементов, используемых в ОЗУ). Но так как статическое ЗУ существенно
дороже динамического, объем ЛЗУ существенно меньше объема ОЗУ.
Итак, ЛЗУ характеризуется двумя основными моментами:

1. Быстродействие ЛЗУ существенно больше быстродействия ОЗУ


2. Емкость ЛЗУ существенно меньше емкости ОЗУ.

Использование ЛЗУ базируется на двух основополагающих допущениях:

1. Микропроцессор в процессе своей работы многократно обращается к одним и тем


же данным
2. Эти данные расположены в ЗУ компактно.

Допущение №1 в большинстве случаев справедливо. Данные, являющиеся кодами команд


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

31
Микропроцессорные системы управления. Часть 3

Допущение №2, вообще говоря, можно считать справедливым только при определенной
организации программы – оптимизации. Таким образом, получение полного эффекта от
использования ЛЗУ возможно только при оптимизации программы.
ЛЗУ является «невидимым» для МП и программы. МП, запрашивая данные из памяти по
определенному адресу, не знает о наличии ЛЗУ. Поэтому ЛЗУ часто называют «кэш-
памятью», от английского слова cache (тайный склад, тайник).
Так как объем ЛЗУ существенно меньше объема ЗУ, основная задача, решаемая при
проектировании ЛЗУ – оптимальное отображение в ЛЗУ той части ОЗУ, к которой как раз
обращается МП наиболее часто в данный интервал времени.

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

1. Принять от МП запрос на загрузку данных из основного ЗУ, расположенных по


определенному адресу
2. Проверить, есть ли эти данные в ЛЗУ.
3. Если есть (случай «кэш-попадания»), вернуть процессору данные из ЛЗУ
4. Если нет (случай «кэш-промаха»), загрузить данные из ОЗУ в ЛЗУ и передать их
процессору.

Более подробно организация управления ЛЗУ будет рассмотрена в одном из следующих


разделов.

Задача построения оптимальной архитектуры ЛЗУ предполагает минимизацию


«промахов» при относительно небольшом объеме ЛЗУ.

B. Простейшая схема ЛЗУ

МП

ЛЗУ

ОЗУ

Рис. 29
В простейшей схеме ЛЗУ, изображенной на рис. 29, в ЛЗУ загружается целиком блок
последовательно расположенных данных из ОЗУ. Размер этого блока определяется
размером ЛЗУ.

32
Микропроцессорные системы управления. Часть 3

Когда МП запрашивает данные по определенному адресу, контроллер ЛЗУ проверяет,


есть ли они в ЛЗУ и в случае «кэш-попадания», возвращает их в МП. В случае «кэш-
промаха», контроллер ЛЗУ обновляет полностью все данные в ЛЗУ.
Достоинство: данной схемы: простота.
Недостаток: данные в ЛЗУ обновляются всем блоком. При большом количестве промахов
это будет приводить к задержкам в работе ЛЗУ и потере его эффективности.
Такая простейшая схема будет эффективно работать только при очень хорошо
оптимизированной программе, когда максимальное количество данных сразу попадает в
ЛЗУ.

C. Переключающееся ЛЗУ

МП

ЛЗУ1 ЛЗУ2

ОЗУ

Рис. 30
Идея переключающегося ЛЗУ представлена на рис. 30. По сути дела мы имеем здесь два
ЛЗУ, которые работают независимо, но под управлением одного контроллера. Например,
одно ЛЗУ может использоваться для данных, другое – для команд. В этом случае
вероятность промахов снижается, так как данные и команды, как правило, лежат
компактно, но отдельно.
Другой вариант использования такой схемы – разделение ЛЗУ на две части. Пока
осуществляется поиск данных в одной части ЛЗУ, может «подкачиваться» информация в
другую часть. Таким образом, экономится время на обновление ЛЗУ в случае фиксации
«кэш-промаха».

D. Двухпортовое ЗУ

В данном случае ЛЗУ строится на основе двухпортового ЗУ, архитектура которого


представлена на рис. 31.

33
Микропроцессорные системы управления. Часть 3

A1
ДШ

Матрица ячеек

A2 ДШ

DI 1 DO 1

DI 2 DO 2

Блок управления и синхронизации

Рис. 31
Двухпортовое ЗУ позволяет выполнять одновременный доступ по двум каналам,
например, одновременно считывать и записывать. Таким образом, подкачка данных в ЛЗУ
может выполняться одновременно с поиском данных в нем.
Недостаток: большая стоимость двухпортового ЗУ.

Все рассмотренные выше схемы являются простейшими. Их главной отличительной


чертой и главным недостатком является необходимость переноса из ОЗУ в ЛЗУ сразу
целого блока данных. Это приводит к большим потерям времени в случае «кэш-промаха»,
так как нужно подгружать из ОЗУ большой объем данных.

E. Ассоциативное ЛЗУ

Попытка уйти от перезагрузки полного блока сделана в архитектуре ассоциативного ЛЗУ.


В данном случае из ОЗУ в ЛЗУ может загружаться содержимое отдельной ячейки. Таким
образом, каждая ячейка ЛЗУ содержит информацию из какой-либо ячейки ОЗУ. Но в этом
случае для каждой ячейки ЛЗУ необходимо хранить адрес той ячейки основного ЗУ,
данные которой она содержит. Этот адрес называется тэгом (tag) адреса и хранится он в
таблице тэгов.

34
Микропроцессорные системы управления. Часть 3

Адрес Данные
ОЗУ

Тэг адреса Данные

Тэг адреса Данные


Контроллер ЛЗУ Коммутатор

Тэг адреса Данные

Адрес Данные

МП

Рис. 32
При поступлении от МП запроса на чтение данных, контроллер ЛЗУ проверяет по таблице
тэгов, есть ли данные, соответствующие данному адресу, в ЛЗУ. Если есть – они
возвращаются МП, если нет (случай «кэш-промаха»), данные загружаются из основной
памяти, помещаются в одну из ячеек ЛЗУ и выдаются в МП. Таким образом, в ситуации
«кэш-промаха» перезагружается только одна ячейка ЛЗУ. Это экономит время и является
главным преимуществом данной архитектуры.
Однако в такой схеме есть один серьезный недостаток. Для того чтобы определить, есть
ли нужные данные в ЛЗУ, контроллер должен просмотреть всю таблицу тэгов. Длина ее
равна количеству ячеек. Такой поиск может занять сравнительно много времени, сводя,
таким образом, на нет выигрыш, полученный путем минимизации перезагрузок. Именно
поэтому такая схема не получила большого распространения на практике и применяется в
настоящий момент только в небольшом внутреннем кэше некоторых быстродействующих
МП.
Недостатком является также необходимость хранения в таблице тэгов полных адресов
ячеек. За счет этого таблица тэгов занимает много места, соответственно полезный объем
ЛЗУ (пригодный для хранения данных) уменьшается.
F. ЛЗУ прямого отображения

35
Микропроцессорные системы управления. Часть 3

Также называется иногда наборным или множественным (от слова «множество»). Идея
ЛЗУ прямого отображения заключается в разбиении всего ОЗУ на блоки (страницы).
Размер страницы равен размеру ЛЗУ. Рассмотрим архитектуру ЛЗУ прямого отображения
на примере: пусть объем основного ЗУ составляет 16 ячеек, объем ЛЗУ – 4 ячейки. Тогда
ЗУ разбивается на 4 страницы по 4 ячейки (рис. 33.).

ЛЗУ ОЗУ

0 0
1 1
Блок 0
2 2
3 3
4
5
Блок 1
6
7
8
9
Блок 2
A
B
C
D
Блок 3
E
F

Рис. 33
ЛЗУ организовано таким образом, что все ячейки основного ЗУ, занимающие одинаковую
позицию на своей странице, отображаются в одну и ту же ячейку ЛЗУ (рис. 34).

Таблица
тэгов
ЛЗУ Страница 0 Страница 1 Страница 2 Страница 3
№ стр 0 0/0 0/4 0/8 0/C
№ стр 1 1/1 1/5 1/9 1/D
№ стр 2 2/2 2/6 2/A 2/E
№ стр 3 3/3 3/7 3/B 3/F

Рис. 34
Таким образом, на одну и ту же ячейку ЛЗУ могут претендовать несколько ячеек
основной памяти. Следовательно, в таблице тэгов ЛЗУ достаточно хранить номер
страницы, ячейка которой отображена в данный момент в соответствующей ячейке ЛЗУ.
Так как объем ЛЗУ и количество страниц обычно кратны 2-м, номером страницы
автоматически становится старшая часть адреса запрашиваемой ячейки. А младшая часть
этого адреса становится индексом внутри страницы (он же индекс внутри ЛЗУ). Для
нашего примера (4-разрядный адрес) 2 старших разряда будут определять номер
страницы, два младших – индекс ячейки на странице (он же – индекс ячейки ЛЗУ).

36
Микропроцессорные системы управления. Часть 3

В результате существенно упрощается алгоритм проверки запрашиваемого адреса на


наличие в ЛЗУ. Необходимо определить индекс по младшей части адреса и сравнить
старшую часть адреса (номер страницы) со значением, хранящимся в соответствующей
строке таблицы тэгов. Если совпало – в данной ячейке ЛЗУ хранится ячейка именно с
указанным адресом (с нужной страницы ОЗУ). Если не совпало – фиксируем ситуацию
«кэш-промаха» и загружаем в ЛЗУ по полученному индексу данные из соответствующей
ячейки соответствующей страницы ОЗУ. В результате поиск адреса в ЛЗУ сводится к
одному сравнению. Данный факт является главным преимуществом архитектуры ЛЗУ
прямого отображения.
Недостатком данной архитектуры является как раз то, что для отображения нескольких
ячеек ОЗУ используется одна ячейка ЛЗУ. Если программа не оптимизирована и
многократно обращается к ячейкам, имеющим одинаковый индекс на разных страницах,
например, к данным из ячеек 0 и 4 в нашем примере (которые отображаются в одну и ту
же ячейку ЛЗУ), мы получим ситуацию постоянно повторяющегося промаха
(«пробуксовку кэша»). ЛЗУ при каждом обращении будет требоваться подгружать данные
из ОЗУ, что резко снижает его эффективность
Рассмотренные архитектуры ассоциативного ЛЗУ и ЛЗУ с прямым отображением
представляют собой крайние случаи оптимизации: в первом случае минимизируется
количество промахов, во втором – минимизируется время поиска в ЛЗУ. И та и другая
архитектуры имеют и свои недостатки. Разумно предположить, что объединение
указанных подходов позволит получить весьма эффективное решение. Такой
«гибридный» вариант получил название наборно-ассоциативного ЛЗУ.
G. Наборно-ассоциативное ЛЗУ

Архитектура наборно-ассоциативного ЛЗУ похожа на архитектуру ЛЗУ прямого


отображения (рис. 35).

Таблица Таблица
тэгов
ЛЗУ тэгов
ЛЗУ Страница 0 Страница 1 Страница 2 Страница 3
№ стр 0 № стр 0 0/0 0/4 0/8 0/C
№ стр 1 № стр 1 1/1 1/5 1/9 1/D
№ стр 2 № стр 2 2/2 2/6 2/A 2/E
№ стр 3 № стр 3 3/3 3/7 3/B 3/F
Блок 0 Блок 1

Рис. 35
Точно также вся основная память разделяется на страницы. Однако само ЛЗУ состоит из
нескольких (в данном примере - двух) независимых блоков, каждый из которых
представляет собой, по сути, ЛЗУ прямого отображения. Таким образом, ячейка ОЗУ,
имеющая определенный индекс на странице, может быть загружена в одну из двух ячеек
ЛЗУ, имеющих такой же индекс в блоке 0 или блоке 1. В ЛЗУ одновременно может
находиться информация из двух или более ячеек основного ЗУ, имеющих одинаковый
индекс и расположенных на разных страницах.
Проверка наличия запрашиваемого адреса в ЛЗУ сводится к сравнению номера страницы,
расположенного в соответствующей строке таблицы тэгов, с номером страницы
запрашиваемого адреса. При этом количество сравнений равно количеству блоков в ЛЗУ.
Поэтому скорость проверки запрашиваемого адреса практически такая же, как и для ЛЗУ
прямого отображения и намного меньше, чем в случае ассоциативного ЛЗУ.
При такой архитектуре вероятность «пробуксовки кэша» снижается. Однако усложняется
аппаратная реализация ЛЗУ.

37
Микропроцессорные системы управления. Часть 3

В настоящее время ЛЗУ наборно-ассоциативной архитектуры получили наибольшее


распространение благодаря удачному сочетанию преимуществ ассоциативных ЛЗУ и ЛЗУ
прямого отображения.

H. ЛЗУ с секторной организацией

В трех последних рассмотренных нами архитектурах в ЛЗУ присутствует таблица тэгов,


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

Страница 0 Страница 1 Страница 2 Страница 3


Таблица
тэгов
ЛЗУ 0/0 0/4 0/8 0/C
№ стр 0 1 1/1 1/5 1/9 1/D
№ стр 2 3 2/2 2/6 2/A 2/E
3/3 3/7 3/B 3/F

Рис. 36
При такой организации ячейки на странице ОЗУ и в ЛЗУ объединены в сектора. Каждый
сектор объединяет несколько последовательно расположенных ячеек, таким образом, в
таблице тэгов достаточно хранить адресную информацию, относящуюся ко всему сектору
(адрес первой ячейки или номер страницы). Количество тэгов уменьшается
пропорционально количеству ячеек в секторе. На рис. 36. представлено ЛЗУ прямого
отображения с секторной организацией. Размер сектора – 2 ячейки. Таблица тэгов хранит
номер страницы для всего сектора в целом, хотя ячейки сектора загружаются в ЛЗУ
индивидуально (естественно, обе ячейки сектора принадлежат одной и той же странице).
В результате, полный адрес ячейки ЗУ распадается уже на 3 компонента – номер
страницы, номер сектора и номер ячейки в секторе. В нашем примере (4-х разрядный
адрес), номеру страницы соответствуют 2 старших бита (2-й и 3-й), 1-й бит определяет
номер сектора, 0-й бит – номер ячейки в секторе.
Из рисунка 36. видно, что в данном примере размер таблицы тэгов удалось уменьшить в 2
раза.
В приведенном выше изложении мы употребляли термин «ячейка», не расшифровывая,
что же это такое. «Ячейка» – объем данных, который может быть передан между ОЗУ,
ЛЗУ и МП за 1 цикл обмена. Очевидно, что для 16-разрядного МП это 2 байта, для 32-х
разрядного МП – 4 байта. Для современных процессоров, поддерживающих пакетные
циклы обмена, размер условной «ячейки» может достигать 32 байт и более.
ЛЗУ всегда работает с данными на уровне «ячеек». То есть при загрузке данных из ОЗУ в
ЛЗУ всегда загружается вся «ячейка» целиком.

Управление работой ЛЗУ


Как уже говорилось, в состав ЛЗУ входит контроллер, осуществляющий управление его
работой. Обобщенная архитектура ЛЗУ с учетом наличия контроллера представлена на
рис. 37.

38
Микропроцессорные системы управления. Часть 3

Адрес
Контроллер ЛЗУ

Блок
Данные Таблица поиска и Адрес
ОЗУ ЗУ МП
тэгов сравнения
адресов

ЛЗУ

Данные

Рис. 37
Рассмотрим работу ЛЗУ в двух случаях: запись (из МП в ОЗУ) и чтение (из ОЗУ в МП)

Управление ЛЗУ в процессе записи данных из МП в ОЗУ

1. МП начинает цикл обмена по записи (устанавливает адрес на шине адреса, данные


на шине данных, активизирует управляющие линии)
2. Запрашиваемый адрес поступает в блок поиска и сравнения адресов ЛЗУ. Блок
производит поиск указанного адреса в таблице тэгов. Далее возможны два
варианта:
a. Адрес найден («случай кэш-попадания»), то есть данные из запрашиваемой
ячейки ОЗУ уже содержатся в ЛЗУ. В этом случае контроллер ЛЗУ
обновляет эти данные, записывая в найденную ячейку ЛЗУ новые данные,
переданные МП.
b. Адрес не найден (случай «кэш-промаха»). В данном случае необходимо
выделить какую-то ячейку ЛЗУ под сохранение данных и сохранить их.
Контроллер ЛЗУ производит выделение ячейки ЛЗУ в соответствии с
алгоритмом замещения, который будет описан ниже.

Помимо записи данных в ЛЗУ, они должны быть сохранены также и в основном ЗУ. Это
может быть сделано в соответствии с одним из следующих алгоритмов:

1. Алгоритм «сквозной записи». Одновременно с записью данных в ЛЗУ происходит


их сохранение в ОЗУ
2. Алгоритм «обратной записи». Данные сохраняются только в ЛЗУ, но при этом
помечаются как модифицированные (т.е. не соответствующие ОЗУ). Сохранение
же в основное ОЗУ производится позже, например, во время простоя системной
шины, или когда занимаемая ячейка ЛЗУ потребуется для хранения другой
информации.

Достоинство первого алгоритма – надежность, так как данные в ОЗУ и ЛЗУ всегда
соответствуют друг другу (когерентны). Недостаток – при каждой операции записи
приходится выполнять долгий цикл обращения к основному ЗУ.
Достоинство второго алгоритма – нет обращения к основному ЗУ в каждом цикле записи.
Недостаток – более сложная аппаратная реализация ЛЗУ (нужно реализовывать
39
Микропроцессорные системы управления. Часть 3

отложенное сохранение, а также хранить для каждой ячейки признак


модифицированности).

Управление ЛЗУ в процессе чтения данных из ОЗУ в МП

1. МП начинает цикл обмена по чтению (устанавливает адрес на шине адреса,


активизирует управляющие линии)
2. Запрашиваемый адрес поступает в блок поиска и сравнения адресов ЛЗУ. Блок
производит поиск указанного адреса в таблице тэгов. Далее возможны два
варианта:
a. Адрес найден («случай кэш-попадания»), то есть данные из запрашиваемой
ячейки ОЗУ уже содержатся в ЛЗУ. В этом случае контроллер ЛЗУ
возвращает МП данные, хранящиеся в ЛЗУ.
b. Адрес не найден (случай «кэш-промаха»). В данном случае необходимо
выделить какую-то ячейку ЛЗУ, загрузить в нее данные из ОЗУ,
расположенные по запрашиваемому адресу и вернуть эти данные в МП.
Контроллер ЛЗУ производит выделение ячейки ЛЗУ в соответствии с
алгоритмом замещения, который будет описан ниже.

Загрузка данных из ОЗУ в ЛЗУ может быть организована в соответствии с двумя


алгоритмами:

1. Алгоритм «отложенного чтения». Загрузка из ОЗУ в ЛЗУ (п.2b) начинается только


после того, как запрашиваемый адрес не найден в ЛЗУ.
2. Алгоритм «сквозного чтения». Цикл чтения из ОЗУ данных по запрашиваемому
адресу начинается одновременно с началом поиска в ЛЗУ. В случае «кэш-
попадания» цикл прерывается, в случае «кэш-промаха» - цикл завершается
загрузкой необходимых данных в ЛЗУ.

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

Алгоритм замещения данных в ЛЗУ

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

1. «Случайное замещение». Ячейка выбирается среди возможных случайным


образом. Контроллер ЛЗУ содержит в своем составе генератор случайных чисел.
Этот алгоритм является наипростейшим с точки зрения аппаратной реализации,
однако он неэффективен, так как может привести к «затиранию» часто
используемых данных.

40
Микропроцессорные системы управления. Часть 3

2. «Метод простой очереди». Описывается принципом «первым вошел, первым


вышел» (FIFO). Замещению подвергаются данные, загруженные наиболее давно.
Такой алгоритм обеспечивает примерно одинаковое время хранения данных в ЛЗУ.
3. «Удаление редко используемой информации». Замещению подвергаются данные, к
которым дольше всего не было обращений. Таким образом, наиболее часто
используемые данные сохраняются в ЛЗУ максимально долго.

Использование методов 2 и 3 требует особой аппаратной реализации ЛЗУ, в частности


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

Операционные системы ЭВМ


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

Пример 2. Нелинейная система стабилизации. Данный пример уже рассматривался нами


некоторое время назад. Пусть имеется система со следующей структурой (рис. 38):

g(t) e(t) x(t)


+ К 1/s 1/s
u(t)

Рис. 38
В данной системе будут существовать незатухающие колебания. Однако, меняя
коэффициент усиления k при изменении знака произведения x1*x2, можно сделать
процесс затухающим (рис. 39).

41
Микропроцессорные системы управления. Часть 3

К1
g(t) x(t)
+ 1/s 1/s
К2

x2 x1
s
x1

Рис. 39

Реализация такой системы может быть представлена в виде двух управляющих программ
с разными коэффициентами усиления (k1 и k2), которые поочередно активизируются при
изменении знака x1*x2 (рис. 40).

Событие - смена
знака x1*x2
Переключатель

Управляющая Управляющая
программа для программа для
варианта k1 варианта k2

Рис. 40
Поочередная активизация управляющих программ при наступлении соответствующего
события как раз и представляет собой одну из задач управления работой ЭВМ, решением
которой занимается операционная система.

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


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

Частотный принцип. Для действий, которые часто встречаются при работе ОС,
обеспечиваются условия их быстрого выполнения.

42
Микропроцессорные системы управления. Часть 3

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


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

43
Микропроцессорные системы управления. Часть 3

описание (контекст), определяющий возможность доступа к нему со


стороны той или иной программы.

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

Между процессами могут существовать следующие отношения:


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

44
Микропроцессорные системы управления. Часть 3

Отношение приоритетности. Процесс, имеющий больший приоритет, получит доступ к


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

Каждый процесс характеризуется состоянием. Существуют следующие основные


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

Состояние процесса может изменяться в соответствии со следующей диаграммой:

A R

Рис. 41
Если вернуться к нашим примерам, то в случае асинхронного обмена при ожидании
готовности ведомого устройства процесс переводится из активного состояния в состояние
блокировки до получения сигнала готовности от внешнего устройства. При получении
такого сигнала процесс переводится в состояние готовности, а после освобождения
процессора – в активное состояние.
В случае нелинейной системы стабилизации процессы k1 и k2 попеременно переводятся в
состояния активное и готовности при наступлении события смены знака произведения
x1*x2.
Задача изменения состояния процесса в соответствии с определенными правилами при
наступлении определенных событий называется задачей диспетчеризации.

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

45
Микропроцессорные системы управления. Часть 3

производится на базе некоего физического. Имея один физический ресурс,


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

Диспетчеры ОС
Как уже говорилось выше, задача диспетчеризации заключается в изменении состояния
процессов при наступлении определенных событий в соответствии с заданными
правилами. Решением задачи диспетчеризации занимается специальный модуль в составе
ОС – диспетчер процессов.
Для того чтобы управление процессами было возможным, каждому процессу
присваивается индивидуальный номер – идентификатор. Вся информация,
характеризующая процесс, помещается в специально отведенной области памяти,
называемой блоком управления процессом (PCB, process control block), рис. 42

46
Микропроцессорные системы управления. Часть 3

Рис. 42
В состав PCB входят следующие данные:
1. Номер (идентификатор) процесса
2. Состояние процесса
3. Список ресурсов, выделенных процессу
4. Другие данные, характеризующие процесс (адрес текущей команды, копия
содержимого регистров процессора и т. п.)

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

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

47
Микропроцессорные системы управления. Часть 3

Рис. 44
Список процессов, находящихся в состоянии готовности, содержит перечень
идентификаторов процессов, ожидающих выполнения на процессоре и имеющих в своем
распоряжении все необходимые ресурсы для этого.
Список заблокированных процессов содержит идентификаторы процессов, ожидающих
выделения им какого-либо ресурса.
Список событий содержит информацию о событиях, которые связаны с занятием или
освобождением ресурсов в системе. Наступление таких событий может повлиять на
переход процесса из состояния блокировки в состояние готовности. Примером такого
события может служить получение сигнала готовности от ведомого устройства в случае
асинхронного обмена.
Диспетчер активизируется таймером через заданные промежутки времени  (рис. 45).


Таймер Диспетчер

Рис. 45
При каждой активизации диспетчер выполняет следующие действия:
1. Перевод процессов из состояния блокировки в состояние готовности. Диспетчер
анализирует список событий и определяет, какой из процессов можно перевести из
состояния блокировки в состояние готовности в соответствии с каждым событием.
Каждое событие связано с освобождением или занятием некоторого ресурса и при
его наступлении процесс, ожидающий предоставления этого ресурса, может быть
переведен в состояние готовности, если необходимый ему ресурс освободился.
Если несколько процессов находятся в ожидании одного и того же ресурса,
применяется схема приоритетов, позволяющая выбрать из конкурирующих
процессов процесс с наивысшим приоритетом и перевести в состояние готовности
именно его. Например, если один из заблокированных процессов ожидает сигнала
готовности от ведомого устройства (случай асинхронного обмена), при
обнаружении события поступления этого сигнала в списке событий диспетчер
переводит этот процесс в состояние готовности. Перевод в состояние готовности
заключается в то, что
a. Изменяется состояние процесса в PCB этого процесса (с L на R).
b. Идентификатор этого процесса изымается из списка заблокированных
процессов и помещается в список процессов, находящихся в состоянии
готовности.

48
Микропроцессорные системы управления. Часть 3

2. Перевод процессов из состояния готовности в активное состояние. Для всех


процессов, находящихся в состоянии готовности, определяется приоритет. Процесс
с максимальным приоритетом переводится в активное состояние (начинает
выполняться на процессоре). Процесс, бывший до этого активным, переводится в
состояние готовности и помещается в список готовых процессов. Определение
приоритетов процессов происходит в соответствии с одной из типовых схем,
например, наибольший приоритет получает процесс, дольше всего находившийся в
состоянии готовности (дольше всего не исполнявшийся) или использовавший
суммарно наименьшее количество процессорного времени. Перевод процесса в
активное состояние заключатся в следующем:
a. Изменяется состояние процесса в PCB этого процесса (с R на A).
b. Идентификатор этого процесса изымается из списка процессов,
находящихся в состоянии готовности
Такие действия диспетчера получили названия планирования процессов. Так как
диспетчер вызывается с интервалом , с таким же интервалом происходит
перепланирование процессов. Следовательно, каждому процессу отводится интервал
времени  для выполнения, после чего он переводится в состояние готовности, а активным
становится другой процесс. Интервал  часто называют квантом процессора. Величина
кванта процессора определяется аппаратными настройками вычислительной системы
(таймера). Как правило, она составляет несколько десятых долей секунды.

Асинхронные процессы и их синхронизация


Процессы относятся к асинхронным, если скорости исполнения любой части процесса не
взаимосвязаны друг с другом и с другими процессами. Другими словами, если есть два
асинхронных процесса, и в каждом из них мы выделим определенную группу команд,
нельзя сказать заранее, какой процесс выполнит «свою» выделенную группу раньше.
Такая ситуация вызвана тем, что время работы асинхронного процесса нельзя точно
определить так как он может содержать в себе задержки, время которых не поддается
точной оценке. Например, если процесс выполняет обмен с асинхронным устройством, и
устройство не готово, возникает задержка до готовности устройства, и длительность этой
задержки заранее не известна.
Задача синхронизации асинхронных процессов возникает в следующих случаях:
1. Если процессы обращаются к одному ресурсу, который является неразделяемым и
может быть использован только одним процессом в данный момент времени. В
этом случае, после начала обращения к ресурсу одним процессом, необходимо не
допустить обращения к этому ресурсу со стороны других процессов.
2. Задача организации строгой последовательности обращения процессов к общему
ресурсу. Например, два процесса используют общую область памяти для обмена
данными, причем один процесс выполняет запись данных в эту область, а второй –
чтение. В этом случае задача недопущения одновременного обращения процессов к
ресурсу дополняется задачей организации строгой последовательности доступа к
нему: сначала обращается «пишущий» процесс, потом «читающий» и т.д.

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

49
Микропроцессорные системы управления. Часть 3

Если процесс 1 начал выполнение своего критического участка (КУ), процесс 2 не должен
начинать выполнение своего КУ до завершения первым процессом выполнения КУ. Такая
ситуация получила название задачи взаимоисключения.
Самый простой путь решения задачи взаимоисключения – после начала выполнения
процессом КУ запретить активизацию другого, конкурирующего процесса. То есть
запретить передиспетчеризацию процессов, например, запретив прерывания в системе.
Кстати говоря, нечто подобное уже рассматривалось нами при знакомстве с организацией
прерываний – программа имела возможность запретить обработку прерываний на время
выполнения некоего участка кода, выполнение которого не может быть прервано.
Однако этот путь имеет большой недостаток. Дело в том, что время, необходимое для
выполнения КУ процессом неизвестно. Вообще говоря, оно может быть достаточно
большим. И если на это время запретить диспетчеризацию в системе, все остальные
процессы (включая саму ОС) будут блокированы на неопределенное время. Такой подход
не может быть признан корректным.
Следовательно, необходимо создание более гибких механизмов синхронизации.
Попробуем познакомиться с такими механизмами на нескольких примерах. Сделаем
следующие допущения:
1. Будем рассматривать случай двух конкурирующих процессов
2. Будем считать, что асинхронные процессы существуют одновременно (являются
параллельными)
3. Будем использовать для написания примеров язык Pascal.

В приведенных ниже примерах конструкция


Par_begin
Proc1;
Proc2;
Par_end;

означает, что процедуры Proc1 и Proc2 выполняются в двух параллельных потоках,


принадлежащих двум асинхронным процессам.

Пример 1

Program 1;
Var ProcNum : integer; {Глобальная переменная}
procedure Proc1;
begin
While True do {Бесконечный цикл, выполняемый в процессе}
begin
While (ProcNum=2) do ; {*}{Проверка разрешения на вход в КУ}
CrBlock1; {Критический блок}
ProcNum:=2; {Передача разрешения на вход в КУ другому процессу}
………………………… {Другие операции процесса, не входящие в КУ}
end;
end;

procedure Proc2;
begin
While True do
begin

50
Микропроцессорные системы управления. Часть 3

While (ProcNum=1) do ;
CrBlock2;
ProcNum:=1;
……………………………
end;
end;

begin
ProcNum:=1; {Инициализация глобальной переменной}
Par_begin {Запуск параллельных процессов}
Proc1;
Proc2;
Par_end;
end.

Процедура (подпрограмма) Proc1 выполняется процессом 1, процедура Proc2 –


процессом 2. Собственно критический блок представлен процедурами (подпрограммами)
CrBlock1 для процесса 1 и CrBlock2 для процесса 2. Так как процессы должны знать, что
один из них вошел в свой критический блок, вводится глобальная (доступная обоим
процессам) переменная ProcNum, которая, по сути дела, определяет номер процесса,
имеющего право на вход в КУ. Цикл {*} представляет собой проверку разрешения на вход
в КУ. Если данному процессу вход запрещен, процесс ожидает в этом цикле до установки
переменной ProcNum в разрешающее значение.
В данном примере представлен вариант жесткой синхронизации – процессы могут
выполнять свои критические участки только в определенной последовательности –
сначала один, потом второй. Попробуем предложить вариант, когда возможно вхождение
процессов в свои КУ в произвольном порядке.

Пример 2

Program 2;
Var CrB1, CrB2 : boolean; {Глобальные переменные}
procedure Proc1;
begin
While True do {Бесконечный цикл, выполняемый в процессе}
begin
While CrB2 do ; {*}{Проверка разрешения на вход в КУ}
CrB1:=True; {**}{Сигнализируем второму процессу о вхождении к КУ}
CrBlock1; {Критический блок}
CrB1:=False; {Сигнализируем второму процессу о выходе из КУ}
………………………… {Другие операции процесса, не входящие в КУ}
end;
end;

procedure Proc2;
begin
While True do {Бесконечный цикл, выполняемый в процессе}
begin
While CrB1 do ; {*}{Проверка разрешения на вход в КУ}
CrB2:=True; {**}{Сигнализируем первому процессу о вхождении к КУ}
CrBlock2; {Критический блок}
CrB2:=False; {Сигнализируем первому процессу о выходе из КУ}
………………………… {Другие операции процесса, не входящие в КУ}

51
Микропроцессорные системы управления. Часть 3

end;
end;

begin
CrB1:=False; {Инициализация глобальных переменных}
CrB2:=False;
Par_begin {Запуск параллельных процессов}
Proc1;
Proc2;
Par_end;
end.

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


нахождении процесса в своем критическом блоке. Процесс, перед входом в критический
блок, проверяет, не находится ли другой процесс уже внутри своего критического блока.
Если находится – ждет, пока тот закончит выполнение КУ. Такая схема синхронизации
является гибкой, так как процессы могут выполнять свои критические блоки в
произвольном порядке (но не одновременно!).
Данный вариант механизма синхронизации имеет один серьезный недостаток. Так как
процессы асинхронны, они оба одновременно могут подойти к выполнению строки {*},
выполнить проверку, увидеть, что конкурирующий процесс не выполняет критический
блок и начать выполнение своего критического блока. То есть при одновременном
выполнении процессами операции {*}, оба процесса одновременно входят в КУ и
взаимоисключающая синхронизация нарушается.
Для выхода из создавшегося положения можно поменять местами операции {*} и {**} в
приведенном выше примере. Тогда процесс будет сигнализировать конкуренту о
намерении выполнить КУ еще до проверки.

Пример 3

Program 3;
Var CrB1, CrB2 : boolean; {Глобальные переменные}
procedure Proc1;
begin
While True do {Бесконечный цикл, выполняемый в процессе}
begin
CrB1:=True; {**}{Сигнализируем второму процессу о вхождении к КУ}
While CrB2 do ; {*}{Проверка разрешения на вход в КУ}
CrBlock1; {Критический блок}
CrB1:=False; {Сигнализируем второму процессу о выходе из КУ}
………………………… {Другие операции процесса, не входящие в КУ}
end;
end;

procedure Proc2;
begin
While True do {Бесконечный цикл, выполняемый в процессе}
begin
CrB2:=True; {**}{Сигнализируем первому процессу о вхождении к КУ}
While CrB1 do ; {*}{Проверка разрешения на вход в КУ}
CrBlock2; {Критический блок}
CrB2:=False; {Сигнализируем первому процессу о выходе из КУ}
………………………… {Другие операции процесса, не входящие в КУ}
52
Микропроцессорные системы управления. Часть 3

end;
end;

begin
CrB1:=False; {Инициализация глобальных переменных}
CrB2:=False;
Par_begin {Запуск параллельных процессов}
Proc1;
Proc2;
Par_end;
end.

Но и в этом случае возможны проблемы, так как оба процесса могут одновременно
подойти к выполнению строки {**}, одновременно установить переменные CrB1 и CrB2 в
True, а затем при выполнении строки {*} будет происходить бесконечное ожидание
процессами друг друга (так называемый deadlock).
Попробуем предложить другую схему синхронизации, в которой эта проблема должна
быть решена.

Пример 4

Program 4;
Var Enter1, Enter2 : boolean; {Глобальные переменные}

procedure Delay; {Вводит задержку случайной длительности}

procedure Proc1;
begin
While True do {Бесконечный цикл, выполняемый в процессе}
begin
Enter1:=True; {Сигнализируем о намерении войти в КУ}
While Enter2 do {Если конкурирующий процесс тоже хочет войти в КУ}
begin
Enter1:=False; {«Пропускаем» конкурирующий процесс}
Delay; {Задержка случайной длительности}
Enter1:=True; {*}{Снова пытаемся войти в КУ}
end;
CrBlock1; {Критический блок}
Enter1:=False; {Сигнализируем о выходе из КУ}
………………………… {Другие операции процесса, не входящие в КУ}
end;
end;

procedure Proc2;
begin
While True do {Бесконечный цикл, выполняемый в процессе}
begin
Enter2:=True; {Сигнализируем о намерении войти в КУ}
While Enter1 do {Если конкурирующий процесс тоже хочет войти в КУ}
begin
Enter2:=False; {«Пропускаем» конкурирующий процесс}
Delay; {Задержка случайной длительности}
Enter2:=True; {*}{Снова пытаемся войти в КУ}

53
Микропроцессорные системы управления. Часть 3

end;
CrBlock2; {Критический блок}
Enter2:=False; {Сигнализируем о выходе из КУ}
………………………… {Другие операции процесса, не входящие в КУ}
end;
end;

begin
Enter1:=False; {Инициализация глобальных переменных}
Enter2:=False;
Par_begin {Запуск параллельных процессов}
Proc1;
Proc2;
Par_end;
end.

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


конкуренту об этом. И если конкурент также пытается войти в КУ или находится в нем,
«уступает» ему дорогу, вводя на случайное время задержку своего исполнения и сбросив
на это время флаг Enter, сигнализирующий о намерении войти в КУ.
Вышеприведенная схема также не лишена недостатков. Если оба процесса одновременно
подходят к выполнению строки {*} (а это вполне возможно в силу асинхронности
выполнения процессов), они опять войдут в состояние взаимной блокировки, бесконечно
«уступая» дорогу друг другу. Попробуем решить и эту проблему, введя приоритет,
указывающий, какой из процессов должен «уступить» при попытке одновременного входа
в КУ.

Пример 5

Program 5;
Var Enter1, Enter2 : boolean; {Глобальные переменные}
Pr_Choice : integer; {Номер процесса, имеющего приоритет на вход}

procedure Proc1;
begin
While True do {Бесконечный цикл, выполняемый в процессе}
begin
Enter1:=True; {Сигнализируем о намерении войти в КУ}
While Enter2 do {Если другой процесс тоже хочет войти в КУ}
If (Pr_Choice=2) Then {Если другой процесс имеет приоритет на вход}
begin
Enter1:=False; {«Пропускаем» другой процесс}
While (Pr_Choice=2) do ; {Ждем, пока другой процесс выйдет из КУ}
Enter1:=True; {*}{Снова пытаемся войти в КУ}
end;
CrBlock1; {Критический блок}
Enter1:=False; {Сигнализируем о выходе из КУ}
PrChoice:=2; {Передаем приоритет другому процессу}
………………………… {Другие операции процесса, не входящие в КУ}
end;
end;

procedure Proc2;

54
Микропроцессорные системы управления. Часть 3

begin
While True do {Бесконечный цикл, выполняемый в процессе}
begin
Enter2:=True; {Сигнализируем о намерении войти в КУ}
While Enter1 do {Если другой процесс тоже хочет войти в КУ}
If (Pr_Choice=1) Then {Если другой процесс имеет приоритет на вход}
begin
Enter2:=False; {«Пропускаем» другой процесс}
While (Pr_Choice=1) do ; {Ждем, пока другой процесс выйдет из КУ}
Enter2:=True; {*}{Снова пытаемся войти в КУ}
end;
CrBlock2; {Критический блок}
Enter2:=False; {Сигнализируем о выходе из КУ}
PrChoice:=1; {Передаем приоритет другому процессу}
………………………… {Другие операции процесса, не входящие в КУ}
end;
end;

begin
Enter1:=False; {Инициализация глобальных переменных}
Enter2:=False;
Pr_Choice:=1; {Инициализируем приоритет}
Par_begin {Запуск параллельных процессов}
Proc1;
Proc2;
Par_end;
end.

Пример 5, по сути дела, аналогичен примеру 4 за исключением того, что вводится новая
глобальная переменная Pr_Choice. В случае если оба процесса одновременно подходят к
своему КУ и сообщают о намерении войти в него, значение Pr_Choice определяет, какой
из процессов «пропускает» конкурента при входе в КУ. Для того чтобы оба процесса
имели равные права на вход в КУ, после выполнения КУ каждый процесс меняет
приоритет, предоставляя в следующий раз другому процессу право на приоритетный вход
в КУ.
Итак, мы рассмотрели несколько примеров решения задачи синхронизации асинхронных
процессов. Пример 5 лишен всех обнаруженных нами недостатков и может
рассматриваться как вполне работоспособная система синхронизации. В процессе
рассмотрения примеров мы пришли к следующим выводам:
1. Для выполнения синхронизации необходимо иметь глобальную переменную,
доступную всем синхронизируемым процессам, которая даст возможность одному
процессу сообщать всем остальным о входе им в КУ.
2. Процесс входа в КУ должен быть организован особым образом, чтобы исключить
одновременный вход двумя процессами, а также исключить взаимную блокировку
процессами друг друга.
Как правило, операционная система предоставляет процессам определенные средства для
организации синхронизации. Наиболее распространенным из подобных средств являются
семафоры.

Семафорная техника синхронизации асинхронных процессов


Семафором называется специальный объект операционной системы, над которым
определены две базовые операции: операция закрытия и операция открытия. Семафорный
55
Микропроцессорные системы управления. Часть 3

объект может быть доступен одновременно нескольким процессам (это обеспечивается


операционной системой) и в этом смысле он представляет собой разделяемый ресурс.
Основой семафора является семафорная переменная S, которая в случае простейшего
(двоичного) семафора может принимать значения 0 или 1. Значение 0 соответствует
«закрытому» состоянию семафора, значение 1 – «открытому». Операции закрытия и
открытия семафора изменяют значение семафорной переменной.
Действия, выполняемые операцией закрытия семафора.
1. Проверить значение семафорной переменной S
2. Если S=1 (семафор открыт), присвоить S значение 0 («закрыть» семафор)
3. Если S=0 (семафор уже закрыт), перевести процесс, пытающийся закрыть семафор,
в состояние ожидания (состояние блокировки)

Действия, выполняемые операцией открытия семафора.


1. Если в списке заблокированных процессов находится процесс, ожидающий
открытия данного семафора, перевести этот процесс в состояние готовности
2. Если в списке заблокированных процессов нет процесса, ожидающего открытия
данного семафора, присвоить S значение 1 («открыть» семафор)
Так как семафор доступен одновременно нескольким процессам, возможна ситуация,
когда несколько процессов одновременно попытаются выполнить операцию открытия или
закрытия. В этом случае возможно повторение проблем, рассмотренных нами в примерах
2, 3, 4. Чтобы этого избежать, операции открытия и закрытия семафора защищаются от
одновременного вызова несколькими процессами на уровне операционной системы. Для
этого на время выполнения указанных операций в ОС отключается передиспетчеризация
процессов. Так как операции открытия и закрытия семафора являются короткими и
выполняются за ограниченно малое время, такое временное отключение диспетчеризации
не вызывает сколь-нибудь серьезных проблем.
Как же используются семафоры? Посмотрим на следующий пример. Пусть Sem – объект
типа «семафор», предоставленный операционной системой. Sem.Open – операция
открытия семафора, Sem.Close – операция закрытия.

Пример 6

Program 6;

procedure Proc1;
begin
While True do {Бесконечный цикл, выполняемый в процессе}
begin
Sem.Close; {Закрытие семафора}
CrBlock1; {Критический блок}
Sem.Open; {Открытие семафора}
………………………… {Другие операции процесса, не входящие в КУ}
end;
end;

procedure Proc2;
begin
While True do {Бесконечный цикл, выполняемый в процессе}
begin
Sem.Close; {Закрытие семафора}
56
Микропроцессорные системы управления. Часть 3

CrBlock2; {Критический блок}


Sem.Open; {Открытие семафора}
………………………… {Другие операции процесса, не входящие в КУ}
end;
end;

begin
Par_begin {Запуск параллельных процессов}
Proc1;
Proc2;
Par_end;
end.

Как видно, техника использования семафоров предельно проста. Перед входом в КУ


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

Мониторы операционных систем


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

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

57
Микропроцессорные системы управления. Часть 3

Рис. 47
Пусть процесс Пi претендует на использование ресурса L. Пi обращается к
соответствующей процедуре Procedure L. При таком обращении возможны 2 варианта.
Вариант 1. Ресурс L занят другим процессом и не может быть предоставлен процессу Пi.
В этом случае Procedure L сообщает процессу, что ресурс занят. Процесс выводится из
монитора и помещается в список-очередь процессов, ожидающих предоставления ресурса
L. Для каждого ресурса монитор поддерживает такой список-очередь (рис. 48).

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

Wait (condition).

Condition – переменная, значение которой определяется тем, к какому ресурсу пытался


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

58
Микропроцессорные системы управления. Часть 3

Вариант 2. Ресурс L свободен и может быть предоставлен процессу. В этом случае


процедура L помечает ресурс как занятый, и процесс выводится из монитора, получая
ресурс в свое распоряжение (рис. 49).

Рис. 49

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

Signal (condition)
.
Процедура Signal выполняет следующие действия:
1. Выводит процесс из монитора.
2. Если очередь на получение данного ресурса не пуста, из нее, в соответствии с
определенными правилами и приоритетами, выбирается один из процессов и
переводится в состояние готовности, получая при этом в свое распоряжения
запрашиваемый ресурс. Ресурс помечается как занятый (рис. 50)

QL Пk R

Рис. 50
Рассмотрим пример простейшего монитора, осуществляющего распределение ресурсов.
Program Monitor1;
var Res_free : condition;
Res_busy : boolean;

Procedure Get_Res;
begin
If Res_busy then Wait(Res_free);
Res_busy:=True;
end;

Procedure Put_Res;
begin
Res_busy:=False;
Signal(condition);
end;

begin
Res_busy:=False;

59
Микропроцессорные системы управления. Часть 3

end.

Монитор работает в полном соответствии с описанной нами выше логикой. Данный


простейший пример монитора обеспечивает доступ к одному ресурсу. Соответственно,
имеются две процедуры: для запроса ресурса (Get_Res) и для освобождения ресурса
(Put_Res). Глобальная процедура Res_busy фиксирует текущее состояние ресурса (занят
или свободен), переменная Res_free является идентификатором ресурса, используемым в
глобальных процедурах Wait и Signal для помещения процесса в соответствующую
очередь ожидания ресурса (сами глобальные процедуры в нашем примере не
рассматриваются).
Для захвата ресурса процесс вызывает процедуру Get_Res. Происходит проверка
свободности ресурса, если он свободен – помечается как занятый и процесс выводится их
монитора, получая ресурс в свое распоряжение. Если ресурс занят, вызывается глобальная
процедура Wait, помещающая ресурс в очередь и переводящая его в состояние
блокировки. Процесс, переведенный в состояние блокировки «засыпает» на выполнении
процедуры Wait.
Для освобождения ресурса процесс вызывает процедуру Put_Res. Ресурс помечается как
свободный, вызывается процедура Signal для опроса очереди ожидающих процессов и
возможного перевода одного из них в состояние готовности.

Применение монитора для решения задачи «читатели-писатели»


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

Рис. 51
Таким образом, мы имеем несколько процессов, записывающих информацию с общее ЗУ
и несколько процессов, читающих информацию из общего ЗУ. Процессы первого типа
получили название «процессов-писателей», процессы второго типа – «процессов-
читателей». Процессы-писатели получают данные с датчиков и записывают в ЗУ,
процессы- читатели читают данные из ЗУ и используют их для решения задачи
управления.
Совершенно очевидно, что все процессы обращаются к общему ресурсу – ЗУ.
Следовательно, должна быть предусмотрена их синхронизация. Правила синхронизации
следующие:

60
Микропроцессорные системы управления. Часть 3

1. Не допускается одновременное обращение к ЗУ читателей и писателей.


2. Только один процесс-писатель может иметь доступ к ЗУ в определенный момент
времени.
3. Несколько процессов-читателей могут иметь доступ к ЗУ в определенный момент
времени.
Таким образом, должна быть решена задача взаимоисключения между читателями и
писателями с одной стороны, и между различными писателями – с другой стороны. Такая
задача может быть решена с помощью монитора ресурсов. Рассмотрим пример такого
монитора.

Program Monitor 2;
var Read_perm, Write_perm : condition;
Read_Queue, Write_Queue, Somb_write : boolean;
Readers : integer;

Procedure Start_Read;
begin
If (Somb_Write Or WriteQueue) then Wait(Read_Perm);
Readers:=Readers+1;
end;

Procedure Finish_Read;
begin
Readers:=Readers-1;
If (Readers=0) then Signal(Write_Perm);
end;

Procedure Start_Write;
begin
If (Readers>0 Or Somb_Write) then Wait(Write_Perm);
Somb_Write:=True;
end;

Procedure Finish_Write;
begin
Somb_Write:=False;
If Read_Queue then Signal(Read_Perm) else Signal(Write_Perm);
end;

begin
Readers:=0;
Somb_Write:=False;
Read_Queue:=False;
Write_Queue:=False;
end.

По сути дела, в этом мониторе доступ по чтению и записи в ЗУ рассматриваются как два
отдельных ресурса. Соответственно, мы имеем две пары процедур: Start_Read и
Finish_Read для доступа по чтению, Start_Write и Finish_Write для доступа по записи.
Глобальные переменные:
 Read_Perm – идентификатор ресурса «доступ к ЗУ по чтению»;

61
Микропроцессорные системы управления. Часть 3

 Write_Perm – идентификатор ресурса «доступ к ЗУ по записи»;


 Read_Queue – признак того, что в очередь процессов, ожидающих доступа по
чтению, не пуста;
 Write_Queue – признак того, что в очередь процессов, ожидающих доступа по
записи, не пуста;
 Somb_Write – признак того, что кто-то из процессов-писателей осуществляет запись
в ЗУ в данный момент;
 Readers – количество процессов-читетелей, имеющих доступ к ЗУ в данный
момент
Рассмотрим процедуры монитора.
 Start_Read. Вызывается процессом-читаталем при попытке получить доступ к
ресурсу (ЗУ). Если в этот момент доступ имеет какой-либо процесс-писатель или
хотя бы один процесс-писатель стоит в очереди, процесс-читатель, вызвавший эту
процедуру, помещается в очередь и блокируется (глобальной процедурой Wait).
Если же никто не пишет и не хочет писать, количество читателей (Readers)
увеличивается на 1 и процесс получает доступ. Таким образом, данная процедура
обеспечивает процессам-писателям приоритет в получении доступа к ресурсу.
 Finish_Read. Вызывается процессом-читаталем, закончившим чтение и желающим
освободить ресурс. Уменьшает на 1 количество читателей (Readers), и если оно
стало равно 0 (т.е. никто больше не читает), через глобальную процедуру Signal
делается попытка предоставить доступ на запись какому-либо процессу-писателю,
находящемуся в соответствующей очереди.
 Start_Write. Вызывается процессом-писателем при попытке получить доступ к ЗУ
(ресурсу) для записи. Процедура разрешает доступ только если никто не читает
(Readers=0) и никто не пишет (Somb_Write=False). В противном случае процесс-
писатель, вызвавший эту процедуру, помещается в очередь и блокируется
(глобальной процедурой Wait).
 Finish_Write. Вызывается процессом-писателем, закончившим запись и желающим
освободить ресурс. После освобождения ресурса (Somb_Write:=False) проверяется,
стоит ли какой-либо процесс в очереди на чтение. Если да – делается попытка
перевести его в состояние ожидания через глобальную процедуру Signal,
предоставив в его распоряжение ресурс. Если нет – через ту же процедуру Signal
один из процессов писателей, находящихся в очереди, переводится в состояние
готовности и получает ресурс.

Данный монитор обеспечивает приоритет «писателей» над «читателями». Это необходимо


для того, чтобы вся информация, полученная «писателями» с датчиков, была записана в
ЗУ. С другой стороны, ни один «читатель» не пропустит информацию, выданную ему
«писателем».

Аппаратная поддержка функций операционной системы


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

62
Микропроцессорные системы управления. Часть 3

1. Организация защиты
2. Организация переключения задач
3. Организация виртуальной памяти

Организация защиты
Как уже упоминалось, под защитой понимается ограничение доступа процессов к
ресурсам, принадлежащим другим процессам или операционной системе. Наиболее
используемым ресурсом в МПС является память, поэтому рассмотрим схему защиты
памяти в МП Intel x86.

Защита памяти
Вспомним, как был организован доступ к памяти в процессоре Intel 8086, первом из
рассматриваемой серии, в котором не предусматривалось никакой зашиты. Процессор
имел адресное пространство объемом 1 мегабайт. Логический адрес, указываемый в
команде МП, состоял из двух 16-тиразрядных частей – начального адреса сегмента (или
просто «сегмента») и смещения относительно начала сегмента (рис. 52)

15 0 15 0
Сегмент : Смещение

Рис. 52
Получив логический адрес, блок преобразования адресов МП вычислял физический адрес
ячейки ЗУ в соответствии со следующей схемой (рис. 53)

Рис. 53
Начальный адрес сегмента сдвигается на 4 бита влево, к нему прибавляется смещение. В
результате получается физический адрес ячейки ЗУ, который и выдается на шину адреса.
При такой адресации логический адрес в сегменте и смещении содержит части реального
физического адреса ячейки ЗУ. Поэтому такой режим работы МП получил название
«реального» режима работы. В реальном режиме, изменяя значение смещения, можно
свободно перемещаться по ЗУ в пределах одного сегмента (64 килобайта), изменяя
значение сегмента можно перемещаться по всему ЗУ (с шагом 16 байт).
Таким образом, в реальном режиме любой программе доступно все ЗУ. Хорошо это или
плохо? С одной стороны хорошо, так как такая схема обеспечивает большую гибкость
программы. Программа может, например, изменить вектор прерывания,
промодифицировать свой собственный код, обратиться напрямую к областям памяти,
занимаемым операционной системой. С другой стороны это плохо, так как в случае
ошибки в вычислении адреса в программе может быть случайно промодифицирована не
та область памяти и это приведет к «порче» кода программы, или, что еще хуже,
операционной системы. Для того чтобы случайные модификации «чужих» областей
памяти были невозможны, и был реализован механизм защиты. Режим работы
процессора, в котором реализуется механизм защиты памяти, получил название

63
Микропроцессорные системы управления. Часть 3

«защищенного» режима. Защищенный режим впервые появился в процессоре Intel 80286


(1982 год).
Базовым понятием защищенного режима является понятие сегмента. Под сегментом
понимается область памяти, расположенная в определенном месте, имеющая
определенный размер, выделенная процессу операционной системой, доступ к которой
контролируется микропроцессором.
Если в реальном режиме программа могла обратиться к любой области памяти, то в
защищенном режиме она может обратиться только к сегменту, выделенному ей ОС,
причем возможность обращения к конкретному сегменту контролируется МП.
Для того чтобы МП имел возможность контролировать обращения к сегментам, каждый
сегмент имеет описатель – дескриптор. Формат дескриптора представлен на рис. 54.

Базовый адрес Лимит Доступ Резерв


Рис. 54
Дескриптор сегмента имеет размер 8 байт и состоит из четырех полей:
 Базовый адрес (32 бита) – начальный адрес сегмента (адрес первой ячейки
сегмента)
 Лимит (16 бит) – размер сегмента, максимальное значение смещения при
обращении к ячейкам сегмента
 Доступ – поле размером 8 бит, определяющее правила доступа к сегменту.
Включает следующие признаки:
o Минимальный уровень приоритета, который должна иметь задача для того,
чтобы получить доступ к сегменту (подробнее об уровнях приоритета чуть
позже).
o Тип сегмента – сегмент кода (содержит команды МП) или сегмент данных
o Для сегмента кода – разрешение чтения (запись в сегмент кода всегда
запрещена)
o Для сегмента данных - разрешение записи (чтение разрешено всегда).
 Резерв – 1 байт, не используемый процессором. Может быть использован для
хранения ОС какой-либо информации.

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


дескрипторов. Существует глобальная таблица дескрипторов (GDT), хранящая
дескрипторы сегментов, доступных всем задачам (процессам). Кроме того, каждая задача
имеет свою локальную таблицу дескрипторов (LDT), в ней хранятся дескрипторы
сегментов, используемых только данной задачей (процессом).
Так как МП должен иметь информацию обо всех сегментах для контроля доступа к ним,
он должен знать, где находятся GDT и LDT. Для этого в МП имеются два специальных
регистра, хранящих адреса, соответственно, глобальной и локальной таблиц дескрипторов
(рис. 55).

64
Микропроцессорные системы управления. Часть 3

Рис. 55
Максимальный размер таблицы дескрипторов – 64 килобайта. Так как каждый дескриптор
имеет размер 8 байт, максимальное количество дескрипторов в таблице – 8192. Из этого
следует, что количество сегментов, доступных задаче, ограничено.
Рассмотрим теперь, как происходит адресация памяти в защищенном режиме. Логический
адрес (тот, который указывается в командах МП), по-прежнему состоит из двух частей –
селектора и смещения (рис. 56).

15 0 15 0
Селектор : Смещение

Рис. 56
Селектор идентифицирует сегмент, к которому производится обращение. Он
представляет собой индекс в таблице дескрипторов, указывающий на дескриптор нужного
сегмента. Смещение представляет собой смещение нужной ячейки памяти относительно
начала сегмента. Алгоритм вычисления адреса в защищенном режиме представлен на
рис. 57.

Рис. 57
Так как дескриптор может находиться в GDT или в LDT, селектор содержит специальный
бит, определяющий, из какой конкретно таблицы необходимо взять дескриптор.
Из рисунка видно, что при каждом обращении к памяти МП использует дескриптор
сегмента, таким образом, он имеет возможность проверить возможность доступа к
запрошенному сегменту, используя поле «Доступ» дескриптора.

65
Микропроцессорные системы управления. Часть 3

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


Каждая задача, выполняемая МП, имеет один их четырех уровней привилегий:

 Уровень 0 – наивысший, его имеют процессы ядра ОС.


 Уровень 1 – драйвера ОС, обеспечивающие взаимодействие с оборудованием.
 Уровень 2 – расширения ОС.
 Уровень 3 – наинизший – прикладные программы.

Уровень привилегий текущей задачи (CPL) известен МП. Дескриптор каждого сегмента
содержит минимальный уровень привилегий (MPL), необходимый для доступа к
сегменту. Если текущий уровень привилегий CPL <= MPL, доступ к сегменту
разрешается, в противном случае – запрещается. Например, если прикладная задача
(CPL=3) попытается обратиться к сегменту, относящемуся к ОС (MPL=0), доступ будет
запрещен. Если же ОС (CPL=0) обращается к сегменту прикладной задачи (MPL=3),
доступ будет разрешен.
Итак, мы рассмотрели механизм защиты памяти в «защищенном» режиме работы МП.
Подведем итог. Механизм защиты памяти позволяет:
1. Контролировать использование памяти (программа может обратиться только к тем
областям памяти, который выделены ОС для использования в виде сегментов).
Программа не может использовать селектор, указывающий на несуществующий
дескриптор, это контролируется МП.
2. Контролировать длину сегмента – программа не может указать смещение,
превышающее лимит, указанный в дескрипторе и таким образом выйти за пределы
сегмента, испортив, возможно, при этом какие-либо данные.
3. Контролировать тип доступа (можно запретить чтение из сегмента кода и запись в
сегмент данных).
4. Контролировать права доступа с использованием привилегий, защитив, таким
образом, ОС от повреждения со стороны прикладных программ.
5. Контролировать модификации таблиц дескрипторов – таблицы дескрипторов могут
быть модифицированы только процессом с максимальным уровнем привилегий.
В случае если доступ к запрашиваемому сегменту не может быть предоставлен по одной
из перечисленных выше причин, процессор вырабатывает исключение общей ошибки
защиты. По сути дела, он инициирует обычное аппаратное прерывание, вызывая
соответствующий обработчик прерывания. Этот обработчик, как правило, входит в состав
операционной системы (является ее частью), он выполняет необходимые действия вплоть
до аварийного завершения выполнения программы.

Привилегированные команды
Одной из разновидностей защиты является использование привилегированных команд для
выполнения наиболее ответственных операций. К таким командам в микропроцессорах
Intel x86 относятся команды управления процессором, команды работы с таблицами
дескрипторов, команды управления защищенным режимом. Они могут быть выполнены
только задачей с CPL=0. В противном случае возникает общая ошибка защиты.

Защита операций ввода-вывода


Важным аспектом защиты является защита операций ввода-вывода, выполняемых
командами IN и OUT. Концепция аппаратной независимости, лежащая в основе работы
ОС, предполагает, что доступ к внешним устройствам через операции ввода-вывода
может осуществляться только ОС. Выполнение этих команд прикладными программами
должно быть ограничено. В процессорах Intel это обеспечивается с использованием
66
Микропроцессорные системы управления. Часть 3

рассмотренного выше механизма привилегий. В регистре флагов МП два бита содержат


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

Организация переключения задач


Как мы уже знаем, переключением задач занимается модуль ОС, называемый
диспетчером процессов. По сути дела, переключение задач представляет собой передачу
управления от одной задачи (процесса) другой задаче (процессу). Это может быть сделано
с помощью уже известных нам команд МП JMP (безусловный переход) или CALL (вызов
подпрограммы).
Однако есть одна особенность. Переключение задач должно выполняться незаметно для
самих исполняемых задач. Следовательно, перед тем, как активизировать другую задачу,
необходимо сохранить где-то адрес следующей исполняемой команды данной задачи (для
того, чтобы потом продолжить ее выполнение с этого же места), а также содержимое всех
внутренних регистров МП (для того, чтобы при возобновлении выполнения данной задачи
восстановить содержимое всех регистров, сделав сам факт переключения незаметным для
задачи). Очевидно, что задачу сохранения/восстановления контекста может решить только
сам МП, и делать это он должен автоматически при переключении задачи операционной
системой. Поддержка операции переключения задач появилась впервые в процессоре Intel
80286.
Для сохранения контекста задачи используется специальная область памяти, называемая
«сегмент состояния задачи» (TSS – Task State Segment). TSS создается ОС для каждой
задачи. Обобщенный формат ТСС приведен на рис. 58

67
Микропроцессорные системы управления. Часть 3

Рис. 58
Процессор имеет специальный регистр, в котором хранится адрес TSS текущей задачи.
Для выполнения переключения на другую задачу необходимо выполнить команду JMP
или CALL, указав в качестве адреса перехода селектор дескриптора TSS. Процессор
обнаруживает, что указанный селектор соответствует дескриптору TSS и выполняет
следующие действия:
1. Сохраняет контекст текущей задачи в ее TSS.
2. Восстанавливает контекст активизируемой задачи из ее TSS
3. Передает управление новой задаче по адресу последней выполнявшейся команды,
взятому из TSS.
Если селектор дескриптора TSS указать в таблице векторов прерываний в качестве адреса
подпрограммы обработки прерывания, при возникновении этого прерывания управление
будет автоматически передано задаче, соответствующей указанному TSS. Это позволяет
легко реализовать диспетчеризацию процессов. Достаточно в обработчике прерываний
указать TSS задачи – диспетчера процессов, а для активизации этого прерывания
использовать сигнал от программируемого таймера. При поступлении сигнала от таймера
управление будет передано диспетчеру процессов, который, в свою очередь, выполнив
перепланирование, передаст управление какому-то процессу в соответствии с логикой
своей работы.

Организация виртуальной памяти


Мы уже познакомились с понятием виртуального ресурса. В существующих
вычислительных системах наиболее часто в качестве виртуального ресурса реализуется
память. Механизм поддержки виртуальной памяти появился впервые в МП Intel 80386
(1985 год). Познакомимся с принципами его действия.
Интерес к использованию виртуальной памяти появился вследствие того, что адресное
пространство, доступное МП (4 Гбайт для 80386) намного превышало объем реального
ЗУ, используемого в вычислительной системе. Получалось, что большая часть адресного
пространства «пропадала» и возможности процессора использовались неэффективно.
Возникла идея: сделать так, чтобы для программы были доступны все 4 Гбайт памяти. В
основу концепции виртуальной памяти было положено допущение о локальности данных.
Оно предполагало, что данные, интенсивно используемые программой в некоторый

68
Микропроцессорные системы управления. Часть 3

момент времени, расположены в памяти компактно и занимают часть адресного


пространства, которая может быть целиком отображена в реальную физическую память.
Данные, расположенные в оставшемся адресном пространстве и не используемые в
данный момент, могут находиться за пределами ЗУ, например, на жестком диске. Таким
образом, виртуальная память состоит из двух частей – собственно физической памяти и
«файла подкачки», расположенного на жестком диске, в который помещаются данные,
соответствующие части адресного пространства, не отображаемого в данный момент в
физическую память.
Принцип действия виртуальной памяти получался при этом достаточно прост. Данные,
используемые активной в данный момент программой, размещались в физической памяти.
Когда активной становилась другая программа, содержимое физической памяти
копировалось на диск, а в физическую память с диска загружались данные, необходимые
новой активной программе. Процедура «подкачки» данных с диска («свопинг») была
незаметной для прикладной программы, поэтому у нее создавалась иллюзия наличия
реальной памяти большого объема.
Важно отметить, что механизм виртуальной памяти эффективно работает только в том
случае, если выполняется принцип локальности. Если же программа интенсивно
использует совокупность данных, не помещающихся полностью в физическую память,
будет происходить постоянный «свопинг» - обмен между физической памятью и диском.
А так как операции с диском выполняются на несколько порядков медленнее обмена с ЗУ,
доступ к памяти в этом случае будет замедлен настолько, что само функционирование
прикладной программы оказывается под угрозой.
Посмотрим, как реализован механизм виртуальной памяти в процессорах Intel x86. Из
общего принципа виртуальной памяти следует, что возникает необходимость выгружать
на диск и загружать с диска группы данных из ЗУ. При этом для каждой такой группы
данных должен существовать описатель, в котором будет храниться информация о
присутствии или отсутствии данных в физической памяти. На первый взгляд для этой
цели можно было бы использовать уже известные нам сегменты. Но их использование не
очень удобно по ряду причин: сегмент может иметь достаточно большой размер, и
выгрузка его целиком на диск будет занимать достаточно большое время; кроме того, все
сегменты имеют разный размер и это усложнит логику «свопинга». Гораздо удобнее было
бы оперировать «кусочками» адресного пространства небольшого и одинакового размера.
Основой построения механизма виртуальной памяти в МП Intel x86 является механизм
страничной адресации. Основная его идея в том, что все адресное пространство
разбивается на «страницы» размером 4 Кб. В определенной области ЗУ формируется
таблица страниц, каждая строка которой содержит описатель конкретной страницы. Этот
описатель включает в себя следующую информацию:
1. Признак наличия страницы в физической памяти
2. Физический адрес начала страницы (корректен только для страниц, находящихся в
физической памяти)
3. Признак возможности выгрузки страницы на диск.
Механизм преобразования логического адреса ячейки ЗУ в физический в данном случае
выглядит следующим образом (рис. 59).

69
Микропроцессорные системы управления. Часть 3

Рис. 59
Первая часть преобразования выглядит так же, как и в случае защищенного режима. Но
после суммирования начального адреса сегмента со смещением получается не физический
адрес ячейки памяти, а так называемый «линейный» адрес. Это своего рода
«теоретический» адрес, который имеет требуемая ячейка памяти в виртуальном адресном
пространстве размером 4 Гб. Дальнейшие преобразования необходимы для того, чтобы
понять, в какую реальную ячейку физической памяти отображается этот «теоретический»
адрес. Для этого старшая часть линейного адреса используется как индекс в таблице
страниц, по нему находится описатель нужной страницы, определяется реальный адрес ее
начала в физической памяти, суммируется со смещением ячейки относительно начала
страницы (младшие 12 бит линейного адреса) и в результате получается полный
физический адрес запрашиваемой ячейки в физической памяти, который в конечном итоге
выдается на шину адреса МП.
На этапе обращения к таблице страниц производится проверка наличия запрашиваемой
страницы в физической памяти (путем проверки соответствующего признака в описателе
страницы). Если страницы в физ. памяти нет, процессор вырабатывает исключение отказа
страницы. По сути дела, это аппаратное прерывание, обработчик которого (он является
частью ОС) должен выполнить следующие действия
1. По определенному алгоритму выгрузить из физической памяти одну из страниц на
диск (например, страницу, к которой дольше всего не было обращений), чтобы
освободить место в физической памяти.
2. Промодифицировать описатель для выгруженной страницы в таблице страниц,
пометив ее как не присутствующую в физической памяти
3. Найти на диске и загрузить в физическую память (на место выгруженной
страницы) запрашиваемую страницу
4. Промодифицировать описатель для запрашиваемой страницы в таблице страниц,
пометив ее как присутствующую в физической памяти и занеся ее реальный
физический адрес в описатель

70
Микропроцессорные системы управления. Часть 3

После окончания работы обработчика прерывания страничного отказа, процессор


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

Распределенные микропроцессорные системы


управления
Пример 1. Исполнительный уровень СУ робота

Цифровые приводы движителей (МПСУ)


Цифровые приводы навесного оборудования
(манипулятор, видеокамеры и т.п.)

БЦВМ - бортовая ЦВМ

Рис. 66

БЦВМ – бортовая ЦВМ, решает задачи планирования траектории, оценки окружающей


среды и т.п.
Необходимо обеспечить обмен между исполнительными МПСУ и БЦВМ. Связь
необходимо организовывать по последовательному каналу, так как параллельный канал не
позволяет передавать данные на большое расстояние и характеризуется сложностью
резервирования.

Пример 2. Группа роботов.

71
Микропроцессорные системы управления. Часть 3

Канал управления

Канал обмена информацией (телеметрия и т.п.)

Рис. 67
Здесь также возникает необходимость обмена информацией.
Постановка задачи:
1. Алгоритмы управления заданы (известны)
2. Необходимо разработать систему обмена информацией.
В нашем курсе уже рассматривался пример организации обмена данными между
микропроцессорными системами – использование системной шины.

МП МП

Системная шина

УВВ ЗУ УВВ

Рис. 68

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

Пример 3. Простейшее соединение 2-х персональных компьютеров.

72
Микропроцессорные системы управления. Часть 3

Цель соединения – передача файла, находящегося на жестком диске компьютера «В» на


компьютер «А» и запись его на жесткий диск компьютера «А».

PC "A" PC "B"

Прикладная Жесткий диск Прикладная Жесткий диск


программа программа

Операционная Операционная
система система
Драйвер Драйвер
последователь- последователь-
ного порта ного порта

Контроллер Контроллер
последователь- последователь-
ного порта ного порта
Последователь- Последователь-
ный порт ный порт

Рис. 69

Для выполнения соединения используется последовательный порт (COM - порт). В


качестве контроллера COM порта используется рассмотренный нами в первой части курса
программируемый последовательный интерфейс (ППИ). ППИ обеспечивает передачу и
прием одного байта данных с использованием последовательного асинхронного способа
передачи данных (этот способ также был нами ранее рассмотрен).
Для успешной передачи данных между двумя компьютерами в обоих направлениях,
необходимо соединить двумя проводами линию RxD одного компьютера и TxD другого и
наоборот.

COM - порт COM - порт

RxD TxD RxD TxD

Рис. 70

73
Микропроцессорные системы управления. Часть 3

Контроллер COM – порта работает на уровне передачи одного байта (символа). По


окончании передачи генерируется сигнал запроса на прерывание. Этот сигнал
обрабатывается специальной программой – драйвером COM – порта. Драйвер управляет
контроллером, он обеспечивает передачу/прием потока данных, разбивая этот поток на
отдельные байты и передавая каждый байт через контроллер. По окончании передачи
байта, обрабатывая прерывание, драйвер инициирует передачу/прием следующего байта и
так далее.
Драйвер является частью (модулем) операционной системы. Операционная система
обеспечивает возможность доступа к COM – порту нескольких вычислительных
процессов
Связка «ОС – драйвер – контроллер – порт» позволяет передавать поток информации
(байтов). Она представляет собой реализацию соединения «точка – точка» (“point – to -
point”).
Для решения же нашей главной задачи – передачи файла с одного компьютера на другой,
необходимо иметь специальную прикладную программу – приложение, которая будет
выполнять считывание нужного файла с диска, преобразование его в поток байт, передачу
этого потока через драйвер COM – порта. Пример такой программы – Norton Link.
Итак, задача решена с использованием комплекса аппаратно-программных средств,
представленных на рис. 70. Однако это решение частной задачи. Если, например,
потребуется передача данных из некоей области ЗУ компьютера «А» и запись их в ЗУ
компьютера «В», необходимо будет создавать уже другое решение.
Соответственно, появляется необходимость нахождения общего решения. И такое
решение есть – это вычислительные сети.

Аппаратные средства вычислительных сетей

Сетевой Сетевой
адаптер адаптер

Сетевой
адаптер

Рис. 71

В каналах связи применяются различные физические методы передачи информации,


называемые кодированием.
1. NRZ , Манчестер II – кодирование уровнем сигнала
74
Микропроцессорные системы управления. Часть 3

2. Импульсное кодирование
3. Модуляция (амплитудная, частотная, фазовая)

Возможны различные варианты передающей среды. Основными являются:


1. Коаксиальный кабель
2. Витая пара
3. Волоконно-оптический кабель

Среда Описание Дальность Преимущества Недостатки


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

Сетевые адаптеры рассчитаны на работу со строго определенной передающей средой,

75
Микропроцессорные системы управления. Часть 3

Программные средства вычислительных сетей

ОС ОС

Модуль - Модуль -
клиент клиент

Запрос Ответ Ответ Запрос

ОС

Модуль -
сервер

Рис. 72
Программные средства представлены двумя универсальными модулями, входящими в
состав сетевой ОС – модуль «Клиент» и модуль «Сервер». Модуль «Сервер» обеспечивает
доступ к определенному типу ресурсов. Модуль «Клиент» обеспечивает соединение по
вычислительной сети с модулем «Сервер» нужного компьютера для получения доступа к
определенному типу ресурсов (например, к файлам).

Характеристики вычислительных сетей


Топология связей
Топология связей – графическое представление соединений элементов вычислительной
сети. Представляется в виде графа, состоящего из узлов (компьютеров или
коммутирующих устройств) и ребер (физических и информационных связей между
узлами).
Узлы могут быть подразделены на
1. Получателей данных
2. Источники данных
3. Транзитные

76
Микропроцессорные системы управления. Часть 3

Существуют следующие основные виды топологий:

А. Полносвязная топология

Рис. 73

Достоинства: надежность, гибкость


N ( N  1)
Недостатки: для N узлов необходимо физических соединительных линий
2

B. Кольцевая топология

Рис. 74

Достоинства: простота, относительная надежность, ретрансляция и усиление сигнала


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

C. Шинная топология

Рис. 75

Достоинства: простота, относительная надежность, пассивные узлы – выход из строя


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

77
Микропроцессорные системы управления. Часть 3

D. Звездообразная топология

Рис. 76

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

E. Древовидная топология

Рис. 77

Достоинства: наращиваемость, гибкость


Недостатки: те же, что и у звездообразной топологии

Системы адресации узлов вычислительной сети

Итак, вычислительная сеть состоит из узлов, между которыми передается информация.


Очевидно, что в процессе передачи информации участвуют как минимум узел – источник
и узел – приемник (узел назначения). Необходимость указания узла назначения вызывает
необходимость использования адресации узлов. Всем узлам должны быть присвоены
уникальные адреса, аналогично ситуации с ячейками ЗУ.
78
Микропроцессорные системы управления. Часть 3

Адреса могут присваиваться узлам сети в соответствии с некоторыми установленными


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

1. По структуре.
a. Одномерное адресное пространство (подобно ЗУ). Наиболее просто в
реализации, но при сложной топологии сети поиск узла назначения
существенно усложняется.
b. Иерархическое адресное пространство. Узлы объединяются в подгруппы,
подгруппы в группы и т.д. Адрес узла состоит из нескольких частей – адреса
группы, адреса подгруппы в группе, адреса узла в подгруппе.
Иерархическая адресация может быть связана с топологией сети (это
особенно актуально для древовидной топологии). В случае сложной
топологии сети, иерархическая адресация упрощает маршрутизацию данных
и поиск узла назначения. Аналогом иерархической системы адресации в
нашей обычной жизни является почтовый адрес (индекс, город, улица, дом,
квартира).
2. По способу кодировки адреса.
a. Цифровая кодировка. Наиболее компактна, но сложна в восприятии
человеком
b. Буквенная кодировка. Менее компактна, более читаема, лучше
запоминается.
c. Смешанная. Сочетает в себе преимущества двух первых.
3. По способу преобразования (разрешения) адресов.
a. Централизованный - таблицы соответствия адресов хранятся на специально
выделенном узле вычислительной сети (сервере), для выполнения
преобразования необходим запрос к этому серверу. Способ применяется в
крупных сетях.
b. Распределенный. Запрос на преобразование адреса направляется всем узлам
сети. Тот узел, адрес которого запрошен, откликается и сообщает
необходимую информацию. Способ применяется в небольших (локальных)
сетях.

Коммутация вычислительной сети


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

79
Микропроцессорные системы управления. Часть 3

1. Глобальные признаки – характеризуют поток на всем протяжении его следования в


сети
2. Локальные признаки – определяют поток в пределах одного (транзитного) узла.
Например, идентификатор интерфейса порта, с которого поступили данные.
Задача 2. Определение маршрутов
Если представить сеть в виде графа, информационный поток, двигаясь от узла-источника
к узлу назначения, последовательно проходит через транзитные узлы и соединяющие их
каналы связи, то есть движется по определенному маршруту. В общем случае, в
вычислительной сети могут существовать несколько маршрутов, по которым поток может
достичь узла назначения. Возникает задача поиска оптимального маршрута. Возможные
критерии оптимальности:
1. Максимальная скорость передачи (минимальное время следования потока в сети)
2. Минимальная стоимость передачи единицы информации
3. Максимальная загрузка сети
4. .....

Задача поиска оптимального маршрута имеет однозначное решение для одного потока –
сообщения. Для случая множества потоков используются полуэмпирические методы,
ищется экстремум функции
F  ca  a  cb  b  cc  c  ....
где a, b, c – критерии оптимальности маршрута, c z , cb , cc - весовые коэффициенты,
выбираемые эмпирически.
Задача 3. Фиксация маршрутов.
Составляются таблицы коммутации устройств в сети (каналы + узлы). В каждой записи
признаку (признакам) потока ставится в соответствие идентификатор интерфейса узла, на
который устройство должно передавать данные, относящиеся к этому потоку.
Задача 4. Коммутация каналов и пакетов
Существует несколько методов собственно коммутации.
Метод коммутации каналов предполагает «жесткое» соединение двух узлов на время
передачи информационного потока. Примером коммутации каналов может служить
соединение в телефонной сети.
Достоинства метода:
1. Предсказуемая скорость передачи.
2. Возможность передачи данных в режиме «реального времени», что особенно
важно для систем управления.
Недостатки:
1. При сбоях в канале передача информации становится невозможной
2. Имеют место простои в передаче данных
a. При установлении связи (необходимо время на соединение)
b. Ожидание

Метод коммутации пакетов.


1. Информационный поток разбивается на составные части – пакеты

80
Микропроцессорные системы управления. Часть 3

2. Каждый пакет снабжается заголовком и передается по сети как отдельное


сообщение, независимо от остальных пакетов
3. В узле назначения из пакетов вновь собирается исходное сообщение.
При этом каждый транзитный узел сети должен иметь буферное ЗУ для временного
хранения пакетов перед их отправкой дальше.
Достоинства метода: Максимальная загрузка сети в целом, наиболее равномерная
загрузка сети
Недостатки метода:
1. Невозможна передача данных в «реальном времени», так как отдельные пакеты
могут двигаться по разным маршрутам и возможны задержки.
2. Необходимо дополнительное оборудование в транзитных узлах – буферное ЗУ,
усложняется аппаратная часть.
Существуют две разновидности реализации метода коммутации каналов: дейтаграммный
метод и метод «виртуального канала»
При дейтаграммном методе пакеты, принадлежащие одному информационному
сообщению – потоку, могут следовать по разным маршрутам. При этом возможна
ситуация, когда пакет, отправленный позже, прибудет к узлу назначения раньше (двигаясь
по более короткому маршруту), то есть в узле назначения возможен прием пакетов не в
том порядке, в котором они отправлялись в сеть. Дейтаграммный метод рассматривает
каждый пакет полностью независимо от других.
При методе «виртуального канала», пакеты в узле назначения программно
упорядочиваются. Для этого в заголовок каждого пакета перед отправлением добавляется
его порядковый номер. В конечном итоге в узле назначения формируется
последовательность пакетов с правильным порядком следования. Таким образом, между
узлом – источником и узлом назначения устанавливается виртуальный (воображаемый)
канал связи.

Стандарт OSI
Стандарт OSI (Open System Interconnection) определяет уровни взаимодействия в сетях с
коммутацией пакетов. Стандарт был создан в 1983 году международной организацией
стандартов (ISO) с целью упрощения передачи информации в сети. Модель OSI состоит из
семи уровней, каждый из которых предоставляет определенные функциональные
возможности. Вследствие разделения «служебных обязанностей» между уровнями стало
возможным независимое изменение свойств уровней.
В основу модели положены следующие предпосылки:
1. Каждый уровень выполняет определенную функцию
2. Модель и ее уровни должны быть совместимы в международном масштабе
3. Количество уровней должно быть достаточным, но не избыточным.

Уровень Описание
Уровень 7. Прикладной (Application layer) Обеспечивает доступ к информации в сети
путем использования определенного
протокола (HTTP, FTP).
Уровень 6. Уровень представления Устраняет синтаксические различия,
данных (Presentation layer) различия в кодировках символов. Изменяет
форму представления информации, но не ее
содержание

81
Микропроцессорные системы управления. Часть 3

Уровень Описание
Уровень 5. Сеансовый (Session layer) Координирует параметры соединения в
сети. Используется редко
Уровень 4. Транспортный (Transport layer) Обеспечивает передачу пакетов между
узлами, контролирует правильность
передачи, восстанавливает
последовательность пакетов. В зависимости
от условий транспортный уровень
устанавливает одно или несколько сетевых
соединений. Двумя основными
транспортными протоколами являются TCP
(Transmission Control Protocol) и UDP (User
Datagram Protocol)
Уровень 3. Сетевой (Network layer) Обеспечивает передачу пакетов между
узлами сети с использованием
маршрутизации, оперирует с сетевым
адресом.
Уровень 2. Канальный (Data Link layer) Проверка доступности среды, передача,
обнаружение и коррекция ошибок.
Формируются кадры (группы байт),
контрольные суммы, определяется момент
начала и окончания передачи кадра.
Данный уровень может реализовываться
аппаратно или программно
Уровень 1. Физический (Physical layer) Передача битов по физическим каналам
связи, определяет уровни напряжений,
токов, скорость передачи. Данный уровень
реализуется в сетевом адаптере (аппаратно)

82

Оценить