Minoru
12.01.2012 20:53 antaeus
1. Как реализуется вытесняющая многозадачность на платформах, отличных от x86 (где, AFAIK, единственный способ — вызов планировщика по прерыванию)? Везде прерывания, или есть какие-нибудь другие способы? Про context switch в википедии читал, там написано, что прерывания — основной способ, а про другие ничего :(
2. Как реализуется вытесняющая многозадачность в нитях (в той же википедии написано, что в тредах OCaml вытесняющая многозадачность). PIC и interruptions заменяются на таймеры и сигналы?
В качестве ответа сойдёт даже кучка ключевых слов. Про context switch, preemption/preemptive multitasking, computer multitasking в английской википедии почитал.
Recommended by:
@magog,
@0xd34df00d
1. везде прерывания.
2. зависит от ОС/языка
Спасибо. А насколько сильно зависит от ОС и языка? Может, есть какая-то более-менее общая классификация, чтобы хотя бы в общих чертах понять принципы?
Ну языков системного погромирования не так много. В основном — С. На совсем уж убогих эмбедах — асм.
А для общих черт лучше всего почитать сорцы простенькой многозадачной системы, вроде FreeRTOS или BeRTOS
Про многозадачность на прерываниях я уже понял ( http://www.jamesmolloy.co.uk/tutorial_ht... ), теперь меня интересует второй вопрос. Кто-нибудь видел простенький многопоточный рантайм? А то сорцы какого-нибудь OCaml, Haskell или Erlang я вряд ли осилю.