У меня есть проект о «имитации планировщика потоков с помощью pthread».pthread scheduling
Я нашел несколько проблем:
1. Is жизненный цикл нити такой же, как линукс нить lifecyle?
2. На каком этапе кода выполняется планирование (в pthreads), нужен пример.
3. Могу ли я реализовать свой собственный алгоритм планирования, или я должен использовать явное планирование pthreads like (set_sched_param, ...)?
4. Есть ли способ отслеживать планирование процессов (графически) с помощью C?
A2: планирование происходит во время процедуры обслуживания прерывания таймера. Помимо всего прочего, система оценивает, сколько времени выполнения текущего потока было получено, чтобы определить, превысило ли оно его допустимое время выполнения, и, если это так, другой поток занимает свое место (_if_ другой поток готов к запуску). – mah
... так что в других словах планирование происходит на уровне * kernel *, и все, что вы делаете, находится в пользовательском пространстве. – Brad
Планирование @mah 'происходит во время процедуры обслуживания прерывания таймера'. Как насчет всех других десятков аппаратных и программных источников прерываний, которые могут запросить запуск планировщика? –