Лекции по "Криптология "

Автор: Пользователь скрыл имя, 11 Декабря 2011 в 20:34, курс лекций

Краткое описание

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

Оглавление

Лекция 16. Структура системы ввода-вывода. Функции базовой подсистемы ввода-вывода. 1
Логические принципы организации ввода-вывода 1
Структура системы ввода-вывода 1
Функции базовой подсистемы ввода-вывода 4
Буферизация и кэширование 5
Spooling и захват устройств. 6
Обработка прерываний и ошибок 6
Планирование запросов 7
Лекция 15. Система управления вводом-выводом. Физические принципы организации ввода-вывода. Общие сведения об архитектуре компьютера. Структура контроллера устройства. Опрос устройств и прерывания. 8
Физические принципы организации ввода-вывода 8
Общие сведения об архитектуре компьютера 8
Структура контроллера устройства 10
Опрос устройств и прерывания. Исключительные ситуации и системные вызовы 11
Для внешних прерываний характерны следующие особенности: 13
Прямой доступ к памяти (Direct Memory Access – DMA) 14
Лекция 14. Загрузка программ. Абсолютная загрузка. Относительная загрузка. Позиционно-независимый код. Загрузка ОС. Сборка программ. 15
Загрузка программ 15
Абсолютная загрузка 15
Абсолютная загрузка используется, например, в системе UNIX на 32-разрядных машинах. 16
Относительная загрузка 16
Позиционно-независимый код 17
Загрузка ОС 17
Пример: Загрузка системы MS-DOS. 20
Сборка программ 21
Объектный модуль 21
Библиотеки объектных модулей 22
Варианты построения загрузчиков 23
Лекция 13. Кэширование данных. Иерархия запоминающих устройств. Кэш память. Принцип действия кэш-памяти. Проблемы согласования данных. Проблемы отображения основной памяти в кэш. 25
Иерархия запоминающих устройств 25
Кэш-память 25
Принцип действия кэш-памяти 26
Проблема согласования данных 28
Способы отображения основной памяти на кэш 28
Схемы выполнения запросов в системах с кэш-памятью 29

Файлы: 1 файл

модОС.docx

— 97.55 Кб (Скачать)

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

  • Устройства ввода-вывода подключаются к системе через порты.
  • Могут существовать два адресных пространства: пространство памяти и пространство ввода-вывода.
  • Порты, как правило, отображаются в адресное пространство ввода-вывода и, иногда, непосредственно в адресное пространство памяти.
  • Использование того или иного адресного пространства определяется типом команды, выполняемой процессором, или типом ее операндов.
  • Физическим управлением устройством ввода-вывода, передачей информации через порт, и выставлением некоторых сигналов на магистрали занимается контроллер устройства.

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

  Структура контроллера устройства

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

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

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

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

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

  Опрос устройств и прерывания. Исключительные ситуации и системные вызовы

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

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

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

3. Процессор  записывает данные в порт регистра  входных данных.

4. Процессор  устанавливает бит готовности  команды. В следующих шагах  процессор не задействован.

5. Когда контроллер  замечает, что бит готовности  команды установлен, он устанавливает бит занятости.

6. Контроллер  анализирует код команды в  регистре управления и обнаруживает, что это команда вывода. Он  берет данные из регистра входных  данных и инициирует выполнение  команды. 

7. После завершения  операции контроллер обнуляет  бит готовности команды. 

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

9. Контроллер  сбрасывает бит занятости.

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

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

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

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

Информация о работе Лекции по "Криптология "