返回

сигналы и прерывания

IOS




Сигналы и прерывания

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

Сигналами называются программные прерывания. Они посылаются программным обеспечением программным обеспечением. Например, при нажатии клавиши прерывания Ctrl-C генерируется сигнал SIGINT, перехватываемый текущей программой.

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

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

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

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

  1. Генерация прерывания.

    Сигналы могут генерироваться явным образом при помощи системных вызовов.
    Аппаратные прерывания генерируются аппаратными средствами при наступлении определенного события.

  2. Прием и первоначальное распознавания прерываний и сигналов.

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

  3. Перехват управления.

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

  4. Идентифицирование прерывания или синала.

    Первой функцией, которая выполняется при обработки прерывания или синала является выявление их типа.

  5. Поиск и загрузка в память подпрограммы обработки прерываний.

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

  6. Переход на подпрограму обработки прерываний или синала.

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

  7. Исполниение подпрограммы обработки прерываний или синала.

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

    • Определение ресурсов, вызванных прерывания или синала.
    • Запуск программного кода для обработки данных ресурсов.
    • Геренация сообщения в системный журнал.
    • Завершении обработки прерывания или синала.
  8. Возврат управления.

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

В ОС UNIX/Linux системный механизм обработки прерываний и сигналов реализован при помощи специальных структур данных.

  • Для обработки прерываний применяется таблица идентифицирования векторов прерываний (Interrupt Vector Table - IVT).
  • Для обработки сигналов применяется таблица идентифицирования сигналов (Kernel signal table - KST).

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

Заключение

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