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. generatorglukoff 12.01.2012 21:48

1. везде прерывания.
2. зависит от ОС/языка

2. Minorugeneratorglukoff /1 12.01.2012 21:58 antaeus

Спасибо. А насколько сильно зависит от ОС и языка? Может, есть какая-то более-менее общая классификация, чтобы хотя бы в общих чертах понять принципы?

3. RayslavaMinoru /2 13.01.2012 04:51 TOUGH

Ну языков системного погромирования не так много. В основном — С. На совсем уж убогих эмбедах — асм.
А для общих черт лучше всего почитать сорцы простенькой многозадачной системы, вроде FreeRTOS или BeRTOS

4. MinoruRayslava /3 13.01.2012 06:33 antaeus

Про многозадачность на прерываниях я уже понял ( http://www.jamesmolloy.co.uk/tutorial_ht... ), теперь меня интересует второй вопрос. Кто-нибудь видел простенький многопоточный рантайм? А то сорцы какого-нибудь OCaml, Haskell или Erlang я вряд ли осилю.

Do you really want to delete ?