Какую информацию могут содержать регистры контроллеров устройства
Перейти к содержимому

Какую информацию могут содержать регистры контроллеров устройства

  • автор:

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

Какие особенности характерны для современных универсальных операционных систем?

+ 1. поддержка многозадачности

+ 2. поддержка сетевых функций

+ 3. обеспечение безопасности и защиты данных

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

Какие утверждения относительно понятия «API-функция» являются правильными?

+ 1. API-функции определяют прикладной программный интерфейс

+ 2. API-функции используются при разработке приложений для доступа к ресурсам компьютера

3. API-функции реализуют самый нижний уровень ядра системы

4. API-функции — это набор аппаратно реализованных функций системы

Какие особенности характерны для ОС Unix

+ 1. открытость и доступность исходного кода

2. ориентация на использование оконного графического интерфейса

+ 3. использование языка высокого уровня С

+ 4. возможность достаточно легкого перехода на другие аппаратные платформы

Какие типы операционных систем используются наиболее часто в настоящее время?

+ 1. системы семейства Windows

+ 2. системы семейства Unix/Linux

3. системы семейства MS DOS

4. системы семейства IBM OS 360/370

Какие задачи необходимо решать при создании мультипрограммны х ОС

+ 1. защита кода и данных разных приложений, размещенных вместе в основной памяти

+ 2. централизованное управление ресурсами со стороны ОС

+ 3. переключение процессора с одного приложения на другое

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

Какое соотношение между используемыми на СЕРВЕРАХ операционными системами сложилось в настоящее время?

+ 1. примерно поровну используются системы семейств Windows и Unix/Linux

2. около 10 % — системы семейства Windows, около 90 % — системы смейства Unix/Linux

3. около 90 % — системы семейства Windows, около 10 % — системы семейства Unix/Linux

4. около 30 % — системы семейства Windows, около 30 % — системы семейства Unix/Linux, около 40 % — другие системы

Какие утверждения относительно понятия «Ядро операционной системы» являются правильными?

+ 1. ядро реализует наиболее важные функции ОС

+ 2. подпрограммы ядра выполняются в привилегированно м режиме работы процессора

3. ядро в сложных ОС может строиться по многоуровневому принципу

4. ядро всегда реализуется на аппаратном уровне

Какие сообщения возникают при нажатии на клавиатуре алфавитно-цифров ой клавиши?

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

1. формирование сообщения и помещение его в системную очередь

+ 2. распределение сообщений по очередям приложений

+ 3. вызов оконной функции для обработки сообщения

4. извлечение сообщения из очереди приложения

Что представляет собой понятие “сообщение” (message)?

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

2. специальную API-функцию, вызываемую системой при возникновении события

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

+ 4. небольшое окно, выводящее пользователю информацию о возникшем событии

Какие утверждения относительно иерархии окон являются справедливыми

+ 1. главное окно может содержать любое число подчиненных окон

+ 2. любое подчиненное окно может содержать свои подчиненные окна

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

+ 4. приложение может иметь несколько главных окон

Как можно узнать координаты текущего положения мыши при нажатии левой кнопки

+ 1. с помощью события WM_LbuttonDown и его поля LPARAM

2. с помощью события WM_LbuttonDown и его поля WPARAM

3. с помощью события WM_LbuttonDown и его полей WPARAM и LPARAM

4. с помощью события WM_LbuttonCoordi nates

Какие функции можно использовать для получения контекста устройства?

Какая инструкция (оператор) является основной при написании оконной функции?

+ 1. инструкция множественного выбора типа Case — Of

2. условная инструкция if – then

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

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

Какой вызов позволяет добавить строку в элемент-список?

+ 1. SendMessage (MyEdit, lb_AddString, 0, строка)

2. SendMessage (“Edit”, lb_AddString, 0, строка)

3. SendMessage (MyEdit, AddString, 0, строка)

4. SendMessage (MyEdit, строка, lb_AddString, 0)

Какие утверждения относительно оконной функции являются правильными

+ 1. оконная функция принимает 4 входных параметра

+ 2. тело оконной функции – это инструкция выбора с обработчиками событий

+ 3. оконная функция обязательно должна обрабатывать сообщение wm_Destroy

+ 4. оконная функция явно вызывается из основной функции приложения

Какие сообщения возникают при нажатии на клавиатуре функциональной клавиши?

Что может быть причиной появления внутреннего прерывания

+ 1. попытка деления на ноль

2. попытка выполнения запрещенной команды

+ 3. попытка обращения по несуществующему адресу

4. щелчок кнопкой мыши

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

+ 1. проверка состояния устройства

+ 2. запись данных в регистры контроллера

+ 3. чтение данных из регистров контроллера

4. обработка прерываний от устройства

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

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

2. сохранение контекста для прерываемого программного кода

+ 3. занесение в счетчик команд начального адреса вызываемого обработчика

+ 4. внесение необходимых изменений в таблицу векторов прерываний

Что входит в программный уровень подсистемы ввода/вывода

2. диспетчер ввода/вывода

+ 3. системные вызовы

Что определяет понятие “порт ввода/вывода”

+ 1. порядковый номер или адрес регистра контроллера

2. машинную команду ввода/вывода

3. устройство ввода/вывода

4. контроллер устройства ввода/вывода

Какие существуют типы прерываний

+ 1. внешние или аппаратные прерывания

+ 2. внутренние прерывания или исключения

+ 3. программные псевдопрерывания

4. системные прерывания

Какие утверждения относительно понятия прерывания являются правильными

+ 1. прерывания — это механизм реагирования вычислительной системы на происходящие в ней события

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

+ 3. прерывания возникают в непредсказуемые моменты времени

4. прерывания — это основной механизм планирования потоков

Какую информацию могут содержать регистры контроллеров устройства

+ 1. текущее состояние устройства

+ 2. текущую выполняемую устройством команду

3. данные, передаваемые от устройства системе

4. данные, передаваемые системой устройству

Как выстраиваются аппаратные прерывания в зависимости от их приоритета

1. сбой аппаратуры > таймер > дисковые устройства > сетевые устройства > клавиатура и мышь

2. сбой аппаратуры > таймер > дисковые устройства > клавиатура и мышь > сетевые устройства

+ 3. таймер > сбой аппаратуры > дисковые устройства > сетевые устройства > клавиатура и мышь

4. сбой аппаратуры > дисковые устройства > таймер > сетевые устройства > клавиатура и мышь

Что может быть причиной появления внешнего прерывания

+ 1. нажатие клавиши на клавиатуре

+ 2. завершение дисковой операции

3. обращение выполняемой процессором команды по несуществующему адресу

4. попытка выполнения запрещенной команды

7.2 Лекция — Устройства и программное обеспечение ввода-вывода

Устройства делят на две категории (некоторые не попадают ни в одну):

  • блочные устройства — информация считывается и записывается по блокам, блоки имеют свой адрес (диски)
  • символьные устройства — информация считывается и записывается посимвольно (принтер, сетевые карты, мыши)

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

Устройства ввода-вывода обычно состоят из двух частей:

  • механическая (не надо понимать дословно) — диск, принтер, монитор
  • электронная — контроллер или адаптер

Если интерфейс между контроллером и устройством стандартизован (ANSI, IEEE или ISO), то независимые производители могут выпускать совместимые как контроллеры, так и устройства. Например: диски IDE или SCSI.

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

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

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

У многих устройств есть буфер данных (например: видеопамять).

Реализации доступа к управляющим регистрам и буферам:

  • номер порта ввода-вывода — назначается каждому управляющему регистру 8- или 16-рзрядное целое число. Адресные пространства ОЗУ и устройства ввода-вывода в этой схеме не пересекаются.
    Недостатки
    — для чтения и записи применяются специальные команды, например: IN и OUT
    — необходим специальный механизм защиты от процессов
    — необходимо сначала считать регистр устройства в регистр процессора
  • отображаемый на адресное пространство памяти ввод-вывод — регистры отображаются на адресное пространство памяти.
    Недостатки
    — при кэшировании памяти, могут кэшироваться и регистры устройств
    — все устройства должны проверять все обращения к памяти, чтобы определить, на какие им реагировать. На одной общей шине это реализуется легко, но на нескольких будут проблемы.
  • смешанная реализация — используется в х86 и Pentium,
    от 0 до 64К отводится портам,
    от 640 до 1М зарезервировано под буферы данных.

Способы реализации доступа к управляющим регистрам и буферам

9.1.4 Прямой доступ к памяти (DMA — Direct Memory Access)

Прямой доступ к памяти реализуется с помощью DMA — контроллера.

Контроллер содержит несколько регистров:

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

Без контроллера происходит следующее:

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

Работа DMA — контроллера

С контроллером происходит следующее:

  1. Процессор программирует контроллер (какие данные и куда переместить)
  2. Процессор дает команду дисковому контроллеру прочитать данные в буфер
  3. Считываются данные в буфер, контроллер диска проверяет контрольную сумму считанных данных, (процессор, до прерывания, переключается на другие задания).
  4. Контроллер DMA посылает запрос на чтение дисковому контроллеру
  5. Контроллер диска поставляет данные на шину, адрес памяти уже находится на шине, происходит запись данных в память
  6. Когда запись закончена, контроллер диска посылает подтверждение DMA контроллеру
  7. DMA контроллер увеличивает используемый адрес и уменьшает значение счетчика байтов
  8. Все повторяется с пункта 4, пока значение счетчика не станет равной нулю.
  9. Контроллер DMA инициирует прерывание

Операционной системе не нужно копировать данные в память, они уже там.

9.1.5 Прерывания

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

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

Контроллер прерываний — обслуживает поступающие прерывания от устройств.

  1. Если необработанных прерываний нет, прерывание выполняется немедленно.
  2. Если необработанных прерываний есть, контроллер игнорирует прерывание. Но устройство продолжает удерживать сигнал прерывания на шине до тех пор, пока оно не будет обработано.
  • Устройство выставляет сигнал прерывания
  • Контроллер прерываний инициирует прерывание, указывая номер устройства
  • Процессор начинает выполнять обработку прерывания, вызывая процедуру
  • Эта процедура подтверждает получение прерывания контроллеру прерываний

9.2 Принципы программного обеспечения ввода-вывода

9.2.1 Задачи программного обеспечения ввода-вывода

Основные задачи, которые должно решать программное обеспечение ввода-вывода:

  • Независимость от устройств — например, программа, читающая данные из файла не должна задумываться с чего она читает (CD, HDD и др.). Все проблемы должна решать ОС.
  • Единообразное именование — имя файла или устройства не должны отличаться. (В системах UNIX выполняется дословно).
  • Обработка ошибок — ошибки могут быть отловлены на уровне контроллера, драйвера и т.д.
  • Перенос данных — синхронный и асинхронный (в последнем случае процессор запускает перенос данных, и переключается на другие задачи до прерывания).
  • Буферизация
  • Проблема выделенных (принтер) и невыделенных (диск) устройств — принтер должен предоставляться только одному пользователю, а диск многим. ОС должна решать все возникающие проблемы.

Три основных способа осуществления операций ввода-вывода:

  • Программный ввод-вывод
  • Управляемый прерываниями ввод-вывод
  • Ввод-вывод с использованием DMA

Рассмотрим их подробнее.

9.2.2 Программный ввод-вывод

В этом случае всю работу выполняет центральный процессор.

Рассмотрим процесс печати строки ABCDEFGH этим способом.

Этапы печати строки ABCDEFGH

  1. Строка для печати собирается в пространстве пользователя.
  2. Обращаясь к системному вызову, процесс получает принтер.
  3. Обращаясь к системному вызову, процесс просит распечатать строку на принтере.
  4. Операционная система копирует строку в массив, расположенный в режиме ядра.
  5. ОС копирует первый символ в регистр данных принтера, который отображен на памяти.
  6. Символ печатается на бумаге.
  7. Указатель устанавливается на следующий символ.
  8. Процессор ждет, когда бит готовности принтера выставится в готовность.
  9. Все повторяется.

При использовании буфера принтера, сначала вся строка копируется в буфер, после этого начинается печать.

9.2.3 Управляемый прерываниями ввод-вывод

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

Рассмотрим тот же пример, но с небольшим усовершенствованием.

  1. До пункта 8 тоже самое.
  2. Процессор не ждет готовности принтера, а вызывает планировщик и переключается на другую задачу. Печатающий процесс блокируется.
  3. Когда принтер будет готов, он посылает прерывание процессору.
  4. Процессор переключается на печатающий процесс.

9.2.4 Ввод-вывод с использованием DMA

Недостаток предыдущего метода в том, что прерывание происходит при печати каждого символа.

Алгоритм не отличается, но всю работу на себя берет контроллер DMA.

9.3 Программные уровни и функции ввода-вывода

Четыре уровня ввода-вывода:

9.3.1 Обработчики прерываний

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

  1. Драйвер начинает операцию ввод-вывод.
  2. Драйвер блокирует сам себя,
    — выполнив на семафоре процедуру down
    — выполнив на переменной состояния процедуру wait
    — выполнив на сообщении процедуру receive
  3. Происходит прерывание
  4. Обработчик прерываний начинает работу
  5. Обработчик прерываний может разблокировать драйвер (например, выполнив на семафоре процедуру up)

9.3.2 Драйвера устройств

Драйвер устройства — необходим для каждого устройства. Для разных ОС нужны разные драйверы.

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

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

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

Драйвера должны взаимодействовать с ОС через стандартные интерфейсы.

Стандартные интерфейсы, которые должны поддерживать драйвера:

  • Для блочных устройств
  • Для символьных устройств

Раньше для установки ядра приходилось перекомпилировать ядра системы.

Сейчас в основном ОС загружают драйверы. Некоторые драйверы могут быть загружены в горячем режиме.

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

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

9.3.3 Независимое от устройств программное обеспечение ввода-вывода

Функции независимого от устройств программного обеспечения ввода-вывода:

  • Единообразный интерфейс для драйверов устройств,
  • Буферизация
  • Сообщения об ошибках
  • Захват и освобождение выделенных устройств (блокирование)
  • Размер блока, не зависящий от устройств

Единообразный интерфейс для драйверов устройств

Кроме интерфейса, в него также входят проблемы,

  • именование устройств
  • защита устройств

Буферизация

Рассмотрим несколько примеров буферизации.

a) Не буферизованный ввод — после ввода каждого символа происходит прерывание

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

c) Буферизация в ядре с копированием в пространство пользователя — страница загружается только когда буфер ядра полный, данные из буфера ядра в буфер пользователя копируется за одну операцию. Проблема может возникнуть, когда буфер ядра полный, а страница буфера пользователя еще не загружена.

d) Двойная буферизация в ядре — если один буфер заполнен, и пока он выгружается, символы пишутся во второй буфер.

Сообщения об ошибках

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

Захват и освобождение выделенных устройств

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

Независимый от устройств размер блока

Размер блока должен быть одинаковый для верхних уровней, и не зависеть от устройств (размеров секторов на диске).

9.3.4 Программное обеспечение ввода-вывода пространства пользователя

Функции этого обеспечения:

  • Обращение к системным вызовам ввода-вывода (через библиотечные процедуры).
  • Форматный ввод-вывод (меняют формат, например, в ASCII)
  • Спулинг (для выделенных устройств) — создается процесс (например, демон печати) и каталог спулера.

9.3.5 Обобщение уровней и функций ввода-вывода

Уровни и основные функции системы ввода-вывода

Сколько портов процессора нужно выделить контроллеру прерываний i8259?

uchet-jkh.ru

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

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

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

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

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

Роль контроллера прерываний i8259

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

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

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

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

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

Количество портов

Контроллер прерываний i8259 — это устройство, используемое в компьютерах для управления прерываниями. Он представляет собой чип, который отвечает за управление прерываниями от различных устройств и передачу их процессору. Для своей работы контроллер прерываний i8259 требует определенное количество портов.

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

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

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

Требуемые порты для работы

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

Основные порты, которые требуются для работы контроллера прерываний i8259, включают:

  • Порт команд (Command port) — используется для отправки команд контроллеру и настройки его работы;
  • Порт данных (Data port) — используется для передачи данных между контроллером и другими устройствами;
  • Порт служебного регистра (Status register port) — позволяет считывать статус контроллера и информацию о возникших прерываниях;
  • Порты маски прерываний (Interrupt Mask ports) — используются для управления масками прерываний и заданием приоритетов для различных устройств.

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

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

Дополнительные порты

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

  1. Адресный порт: контроллер прерываний i8259 использует адресный порт для выбора нужного регистра для операций чтения или записи.
  2. Командный порт: этот порт используется для отправки команд контроллеру прерываний i8259.
  3. Порт данных: контроллер прерываний i8259 использует порт данных для чтения или записи данных, связанных с прерываниями.
  4. Входной порт слейва: этот порт используется для связи контроллера прерываний мастер с контроллером прерываний слейв.

Адресный порт и командный порт контроллера прерываний i8259 являются 8-битными портами. Порт данных и входной порт слейва являются 16-битными портами.

Регистры контроллера прерываний i8259, которыми управляются эти дополнительные порты, описываются следующим образом:

Регистр Назначение
IR Регистр чтения состояния прерывания
IMR Регистр маскирования прерываний
IRR Регистр запроса прерывания
ISR Регистр обслуживания прерывания
ICW Регистр инициализации контроллера

Использование дополнительных портов позволяет контроллеру прерываний i8259 эффективно управлять прерываниями и синхронизировать работу с другими устройствами в компьютере.

Настройка контроллера прерываний

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

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

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

Как правило, на плате контроллер прерываний i8259 уже установлен и настроен по умолчанию на две секции, что обеспечивает обработку 15 прерываний (0-15). Если требуется подключить больше устройств, то возможно использование дополнительного контроллера прерываний.

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

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

Программная настройка

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

По умолчанию контроллер i8259 требует выделения двух портов процессора. Первый порт (адрес 0x20) предназначен для команд и данных, а второй порт (адрес 0x21) — для приема прерываний и управления масками прерываний.

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

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

#define MASTER_ICW1 0x20 //Первый порт для команд и данных для мастер контроллера

#define MASTER_ICW2 0x21 //Второй порт для приема прерываний и управления масками прерываний для мастер контроллера

int main()

// Установка порта процессора для команд и данных для мастер контроллера

outp(MASTER_ICW1, 0x11);

// Установка порта процессора для приема прерываний и управления масками прерываний для мастер контроллера

outp(MASTER_ICW2, 0x08);

// Остальная часть кода

return 0;

В данном примере осуществляется установка значений 0x11 и 0x08 в регистры MASTER_ICW1 и MASTER_ICW2 соответственно.

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

Аппаратная настройка

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

Контроллер прерываний i8259 использует два разных порта ввода/вывода для конфигурации:

  1. Порт команд (Command Port) — порт, используемый для записи команд и данных в контроллер прерываний.
  2. Порт данных (Data Port) — порт, используемый для чтения и записи данных конфигурации.

Процессор должен выделить два порта для связи с контроллером прерываний i8259. Каждый порт должен быть однобайтным и иметь уникальный адрес ввода/вывода.

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

Порт Назначение
0x20 Командный порт
0x21 Порт данных

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

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

Вопрос-ответ

Как именно работает контроллер прерываний i8259?

Контроллер прерываний i8259 — это устройство, которое позволяет процессору управлять и обрабатывать прерывания от различных устройств в компьютере. Он имеет два уровня приоритета, разрешение прерываний от внешних устройств, а также возможность маскировать определенные прерывания. Для своей работы контроллер прерываний i8259 требует 2 порта процессора.

Какие порты процессора нужно выделить контроллеру прерываний i8259?

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

Сколько портов процессора необходимо выделить контроллеру прерываний i8259?

Для правильной работы контроллера прерываний i8259 требуется выделить два порта процессора. Один порт используется для передачи команд, а второй — для обмена данными. Таким образом, контроллер прерываний i8259 нуждается в двух портах процессора.

Безопасность ПЛК: 10) Разделите регистры по их назначению

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

Описание

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

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

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

  • для чтения
  • для записи (с HMI / контроллеров / другие внешние устройства)
  • для проверенной записи
  • вычислительные функции (промежуточных значений)

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

Дополнительная информация:

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

Пример

Что может случиться, если не соблюдать данную рекомендацию:
(Источник: G. P. H. Sandaruwan, P. S. Ranaweera, Vladimir A. Oleshchuk, PLC Security and Critical Infrastructure Protection):

  • Siemens обычно использует оперативную память в области флагов (от 200.0 до 255.7). Изменения в этой области с большой вероятностью приведут к серьезной неисправности ПЛК в зависимости от важности этого бита или байта.
  • Предположим, что злоумышленник может получить доступ к одной из машин в сети ПЛК и заразить эту машину червем, способным записывать произвольные значения в регистровую память. Поскольку значения регистровой памяти изменяются произвольно, он может изменять значение, например, давления.
  • Выполнение логики установило новое значение и в зависимости от изменения может произойти нарушение допустимого уровня безопасности системы и, возможно, отказ.

Примеры использования рекомендаций:

  • В сценарии, где есть зона безопасности (но DCS может читать), межсетевой экран может регистрировать любые попытки «записи» с правилом, что эти регистры READ ONLY в зоне безопасности.
  • В другом сценарии могут быть некоторые регистры с возможностью записи, а другие доступны только для чтения, но наличие всех регистров READ ONLY в одном массиве упрощает их настройку в контроллере (или брандмауэре).
Безопасность

Упрощается защита разных данных контроллера (чтение / запись / проверка).

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

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

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

Надёжность

Ускоряется чтение и запись, поскольку сокращается количество транзакций.

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

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

Поддержка

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

От себя

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

Что хочу

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

Жду ваше мнение и опыт относительно данного пункта в комментариях. Всего будет 20 пунктов из «Top 20 Secure PLC Coding Practices», надеюсь на каждый получить как можно больше комментариев, чтобы составить свой список рекомендаций по программированию для ПЛК.

Безопасность ПЛК: 11,12) Скоро

  • плк
  • plc
  • plc контроллер
  • scada
  • промышленная автоматизация
  • безопасность
  • кибербезопасность
  • хакеры
  • информационная безопасность
  • асутп

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *