Что понимается под прерываниями в контексте операционных систем?

9

Я решил прочитать « Концепции операционных систем » Silberschatz, Galvin Gagne (8-е издание) летом. Я попал в тему, которая меня смущает - прерывания и их роль в отношении операционных систем.

В тексте говорится, что операционная система начнет первый процесс, такой как «init», а затем дождется «события», и это событие обычно сигнализируется прерыванием. В тексте также говорится, что прерывание может исходить либо от аппаратного, либо от программного обеспечения. Как это работает, поподробнее? Управляется ли операционная система прерываниями?

Я просто ищу понимания в целом.

Оккам
источник

Ответы:

8

Когда ОС запускает такой процесс, как «init», она посылает сигналы другим подсистемам / менеджерам устройств и т. Д., Таким как память, устройства ввода-вывода и т. Д. Прерывание - это просто способ сообщить процессору или ОС, к которой она готова, или она имеет новый ввод и т. Д. Поэтому, когда-нибудь во время инициализации ОС ожидает готовности подсистем, и прерывание от этих подсистем будет указывать именно это. Вот к чему относится «событие».

Что касается аппаратных или программных прерываний, аппаратные прерывания - это те, которые происходят от оборудования. Например. Устройства ввода / вывода, такие как клавиатура и т. Д. Аппаратное прерывание заставляет процессор сохранить свое состояние и начать выполнение обработчика прерываний. С другой стороны, программные прерывания являются инструкциями в наборе команд, что заставляет процессор изменять свой уровень привилегий от пользователя-супервизора, также известного как переключение контекста. Эти детали будут рассмотрены позже в учебнике.

Хаос
источник
4

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

Последовательность событий обычно такая:

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

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


источник
4

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

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

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

Как уже упоминалось, прерывания используются для получения уведомлений от аппаратных устройств (единственная альтернатива - их периодическая проверка), отслеживание времени и получение гарантированной возможности восстановить контроль над процессом приложения (для переключения того, какое приложение запущено) восстановление после процессов приложений, выполняющих недопустимые инструкции, а также позволяющих приложениям отправлять запросы ОС. Последние известны как системные вызовы. Чтобы приложения не мешали компьютеру и друг другу, они обычно работают с машиной в «пользовательском режиме», что не позволяет приложению делать что-либо, кроме чтения и записи (виртуальной) памяти, уже выделенной для него. Это значит что делать что угодноиначе (чтение / запись файлов, запрос дополнительной памяти, доступ к устройствам и т. д.) приложение должно выполнить системный вызов; он делает это в основном, оставляя некоторую информацию о том, что он хочет сделать, где-то, что он знает, что ОС будет искать его, а затем выполняет инструкцию CPU, которая вызывает прерывание правильного вида. Затем ОС может увидеть, что приложение пытается сделать, и определить, должно ли оно выполнить этот запрос. Эта гарантия того, что ОС будет вовлечена в попытки любого процесса сделать что-либо, что повлияет на что-либо вне процесса, является единственным способом применения политик доступа.

По сути, да, ОС управляется прерываниями. «Абстрактная» ОС загружает компьютер в состояние «нормальной работы» и в какой-то момент передает управление «нормальному» процессу. При нормальных обстоятельствах ОС будет восстанавливать управление только после обработки прерываний; но поскольку без прерывания практически ничего интересного не происходит, ОС в основном все время контролирует.

Бен
источник
3

Операционная система управляется прерываниями. Это значит, что:

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

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

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