примере (os_wait). А множественные события -- select в том же linux.
Планировщик не нужно вызывать из прерывания, нужно насильно вызвать прерывание (у меня в примере было). Хотя на самом деле можно сохранить и восстановить контекст не связанный с прерыванием, и опять же у меня в примере так и получается -- но это уже дефекты линукса, в котором контекст передаваемый в обработчик сигнала нельзя передать в setcontext()... С прерываниями просто проще: они контекст сохраняют, они же и восстанавливают. Если делать сохранение/восстановление контекста вне прерываний, то возникает проблема синхронизации с обработчиком прерываний. Нужно запретить прерывания на время переключения: от начала сохранения контекста, до конца восстановления. Думать над тем, как работать без прерываний, имеет смысл только в системах, где флажок прерывания не взвести.
fork() в МК ты не сделаешь -- там вообще вся память процесса "копируется" же, с помощью механизма copy on write (до того -- разделяется между обоими процессами). Для того страничная адресация нужна и механизм этот -- тяжёлый для мелких задачек (настолько, что изобрели vfork).
-
- Вопросы, идеи по следующим шагам. Dingo(3115 знак., 02.12.2020 18:37, картинка)