leonidpr писал(а):
Я имел в виду, что да, система ЖРВ должна при возникновении события его обработать за четко определенное время. Но, когда этого события нет, проц свободен и может заниматься другой, менее приоритетной работой (тот же GUI обслуживать), но как только событие снова возникнет, она должна "все бросить" и ринуться на его обработку (либо проснется процесс с самым большим приоритетом, либо вообще аппаратно проц перейдет к обработке прерывания, опять же с самым большим приоритетом).
Да, так можно. Более того, так часто и делают.
leonidpr писал(а):
Yoda, вы сказали, что приходилось делать систему, которая реагировала с точностью до такта. Наверное там никакой речи об ОС идти не может (по крайней мере в части критичного кода)?
А что такое "ОС"? Если мы говорим о СЖРВ, то тут неоднократно отметили, что это -
программно-аппаратный комплекс, весь целиком. Нельзя отделить ОС от железа и от пользовательских процессов. Конечно, системы в виде дистрибутива на дискете не было, всё записано во флеш-память, однако была возможность обновления прошивки и вышло два обновления.
leonidpr писал(а):
Чисто на прерываниях, плюс выверенный как вы сказали "до такта" код на ассемблере?
Что значит "чисто на прерываниях"? А на чём работают планировщики настольных ОС, разве не "чисто на прерываниях"?
Если вас интересуют технические детали, то планировщик моей СЖРВ представлял собой конечный автомат, в качестве входных событий которого был ряд прерываний.
Да, система писалась на ассемблере. Код выверялся до такта в необходимых местах - это сам планировщик, обработчики прерываний и один критический процесс. Часть задач также была реализована в виде конечных автоматов. Именно конечные автоматы позволяют получить наилучшую скорость реакции и 100% предсказуемость поведения.
ЗЫ
А, я понял, что вы имели ввиду под "чисто на прерываниях". Вы имели ввиду, что каждое прерывание порождает свою независимую реакцию, так, что можно обойтись только одними обработчиками без реального планирования. Нет, в моей СЖРВ большинство процессов пересекалось по прерываниям. Т.е. по прерываниям надо был решать, что именно делать, а по некоторым прерываниям надо было выполнять несколько задач из очереди, причём, состав задач мог меняться со временем. Так что планировщик неизбежен.