Задумался... Вот если есть бесконечный цикл, типа Код (Text): for (;;) { func1(); func2(); func3(); } в котором последовательно вызываются проц-ры обычным call near или даже call far, то как скажется на времени цикла реализация каждой процедурки в виде нити, а в цикле вызов процедур заменить переключение задач командой call fword ptr [_TaskN_]. Как это скажется на времени цикла? качественно... относительно.. допустим, что нити ничего не делают, т.е. Код (Text): L: iretd jmp L
Честно признаюсь Просто лень мерять такты. Такие функции проца в своем микроядре пока еще не задействовал. Понятно, что щас герцы не актуальны. Но неужели никто не задумывался?
Barbos Время на переключение котнекста тратиться гораздо больше. так как требуется загрузить и сохронить контекст а это не один такт. Но если мы имеем многоядерный процессор, то неплохобы чтобы все ядра работали над главной задачей. Причем именно работали а не простаивали в нитях с бесконечными циклами в которых ждут события.
ну да, переключение задач более трудоемкий процесс, хотя бы считая по кол-ву инфы (сохр/загр). Ну я тогда буду мерять такты - отпишусь.
Barbos Переключение процессов. Может быть как програмнымм так и аппоратным. У апоратного фигурирует цифра 400тактов. У програмного меньше так как при аппоратном переключении идет дополнительные проверки.
Добавлю, что если есть задумка сделать свою ось 64-разрядной, то переключать надо только ручками: там аппаратная многозадачность уже не работает.