Сиджу і переживаю чергову фрустрацію: починаючи із суботи, я вирішив, що настав час зламати свій страх перед багатопотоковістю і перемиканням контекстів і що нарешті я їх зроблю. Пізно ввечері в суботу я почав курити мануал від Інтела і прояснення таки сталось: виявилось, що для перемикання тредів в ядрі особливо чорної магії не потрібно, достатньо
(
Read more... )
От моє недоядро на Intel Core Duo:
Reply
Reply
На картинці два потоки, запущені поверх самописного ядра, без жодної stdlib, із найпримітивнішим на світі round-robin планувальником на два потоки.
Якщо це підколка лінуксячої stdlib, під якою так працює QEMU, то планувальник який є, такий є, нічого не твікалось (а я міг би підняти пріоритет та повісити віртуалку на виділене ядро процесора). Крім того, з часів лінуксового 2.4 уже дуже багато води утекло і багато планувальників помінялось, з’явились групи процесів, регулювання affinity та інші приємні штуки.
01010101 може бути, тільки якщо після кожного виведення стоїть yield.
Reply
Я просто наштовхую тебе на думки, як повинно бути спроектована система, шоб в юзерленді без їлдів дістати ідеальну послідовність. Сучасні системи далекі від ідельного планування. В лінуксі постійного його переписують, не можуть відшукати ідеальні пропорції і справа не тільки в скудулері а в багатопоточних можливостях всіх підсистем. Найбільш збалансованою системою виявилася BeOS з усіх, що я бачив. Тобі варто більш детально на неї подивитися, там ти знайдеш багато натхнення у своїй творчості.
Reply
Leave a comment