Главная страница  Межпроцессное взаимодействие (состязание) 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 [ 54 ] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187

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

3.1.1. Устройства ввода/вывода

Устройства ввода/вывода можно фубо разделить на две категории: блочные и символьные. Блочными называются устройства, хранящие информацию в виде адресуемых блоков фиксированного размера. Обычно размеры блоков варьируются от 512 байт до 32 768 байт. Важное свойство блочного устройства состоит в том, что каждый блок может быть прочитан независимо от остальных блоков. Наиболее распространенными блочными устройствами являются диски.

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

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

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



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

3.1.2. Контроллеры устройств

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

Плата контроллера обычно снабжается разъемом, к которому может быть подключен кабель, ведущий к самому устройству. Многие контроллеры способны управлять двумя, четырьмя или даже восемью идентичными устройствами. Если интерфейс между контроллером и устройством является стандартным, то есть официальным стандартом ANSI, IEEE или ISO, либо фактическим стандартом, это смягчает ограничения выпуска по отдельности контроллеров и устройств, удовлетворяющих данному интерфейсу. Так, многие компании производят жесткие диски, соответствующие интерфейсу IDE или SCSI.

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

Интерфейс мювду контроллером и устройством-

Диски

Принтер

Центральный Процессор

Память

Контроллер диска

Контроллер принтера

Другие контроллеры

Системная

Рис. 3.1. Соединение процессора, памяти, контроллеров и устройств ввода/вывода

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



форматирован по 256 секторов на дорожку, с размером секторов по 512 байт. В действительности с диска в контроллер поступает последовательный поток битов, начинающийся с заголовка сектора (преамбулы), за которым следует 4096 бит в секторе и, наконец, контрольная сумма, также называемая кодом исправления ошибок (ЕСС, Error-Correcting Code). Заголовок сектора записывается на диск во время форматирования. Он содержит номера цилиндра и сектора, размер сектора, информацию синхронизации и т. п.

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

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

У каждого контроллера есть несколько регистров, с помощью которых с ним может общаться центральный процессор. У некоторых компьютеров такие регистры являются частью единого адресного пространства системы. Примером такой системы может служить 680x0. Назначение адреса каждому из устройств производится посредством схем логики декодирования шины и контроллеров устройств. У других систем для устройств ввода/вывода отводится специальное адресное пространство, в котором выделяются адреса для каждого из устройств. Таковы, например, IBM PC-совместимые машины.

В дополнение к портам ввода/вывода, часто используются прерывания, при помощи которых контроллер может сообщить процессору, что его регистры готовы для записи или для чтения. Прерывание, прежде всего, является электрическим сигналом. Линия запроса аппаратного прерывания (IRQ, Interrupt ReQuest line) является одним из физических входов чипа контроллера прерываний. Количество этих входов ограничено. Например, у персональных компьютеров Pentium только 15 IRQ доступны для устройств ввода/вывода. Некоторые из контроллеров встроены в материнскую плату, как, например, контроллер клавиатуры на IBM PC. У тех контроллеров, что вставляются в разъем на объединительной плате, установить соответствие между сигналом IRQ и устройством иногда можно при помощи перемычек или переключателей. Это бывает необходимо для исключения конфликтов, поскольку на современных материнских платах, поддерживающих технологию PlugnPlay, IRQ назначаются профаммно. Каждая из



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 [ 54 ] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187

© 2000 - 2018 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования.