Меню

Урок 25 3 2 Организация ввода и вывода данных

Урок 25 § 3.2. Организация ввода и вывода данных

• оператор вывода write
• формат вывода
• оператор ввода read

3.2.1. Вывод данных

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

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

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

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

Пример. Оператор write (‘ s=’, s) выполняется так:

1) на экран выводятся символы, заключённые в апострофы: s=

2) на экран выводится значение переменной, хранящееся в ячейке оперативной памяти с именем s.

Если значение переменной s равно 15 и она имеет целочисленный тип, то на экране появится: s=15

Если значение переменной s равно 15, но она имеет вещественный тип, то на экране появится: s=1.5Е+01

При выполнении оператора вывода все элементы списка вывода печатаются непосредственно друг за другом. Так, в результате работы оператора write (1, 20, 300) на экран будет выведена последовательность цифр 120300, которая будет восприниматься нами как число 120300, а не как три отдельные числовые константы. Сделать выводимые данные более доступными для восприятия можно разными способами:

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

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

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

3.2.2. Первая программа на языке Паскаль

Пользуясь рассмотренными операторами, составим программу, вычисляющую длину окружности и площадь круга радиуса 5,4 см.

Исходным данным в этой задаче является радиус: r = 5,4 см. Результатом работы программы должны быть величины с — длина окружности и s — площадь круга, с, s и r — величины вещественного типа.

Исходные данные и результаты связаны соотношениями, известными из курса математики: с = 2πr, s = πr 2 . Программа, реализующая вычисления по этим формулам, будет иметь вид:

Источник

Основные инструкции ввода вывода

Рис.4.26.Фрагмент программы, обеспечивающей непрерывную индикацию строки символов

Рис.4.27.Блок-схема программы, обеспечивающий вывод в режиме «бегущей строки»

Рис.4.28.Структура буфера программы, обеспечивающий вывод в режиме бегущей строки

символы, семисегментные коды которых находятся в буфере. Числа около стрелок задают порядок пересылки кодов в процессе поворота. После поворота буфера вновь выполняется NN циклов индикации. Легко видеть, что при этом символы на дисплее будут последовательно смещаться влево и строка на нем «побежит». Скорость ее движения определяется числом циклов NN циклов индикации. Чем больше NN, тем медленнее бежит строка.

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

; ЧИСЛО СИМВОЛОВ В СТРОКЕ

; ЗАНЕСТИ В ПАРУ HL НАЧ.

; АДРЕС ИСТОЧНИКА КОДА

; ЗАНЕСТИ В ПАРУ DE НАЧ.

; АДРЕС ПРИЕМНИКА КОДА

; ВЫПОЛНИТЬ N ЦИКЛОВ

; ПЕРЕСЛАТЬ КОД ИЗ

; ИСТОЧНИКА В ПРИЕМНИК

; ИСТОЧНИКА И ПРИЕМНИКА

; НЕТ, ПОВТОРИТЬ, ИНАЧЕ

Рис.4.30.Фрагмент программы, обеспечиваюший поворот буфера

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

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

; МАСКА МЛАДШЕЙ ТЕТРАДЫ

; ВЫДЕЛИТЬ МЛ. ТЕТРАДУ

; ОЧИСТИТЬ РЕГИСТР H

; ЗАГРУЗИТЬ МЛ. ТЕТРАДУ ВХ

; КОДА В РЕГИСТР L

; ЗАГРУЗИТЬ НАЧ. АДР.ТАБЛИЦЫ

; ВЫЧИСЛИТЬ АДРЕС ВЫХ. КОДА

; ЗАГРУЗИТЬ ВЫХ. КОД В РЕГ. А

; ВОЗВРАТИТЬСЯ В ОСНОВНУЮ

Рис.4.31. Текст подпрограммы BIS7

Начальный (базовый) адрес таблицы TAB7 складывается в подпрограмме с исходным кодом 0 F. При этом в регистровой паре HL получается адрес соответствующего семисегментного кода. Этот код извлекается из таблицы TAB7 командой MOV A, M и помещается в аккумулятор.

Ввод информации с кнопок и клавиатуры, подключенных к микро-ЭВМ обычно сопряжен с решением следующих специфических проблем:

защитой от дребезга контактов кнопок или клавиш;

идентификацией нажатой клавиши;

обеспечением нужного порядка срабатывания клавиш (при нажатии или при отпускании).

Защита от дребезга может быть обеспечена либо на аппаратном, либо на программном уровне.

Для идентификации клавиш обычно требуется комбинация определенных аппаратных и программных средств.

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

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

Читайте также:  Как настроить телевизор Сони Пульт для телевизора Сони

При малом количестве клавиш первый этап идентификации решается чисто аппаратно. Для приема сигнала с каждой из клавиш здесь выделяют отдельные разряды, биты в порте прямого ввода. Пример такого решения иллюстрирует схема клавиатуры, представленная на рис.4.32. Комбинация нажатых клавиш S0 S7 задает здесь уникальный код нажатой клавиши KNK1, который далее вводится в микро-ЭВМ через порт прямого ввода PIKNK1. Если количество клавиш больше числа разрядов порта ввода, можно включить между клавиатурой и портом шифратор с соответствующим количеством входов. При использовании шифратора, восьмиразрядный порт ввода может вводить информацию максимум от 255 клавиш.

Второй этап идентификации нажатой клавиши обеспечивается подпрограммой IDEN2, которая:

вводит в микро-ЭВМ код нажатой клавиши KNK1;

проверяет, содержится ли этот код в таблице допустимых кодов;

устанавливает признак недопустимого ввода Z = 1, если эта проверка не успешна. Некорректный ввод возможен, например, при одновременном нажатии нескольких клавиш;

Устанавливает признак управляющей клавиши С = 1, если нажата управляющая клавиша;

преобразует код нажатой клавиши KNK1 в другой — KNK2, более удобный для последующего использования.

Рис.4.32.Подключение клавиатуры к микро-ЭВМ

Для цифровых клавиш, коды KNK2 должны соответствовать их маркировке. Для управляющих клавиш удобно использовать в качестве кодов KNK2 последовательность четных шестнадцатеричных чисел, начинающуюся с 00Н. Код KNK2 получается в подпрограмме из промежуточного кода CKNK2. Младшая тетрада кода CKNK2 есть код KNK2 нажатой клавиши. Старшая тетрада равна 0H для цифровых и 8H для управляющих клавиш. Такая структура кода CKNK2 позволяет одновременно использовать его как для формирования KNK2, так и признака управляющей клавиши.

В случае, если на рис.4.32 клавиши S0 S3 — цифровые, а S4 S7 — управляющие, подпрограмма IDEN2 может иметь вид, представленный на рис.4.33.

Основу подпрограммы составляет цикл, в котором последовательно устанавливаются адреса всех восьми строк таблиц ТАВ1 (KNK1) и ТАВ2 (CKNK2) и идет сравнение кода из таблицы ТАВ1 с кодом нажатой клавиши. Если введенного кода нет в таблице ТАВ1, то есть имел место некорректный ввод, происходит выход из подпрограммы с установленным некорректного ввода Z=1. Этот признак устанавливается командой DCR B при завершении цикла. Если же введенный код опознан в одном из кодов ТАВ1, следует выход из цикла к метке М1. Регистровая пара DE содержит в этом случае адрес кода CKNK2 в таблице ТАВ2. Далее этот код извлекается из ТАВ2 командой LDAX D.

; ПОРТ ВВОДА PIKNK1

; ДЛИНА ТАБЛИЦЫ КОДОВ

; МАСКА МЛАДШЕЙ ТЕТРАДЫ

; ЗАГРУЗИТЬ ДЛИНУ ТАБЛИЦЫ

; ЗАГРУЗ. НАЧ. АДРЕС ТАБЛИЦЫ

; КОДОВ KNK1 В ПАРУ HL

; ЗАГРУЗ. НАЧ. АДРЕС ТАБЛИЦЫ

; КОДОВ СKNK2 В ПАРУ DE

; KNK1 СОВПАДАЕТ СО СТРОКОЙ

; ДА, ПЕРЕЙТИ К М1, ИНАЧЕ

; КОДОВ В ТАВ1 И ТАВ2

; ПРОСМОТРЕНА ВСЯ ТАВ1?

; НЕТ, ПОВТОРИТЬ, ИНАЧЕ

; ВЫБРАТЬ CKNK2 ИЗ ТАВ2

; СОХРАНИТЬ В РЕГИСТРЕ В

; ВЫБРАТЬ CKNK2 ИЗ ТАВ2

; ПЕРЕНЕСТИ СТАРШИЙ БИТ CKNK2

; В БИТ С РЕГИСТРА F

; ВОССТАНОВИТЬ KNK2 В

; ВОЗВРАТ С Z=0 И С=1 / 0

0FEH, 0FDH, 0FBH, 0F7H

0EFH, 0DFH, 0BFH, 7FH

00H, 01H, 02H, 03H

80H, 82H, 84H, 86H

Рис.4.33.Текст подпрограммы IDEN2

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

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

Порт POKWR предназначен для выбора ряда клавиш, опрашиваемых в данный момент времени. В этот порт выводится код выбора ряда KWR. Единичный бит этого кода обеспечивает активацию, выбор одного из вертикальных рядов клавиш, задавая на вертикальном проводнике матрицы уровень логического нуля. В невыбранных рядах вертикальные проводники имеют уровень логической единицы. Поэтому замыкание контактов клавиатуры в невыбранных рядах не меняет единичного состояния входов D6, D5, D4 и D2 порта PIKAR. Замыкание же контактов в выбранном ряду приводит к появлению уровня логического нуля на одном или нескольких входах этого порта. Таким образом, формируется код активного ряда KAR, который может ввести в микро-ЭВМ через порт PIKAR.

Последовательный выбор рядов клавиш меняющимся в цикле кодом KWR и ввод кода KAR соответствующего ряда осуществляет специальный блок подпрограммы идентификации IDEN. Байтовые коды KWR и KAR составляют вместе уникальный шестнадцатиразрядный код нажатой клавиши, который используется на втором этапе идентификации. Так, например, если этот код равен 0170H, то нажата клавиша «пробел».

Для рассматриваемого варианта клавиатуры коды KWR и KAR можно объединить в байтовый код нажатой клавиши KNK, используя соотношение

KNK = KWR / 2 + KAR х 2.

Это соотношение может быть реализовано фрагментом программы, приведенным на рис.4.35. Здесь предполагается, что код KWR содержится в регистре С.

Часто нужно определить, нажата ли какая-либо (неважно какая) из клавиш клавиатуры. В этом случае следует выбрать все шесть рядов клавиш одновременно, выдав в порт POKWR код KWR = 3FH. Порт PIKAR будет при этом принимать код KAR = 74H только в том случае, если не нажата ни одна из клавиш.

Читайте также:  Руководство по эксплуатации Yamaha Yg6600de

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

Рис.4.34.Принципиальная схема матричной клавиатуры

Источник



Инструкции ввода и вывода

date image2015-03-07
views image1438

facebook icon vkontakte icon twitter icon odnoklasniki icon

Инструкции ввода и вывода данных:

1. write [(‘Текст вывода на экран’, переменная1, переменная2,…, переменнаяN)]; — предназначена для вывода значений на экран.

2. writeln [(‘Текст вывода на экран’, переменная1, переменная2,…, переменнаяN)];-выводит значения данных на экран и переводит курсор в начало следующей строки.

3. read[(‘Текст вывода на экран’,переменная1, переменная2,…, переменнаяN)]; — обеспечивает ввод данных в память ЭВМ, при этом курсор остается на месте.

4. readln [(‘Текст вывода на экран’,переменная1, переменная2,…, переменнаяN)]; — обеспечивает ввод данных в память ЭВМ, при этом осуществляется перевод курсора на новую строку.

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

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

Примеры записи инструкции writeи результата выполнения приведены в таблице В.4.:

Таблица В.4 — Примеры

Запись на языке Pascal Результат
write(summa); Вывод на экран значения переменной summa
write(‘Результат вычислений’); Вывод на экран текста: Результат вычислений
write(‘корни уравнения. x1=’,x1,’ x2=’,x2); Вывод на экран записи: Текст: корни уравнения. x1= значение переменной х1,  x2=значение переменной х2.

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

Инструкция read предназначена для ввода с клавиатуры значений переменных (исходных данных).

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

Формат вывода.Организация вывода вещественных чисел отличается от вывода целых чисел тем, что в случае задания общего количества позиций под выводимую величину можно задать и количество позиций после запятой. Пусть переменные А, В, С — вещественного типа и в программе им присвоены соответственно значения — 641,536; 17841,1; -7,4385.

а). WRITELN(A:6:2, B:9:2, С:8:4);. обеспечит вывод данных в формате:

А=641.54; В=17841.10; С=-7.4385

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

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

в) Если в операторе вывода не указывается длина поля W, то под каждое число отводится стандартная длина поля и числа печатаются в экспоненциальной форме:

WRITELN(A, В, С);. обеспечит вывод данных в формате:

6.415360Е + 02; 1.78411E + 04; — 7.4385Е + 0.

При выводе значений символьного типа, если в явном виде не указывается количество позиций, под каждый символ отводится одна позиция. Например, оператор WRITELN(‘S1=’,S1:5′, S2=’, S2); выведет на экран (если символьной переменной S1 в программе присвоено значение ‘*’, а S2 — ‘W’) следующую строку:

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

При выводе значений булевского типа на печать выводится TRUE или FALSE. Например, оператор WRITELN(A

Источник

Операционная система — Оборудование ввода / вывода

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

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

Блочные устройства — блочное устройство, с которым драйвер связывается, отправляя целые блоки данных. Например, жесткие диски, USB-камеры, Disk-On-Key и т. Д.

Символьные устройства. Символьное устройство — это устройство, с которым драйвер общается, отправляя и получая отдельные символы (байты, октеты). Например, последовательные порты, параллельные порты, звуковые карты и т. Д.

Блочные устройства — блочное устройство, с которым драйвер связывается, отправляя целые блоки данных. Например, жесткие диски, USB-камеры, Disk-On-Key и т. Д.

Символьные устройства. Символьное устройство — это устройство, с которым драйвер общается, отправляя и получая отдельные символы (байты, октеты). Например, последовательные порты, параллельные порты, звуковые карты и т. Д.

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

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

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

Читайте также:  Должностная инструкция служба режима и безопасности

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

Любое устройство, подключенное к компьютеру, подключается через разъем и розетку, а разъем подключается к контроллеру устройства. Ниже приведена модель подключения ЦП, памяти, контроллеров и устройств ввода-вывода, в которой все ЦП и контроллеры устройств используют общую шину для связи.

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

Синхронный и асинхронный ввод-вывод

Синхронный ввод / вывод — в этой схеме выполнение ЦП ожидает, пока продолжается ввод / вывод

Асинхронный ввод-вывод — ввод-вывод выполняется одновременно с выполнением процессора

Синхронный ввод / вывод — в этой схеме выполнение ЦП ожидает, пока продолжается ввод / вывод

Асинхронный ввод-вывод — ввод-вывод выполняется одновременно с выполнением процессора

Связь с устройствами ввода / вывода

Процессор должен иметь возможность передавать информацию на устройство ввода-вывода и обратно. Существует три подхода для связи с процессором и устройством.

  • Специальная инструкция ввода / вывода
  • Отображение в памяти ввода-вывода
  • Прямой доступ к памяти (DMA)

Специальная инструкция ввода / вывода

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

Отображение в памяти ввода-вывода

При использовании сопоставленного с памятью ввода-вывода одно и то же адресное пространство совместно используется устройствами памяти и ввода-вывода. Устройство подключено напрямую к определенным местам в основной памяти, так что устройство ввода-вывода может передавать блок данных в / из памяти без прохождения через CPU.

Отображение в памяти ввода-вывода

При использовании отображения ввода-вывода в память ОС выделяет буфер в памяти и сообщает устройству ввода-вывода использовать этот буфер для отправки данных в ЦП. Устройство ввода-вывода работает асинхронно с ЦП, прерывает ЦП после завершения.

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

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

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

Прямой доступ к памяти (DMA) означает, что ЦП предоставляет полномочия модуля ввода / вывода для чтения или записи в память без участия. Модуль DMA сам управляет обменом данными между основной памятью и устройством ввода-вывода. CPU задействуется только в начале и в конце передачи и прерывается только после того, как весь блок был передан.

Для прямого доступа к памяти требуется специальное оборудование, называемое контроллером DMA (DMAC), которое управляет передачей данных и разрешает доступ к системной шине. Контроллеры запрограммированы с указателями источника и назначения (где для чтения / записи данных), счетчиками для отслеживания количества переданных байтов и настройками, которые включают в себя ввод / вывод и типы памяти, прерывания и состояния для циклов ЦП.

DMA

Операционная система использует оборудование DMA следующим образом:

шаг Описание
1 Драйвер устройства получает указание перенести данные с диска на адрес буфера X.
2 Затем драйвер устройства дает команду контроллеру диска передать данные в буфер.
3 Контроллер диска начинает передачу DMA.
4 Контроллер диска отправляет каждый байт контроллеру DMA.
5 Контроллер DMA передает байты в буфер, увеличивает адрес памяти, уменьшает счетчик C, пока C не станет равным нулю.
6 Когда C становится равным нулю, DMA прерывает CPU, чтобы завершить передачу сигнала.

Опрос против прерывания ввода / вывода

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

Опрос ввода / вывода

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

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

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

Прерывает ввод / вывод

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

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

Источник