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