Это прерывание по таймеру.
Прерывания - это одна из тех вещей, которые выходят за рамки Тьюринга.Машина / язык, полный Тьюринга, не нуждается в реализации прерываний.Но без прерываний вам будет трудно реализовать многозадачную ОС с разделением по времени или с вытеснением.
Без прерываний
В системе все еще возможно реализовать многозадачную ОС без прерываний - вы используетеКооперативная многозадачность.Старая MacOS (до OSX) сделала именно это.Вы просто говорите разработчикам приложений, что время от времени они должны передавать выполнение ОС, вызывая что-то вроде yield()
.Эта функция «yield» фактически является самой ОС.Совместная многозадачность, конечно, не идеальна - вы можете вообразить, что сбой программы приведет к тому, что ОС никогда не будет работать, что приведет к отключению всей машины.Преимущество совместной многозадачности состоит в том, что вы можете делать это на очень простом процессоре без поддержки прерываний.Это также обычно требует намного меньше оперативной памяти и ресурсов процессора.И, как программист, вы имеете больший контроль над процессором - например, если вам нужно реально использовать 100% процессора, вы можете запретить ОС использовать любое время процессора.
Прерывания
Прерывание - это просто функция ЦПУ, где вы можете настроить ЦП на вызов функции (называемой обработчиком прерывания), когда что-то происходит.Для программистов ОС наиболее полезным является прерывание по таймеру - где вы можете настроить таймер для запуска прерывания.ОС запускается при срабатывании прерывания, и в конце выполнения ОС просто планирует другое прерывание по таймеру - это многозадачность с разделением по времени.
Некоторые ОС, такие как Linux или Windows реального времени, позволяют вамнастроить этот таймерLinux называет это jiffy
, некоторые ОС называют его tick
.
Если вы выполнили какое-либо программирование на javascript, вам это покажется знакомым - это почти похоже на то, как setTimeout()
ведет себя программисту.
I / O
Другим важным типом прерывания является прерывание ввода-вывода.Ваша клавиатура фактически работает с прерыванием ввода / вывода.Обычный ПК вообще не сканирует клавиатуру.Вместо этого контроллер ввода-вывода (в наши дни это обычно USB-контроллер) запрашивает клавиатуру, и при нажатии клавиши посылает сигнал прерывания в ЦПУ.Это вызовет ОС, и ОС проверит, к какому процессу принадлежит ключ, и переключится на процесс, чтобы позволить ему получить ввод - это превентивная многозадачность.Очевидно, что в случае вытесняющей многозадачности в фоновом режиме используется ограничитель времени в случае длительных периодов отсутствия операций ввода-вывода.