Организация взаимодействия пк с периферийными устройствами кратко

Обновлено: 08.07.2024

1. Лекция 1.1.2.Связь компьютера с периферийными устройствами

Александр Александрович Олейников
Компьютерные и телекоммуникационные сети
Лекция 1.1.2.Связь
компьютера с периферийными
устройствами
Астрахань, 2018

2. Связь компьютера с периферийными устройствами

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

Обычно он представляет
собой разъем с набором
контактов, каждый из
которых имеет
определенное
назначение, например,
это может быть группа
контактов для передачи
данных, контакт
синхронизации данных и
т. п. Пара разъемов
соединяется кабелем,
который состоит из
набора проводов, каждый
из которых соединяет
соответствующие
контакты (рис. 2.1).
Рис.2.1. Взаимодействие компьютера с периферийным устройством.
1- запрос приложения к ОС, 2 – вызов драйвера, 3 – загрузка в буфер
интерфейсной карты команды или данных, 4 – побитная передача
информации в линию связи, 5 - прием битов и размещение их в буфере

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

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

10. Простейший случай взаимодействия двух компьютеров

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

Механизмы взаимодействия компьютеров в сети многое
позаимствовали у схемы взаимодействия компьютера с
периферийными устройствами. В самом простом случае
связь компьютеров может быть реализована с помощью тех
же самых средств, которые используются для связи
компьютера с периферией. Пусть для определенности связь
между компьютерами будет осуществляться через
последовательный интерфейс — СОМ-порт. С каждой
стороны контроллер СОМ-порта работает под
управлением драйвера СОМ-порта. Вместе они
обеспечивают передачу по кабелю между компьютерами
одного байта информации.
В локальных сетях подобные функции передачи данных
в линию связи выполняются сетевыми интерфейсными
картами (Network Interface Card, NIC), называемыми
также сетевыми адаптерами, и их драйверами.

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

21. Сетевые службы и приложения

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

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

Не всякое приложение, выполняемое в сети, является
распределенным. Значительная часть истории локальных сетей
связана как раз с использованием таких нераспределенных
приложений. Рассмотрим, например, как происходила работа
пользователя с известной в свое время СУБД dBase. Файлы
базы данных, с которыми работали все пользователи сети,
располагались на файловом сервере. Сама же СУБД хранилась
на каждом клиентском компьютере в пиле единого
программного модуля. Программа dBase была рассчитана
только на обработку данных, расположенных на том же
компьютере, что и сама программа. Пользователь запускал
dBase на своем компьютере, и программа искала данные на
локальном диске, совершенно не принимая во внимание
существование сети. Чтобы обрабатывать с помощью dBase
данные, расположенные на удаленном компьютере,
пользователь обращался к услугам файловой службы, которая
доставляла данные с сервера на клиентский компьютер и
создавала для СУБД эффект их локального хранения.

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

26. Физическая передача данных по линиям связи

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

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

Модуляция является таким способом физического кодирования при
котором информация кодируется изменением амплитуды, частоты или
фазы синусоидального сигнала несущей частоты. (Рис. 2.6а)
При амплитудной модуляции для логической единицы выбирается
один уровень амплитуды синусоиды несущей частоты, а для логического
нуля – другой. Этот способ редко используется в чистом виде на
практике из-за низкой помехоустойчивости, но часто применяется в
сочетании с другим видом модуляции – фазовой модуляцией.
При частотной модуляции значения 0 и 1 исходных данных
передаются синусоидами с различной частотой – f0 и f1. Этот способ
модуляции не требует сложных схем в модемах и обычно применяется в
низкоскоростных модемах, работающих на скоростях 300 или 1200
бит/с.
При фазовой модуляции значениям данных 0 и 1 соответствуют сигналы
одинаковой частоты, но с различной фазой, например 0 и 180 градусов
или 0, 90, 180 и 270 градусов.

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

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

32. Синхронизация передатчика и приемника

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

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

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

35. Характеристики физических каналов

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

Емкость канала связи (capacity), называемая также пропускной
способностью, представляет собой максимально возможную скорость
передачи информации по каналу.
Спецификой этой характеристики является то, что она отражает не только
параметры физической среды передачи, но и особенности выбранного
способа передачи дискретной информации по этой среде. Например,
емкость канала связи в сети Ethernet на оптическом волокне равна 10
Мбит/с. Эта скорость является предельно возможной для сочетания
технологии Ethernet и оптического волокна. Однако для того же самого
оптического волокна можно разработать и другую технологию передачи
данных, отличающуюся способом кодирования данных, тактовой частотой и
другими параметрами, которая будет иметь другую емкость. Так, технология
Fast Ethernet обеспечивает передачу данных по тому же оптическому
волокну с максимальной скоростью 100 Мбит/с, а технология Gigabit
Ethernet - 1000 Мбит/с. Передатчик коммуникационного устройства должен
работать со скоростью, равной пропускной способности канала. Эта скорость
иногда называется битовой скоростью передатчика (bit rate of transmitter).

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

Физические каналы связи делятся на несколько типов в зависимости от
того, могут они передавать информацию в обоих направлениях или нет.
Дуплексный канал обеспечивает одновременную передачу
информации в обоих направлениях. Дуплексный канал может состоять
их двух физических сред, каждая их которых используется для
передачи информации только в одном направлении. Возможен вариант,
когда одна среда служит для одновременной передачи встречных
потоков, в этом случае применяют дополнительные методы выделения
каждого потока из суммарного сигнала.
Полудуплексный канал также обеспечивает передачу информации в
обоих направлениях, но не одновременно, а по очереди. То есть в
течение определенного периода времени информация передается в
одном направлении. а в течении следующего периода — в обратном.
Симплексный канал позволяет передавать информацию только в
одном направлении. Часто дуплексный канал состоит из двух
симплексных каналов.

39. Вопросы и задания

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

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

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

Выполнение различных операций с данными осуществляется изолированной частью компьютера, называемой центральным процессором (ЦП). ЦП также имеет ячейки для запоминания информации, называемые регистрами. Их разделяют на регистры общего назначения и специализированные регистры. В современных компьютерах емкость регистра обычно составляет 4–8 байт. Регистры общего назначения используются для временного хранения данных и результатов операций. Для обработки информации обычно организовывается передача данных из ячеек памяти в регистры общего назначения, выполнение операции центральным процессором и передача результатов операции в основную память.

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

Программы хранятся в виде последовательности машинных команд, которые должен выполнять центральный процессор . Каждая команда состоит из поля операции и полей операндов, то есть тех данных, над которыми выполняется данная операция. Весь набор машинных команд называется машинным языком.

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

Взаимодействие с периферийными устройствами

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

Любая операция ввода-вывода предполагает диалог между ЦП и контроллером устройства. Когда процессору встречается команда, связанная с вводом-выводом, входящая в состав какой-либо программы, он выполняет ее, посылая сигналы контроллеру устройства. Это так называемый программируемый ввод-вывод.

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

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

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

Начнем с наиболее простого случая непосредственного соединения двух устройств физическим каналом, такое соединение называется связью "точка-точка" (point-to-point).

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

Для обмена данными компьютер и периферийное устройство (ПУ) оснащены внешними интерфейсами или портами (рис. 3.1). В данном случае к понятию "интерфейс" относятся:

ü электрический разъем;

ü набор проводов, соединяющих устройства;

ü совокупность правил обмена информацией по этим проводам.

Со стороны компьютера логикой передачи сигналов на внешний интерфейс управляют:

ü контроллер ПУ — аппаратный блок, часто реализуемый в виде отдельной платы;

ü драйвер ПУ – программа, управляющая контроллером периферийного устройства.

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

Обмен данными между ПУ и компьютером, как правило, является двунаправленным. Так, например, даже принтер, который представляет собой устройство вывода информации, возвращает в компьютер данные о своем состоянии.

Таким образом, по каналу, связывающему внешние интерфейсы, передается следующая информация:

ü данные, поступающие от контроллера на ПУ, например байты текста, который нужно распечатать на бумаге;

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

ü данные, возвращаемые устройством управления ПУ в ответ на запрос от контроллера, например данные о готовности к выполнению операции.

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




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

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

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

4. Контроллер перемещает данные из внутреннего буфера во внешний порт.

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

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


Рис. 3.1. Связь компьютера с периферийным устройством.

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

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

Возможное распределение функций между драйвером и контроллером (ПУ).

Функции, выполняемые драйвером:

ü ведение очередей запросов;

ü буферизация данных;

ü подсчет контрольной суммы последовательности байтов;

ü анализ состояния ПУ;

ü загрузка очередного байта данных (или команды) в регистр контроллера;

ü считывание байта данных или байта состояния ПУ из регистра контроллера.

Функции, выполняемые контроллером:

ü преобразование байта из регистра (порта) в последовательность бит;

ü передача каждого бита в линию связи;

ü обрамление байта стартовым и стоповым битами – синхронизация;

ü формирование бита четности;

ü установка признака завершения приема/передачи байта.

Лекция 3. Основные задачи построения сетей

Хронологическая последовательность важнейших событий в истории развития компьютерных сетей

Первые ламповые компьютеры Начало 40-х
Первые компьютеры на полупроводниковых схемах (транзисторах) Середина 50-х
Первые компьютеры на интегральных схемах. Первые мультипрограммные ОС Середина 60-х
Первые глобальные связи компьютеров Конец 60-х
Начало передач по телефонным сетям голоса в цифровой форме Конец 60-х
Появление больших интегральных схем. Первые мини-компьютеры Начало 70-х
Первые нестандартные локальные сети Начало 70-х
Создание сетевой архитектуры IBM SNA
Создание технологии Х.25
Появление персональных компьютеров Начало 80-х
Создание Internet в современном виде. Установка на всех узлах стека TCP/IP Начало 80-х
Появление стандартных технологий локальных сетей Ethernet – 1980 Token Ring – 1985 FDDI – 1985
Начало коммерческого использования Internet Конец 80-х
Изобретение Web

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

Начнем с наиболее простого случая непосредственного соединения двух устройств физическим каналом, такое соединение называется связью "точка-точка" (point-to-point).

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

Для обмена данными компьютер и периферийное устройство (ПУ) оснащены внешними интерфейсами или портами (рис. 3.1). В данном случае к понятию "интерфейс" относятся:

ü электрический разъем;

ü набор проводов, соединяющих устройства;

ü совокупность правил обмена информацией по этим проводам.

Со стороны компьютера логикой передачи сигналов на внешний интерфейс управляют:

ü контроллер ПУ — аппаратный блок, часто реализуемый в виде отдельной платы;

ü драйвер ПУ – программа, управляющая контроллером периферийного устройства.

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

Обмен данными между ПУ и компьютером, как правило, является двунаправленным. Так, например, даже принтер, который представляет собой устройство вывода информации, возвращает в компьютер данные о своем состоянии.

Таким образом, по каналу, связывающему внешние интерфейсы, передается следующая информация:

ü данные, поступающие от контроллера на ПУ, например байты текста, который нужно распечатать на бумаге;

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

ü данные, возвращаемые устройством управления ПУ в ответ на запрос от контроллера, например данные о готовности к выполнению операции.

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

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

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

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

4. Контроллер перемещает данные из внутреннего буфера во внешний порт.

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

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


Рис. 3.1. Связь компьютера с периферийным устройством.

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

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

Возможное распределение функций между драйвером и контроллером (ПУ).

Функции, выполняемые драйвером:

ü ведение очередей запросов;

ü буферизация данных;

ü подсчет контрольной суммы последовательности байтов;

ü анализ состояния ПУ;

ü загрузка очередного байта данных (или команды) в регистр контроллера;

ü считывание байта данных или байта состояния ПУ из регистра контроллера.

Функции, выполняемые контроллером:

ü преобразование байта из регистра (порта) в последовательность бит;

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


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

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

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

Способы взаимодействия устройств

Обмен информацией вычислительной системе происходит по следующей схеме:

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

Можно выделить следующие способы взаимодействия устройств.

Ввод-вывод по прерываниям

Прямой доступ к памяти

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

Программно-управляемый ввод-вывод

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

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

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

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

Сами внешние устройства в данном способе, просигнализировав о своем состоянии, в дальнейшем играют пассивную роль, принимая или отдавая данные процессору.

Плюсом данного способа является простота реализации. Недостатком - потери времени процессора на регулярное проведение опроса.

В современных системах данный способ не применяется.

Ввод-вывод по прерываниям

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

Алгоритм ввода/вывода по прерыванию заключается в следующем:

  • Ввод/вывод инициируется внешним устройством, генерирующим сигнал прерывания.
  • Процессор останавливает выполнение выполняемой программы и начинает обработку прерывания:
    • Сохраняет адрес текущей выполняемой команды программы в стеке
    • Сохранить в стеке текущее значение регистра состояния процессора (флагов)
    • Определяет начальный адрес программы обработки прерывания по таблице векторов прерываний (Interrupt Descriptor Table, IDT)
    • Выполняет программу обработки прерывания
    • Восстанавливает прежнее состояние процессора, возвращая из стека регистр состояния процессора и адрес выполняемой команды прерванной программы.

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

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

    Контроллер прерываний принимает запросы на прерывания от различных устройств (на рисунке IRQ - Interrupt Request) и сохраняет факт запроса в специальном регистре – регистре запросов прерываний.

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

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

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


    Ранее функции контроллера прерываний выполняли специализированные микросхемы на материнской плате; в настоящее время контроллер прерывания вынесен на Южный мост.

    Для определения адреса программы, обрабатывающей прерывание, используется таблица векторов прерываний (Interrupt Descriptor Table, IDT). В таблице представлены номера некоторых (таблица приводится не полностью) прерываний.

    Как видно из таблицы, некоторые прерывания генерируются самим процессором при определенных обстоятельства, например, ошибка деления на ноль. Прерывания от внешних устройств – это IRQ (Interrupt ReQuest) - аппаратные прерывания, которые генерируются устройствами, подключенными к компьютеру. К примеру, IRQ №0 генерируется PIT (таймер с программируемым интервалом), IRQ 1 генерируется при нажатии клавиши на клавиатуре.

    Прямой доступ к памяти

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

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

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

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


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

    В настоящее время в вычислительных системах используется как прямой доступ к памяти, так и ввод/вывод по прерываниям.

    Эволюция общей шины.

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

    Первое поколение

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

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

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

    Усовершенствованием шин первого поколения было введение прерываний.

    Примером шины первого поколения может служить шина ISA (Industry Standard Architecture), устанавливаемая на персональные компьютеры с 1981 года.

    Разъем ISA состоял из 62 контактов:

    · 20 -разрядная шина адреса,

    · 6 линий прерывания,

    · управляющие линии для чтения-записи памяти и устройств ввода/вывода,

    · тактовые и синхронизирующие линии,

    · 3 канала линий управления прямым доступом к памяти,

    · линии управления регенерацией памяти,

    · линия проверки канала,

    ISA работала на частоте до 8 МГц и передавала данные со скоростью до 4 МБайт/с (при частоте работы процессоров ~4,7 МГц). Инициатором обмена могли выступать только процессор и контроллер DMA.

    Усовершенствованием шины ISA было

    · Удвоение разрядности данных (удвоение пропускной способности)

    · Добавление четырех разряда адреса;

    · Увеличилось число линий запросов прерываний (IRQ) и запросов прямого доступа к памяти (DMA).

    • Любое подключенное к ней устройство могло инициировать операцию обмена данными

    В 1993 году Intel и Microsoft разработали ISA PnP (Plug and Play), которая позволяла операционной системе самой определять назначаемое прерывание для устройства, тем самым исключая ручную настройку устанавливаемых устройств.

    Второе поколение

    Основным отличием шин второго поколения была изоляция процессора и памяти на собственной высокоскоростной шине. Между получившимися шинами был установлен специальный контроллер шин (bus controller).

    Но все внешние устройства по-прежнему работали на одной скорости.

    Во втором поколении шины разделили на внутренние (localbus) для подключения внутренних устройств, таких как видеоадаптеры и звуковые платы (примеры, PCI, PCI-Express), и внешние (externalbus) для подключения внешних устройств, например, сканеров (пример, USB, FireWire).

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

    Примером шины второго поколения может служить шина PCI (Peripheral Component Interconnect), выпущенная в 1992 году. Характеристики PCI:

    · Параллельная передача данных

    · Введение северного и южного моста, связь между ними

    · Тактовая частота 33 МГц,

    · Разрядность 32 или 64 бита

    • Теоретически, пропускная способность шины 133 Мбайт/с, но пропускная способность шины делится между всеми устройствами

    В то время тактовая частота процессоров составляла порядка ~ 50-60 МГц. Таким образом, PCI вполне соответствовала быстродействию системы в целом.

    С увеличением частоты работы процессора и скорости работы всех прочих компонент, PCI развивалась. Основным направлением развития было увеличение пропускной способности за счет увеличения частоты шины.

    В частности была реализация AGP (скоростного интерфейса видеоплаты) как частного случая PCI 2.0. при отсутствии арбитража интерфейса : к AGP допускалось подключение только одного устройства – видеоплаты.

    Пределом PCI можно назвать PCI 2.1 66 МГц, обеспечивающей пропускную способность 266 Мбайт/с. Дальнейшее увеличение частоты было затруднительно в силу параллельной природы данного интерфейса. Кроме того, к этому моменту были созданы отдельные интерфейсы для процессора с памятью, для дисков внешней памяти. В настоящее время PCI используется только для модемов, сетевых и звуковых плат, но постепенно вытесняется PCI-Express.

    Третье поколение

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

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

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

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

    Коммутатор (подробнее данное устройство описывается в рамках сетевых технологий) позволяет одновременно передавать через себя несколько потоков данных.

    PCI-Express является последовательным интерфейсом, что позволяет передавать данные на высокой частоте. В первой версии PCI-Express при частоте передачи 2,5 ГГц по одной линии можно передавать данные на скорости 2500 МГц / 10 * 8 = 250 * 8 Мбит/сек = 250 Мбайт/сек для каждого устройства в одном направлении. Причиной деления на 10 является избыточное кодирование для передачи 8 бит данных десятью битами информации: при этом каждый байт перекодируется в соответствии с определенной схемой во избежание передачи подряд идущих нулей или единиц.

    Но PCI-Express позволяет устройствам одновременно передавать в двух направлениях. Таким образом, максимальная пропускная способность удваивается.

    Число линий PCI Express Пропускная способность в одном направлении Суммарная пропускная способность
    250 Мб/сек 500 Мб/сек
    500 Мб/сек 1 Гб/сек
    1 Гб/сек 2 Гб/сек
    2 Гб/сек 4 Гб/сек
    4 Гб/сек 8 Гб/сек
    8 Гб/сек 16 Гб/сек

    Шина PCI Express может использовать несколько таких последовательных соединений типа точка-точка, (для данного интерфейса они называются линиями), конструктивно соединенных в один интерфейс: x1 (одна линия), x2 (две линии), x4 (четыре линии), x8 (восемь линий), x12 (двенадцать линий), x16 (16 линий), x32 (32 линии). То есть соединение между картами PCI-Express может быть обеспечено как одной (1x), так и несколькими (2x, 4x, 8x, 12x, 16x, 32x) линиями.

    Если слот PCI Express имеет приставку x16 (PCI Express x16), это означает, что он 16-канальный. В такой слот может быть установлена карта как PCI Express x1, так и PCI Express x16.

    Шиной PCI Express поддерживается:

    • горячая замена карт;
    • гарантированная полоса пропускания (QoS);
    • управление энергопотреблением;
    • контроль целостности передаваемых данных.

    Последующие версии PCI-Express удваивали частоту, и, соответственно, пропускную способность шины. В 2017 году вышла очередная версия - PCI Express 4.0.

    Скорость компьютерных шин в настоящее время определяют в гигатранзакциях в секунду. За одну транзакцию передаётся один передаваемый элемент. Для расчёта реальной пропускной способности передаваемых данных (ее значение ниже скорости передачи) одной линии шины необходимо учесть кодировку передаваемой информации. Как видно из таблицы данные передаются с избыточностью: 8 бит передаются 10 битами или 128 бит передаются 130 битами. Причина избыточности – исключить передачу большого количества идущих подряд нулей и единиц, затрудняющих распознавание со стороны приемника.

    Год выпуска Версия PCI-Express Кодирование Скорость передачи Пропускная способность на x линиях, Гбит/сек
    x1 x2 x4 x8 x16
    1.0 8b/10b 2,5 ГТ/с
    2.0 8b/10b 5 ГТ/с
    3.0 128b/130b 8 ГТ/с ~7.877 ~15.754 ~31.508 ~63.015 ~126.031
    4.0 128b/130b 16 ГТ/с ~15.754 ~31.508 ~63.015 ~126.031 ~252.062

    Чипсет

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

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

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

    Для процессора разрабатывались высокоскоростные шины, например, FSB, DMI, HyperTransport и QPI.

    Примером внутренних шин служат PCI и PCI-Express. Причем в последнее время PCI-Express все больше вытесняет шину PCI.

    Примерами внешних интерфейсов для связи с накопителями могут быть IDE и SATA (современные накопители уже н оснащают интерфейсом IDE ).

    Также разработаны внешние интерфейсы для связи с периферийными устройствами, например FireWire или USB.

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


    Высокоскоростные шины.

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

    FSB (Front Site Bus)

    FSB – параллельная шина - разрабатывалась компанией Intel для связи процессора с северным мостом. Частота шины соответствовала частоте процессора, и возрастала с 50 МГц в начале 1990-х годов, до 400 МГц в конце 2000-х. Пропускная способность шины менялась с 400 Мбит/с до 12800 Мбит/с.

    Шина FSB использовалась в процессорах типа Celeron, Pentium, Core 2 до 2008 года. На данный момент вытеснена шинами QPI и Hyper Transport.

    Читайте также: