Ваш материал для чтения хорош. ТАК никаких проблем нет. Также ознакомьтесь с загружаемыми CS лекциями по проектированию операционной системы от Stanford.
- Алгоритм планирования, возможно, должен быть более сложным. Это зависит от типов запущенных приложений и их жадности. Они уступают себе или вынуждены. Такого рода вещи. Это больше вопрос того, чего хотят или ожидают ваши процессы. ОСРВ будет иметь более сложное планирование, чем настольный компьютер.
- Потоки должны иметь сходство с одним ядром, потому что 2 потока в одном процессе могут выполняться параллельно ... но не в одно и то же время в реальном времени на одном ядре. Размещение их на разных ядрах позволяет им действительно работать параллельно. Также кеширование может быть оптимизировано для соответствия ядру. Это действительно смесь вашей реализации потока и планировщика. При планировании может потребоваться, чтобы потоки запускались одновременно на ядрах, а не в режиме ad-hoc, чтобы уменьшить количество времени, которое потоки ожидают друг от друга и тому подобное. Если ваша библиотека потоков находится в пространстве пользователя, возможно, она назначает ядро или позволяет планировщику принимать решения в зависимости от емкости или недавних смертей.
- Масштабируемость часто является пределом ядра (который может быть произвольным). В Linux, если я помню, ограничения обусловлены статическим размером массивов, которые содержат информацию о процессоре в планировщике. Следовательно, они имеют фиксированный размер. Это можно изменить, перекомпилировав ядро. Большинство хороших алгоритмов планирования будут поддерживать очень большое количество ядер. По мере того, как число ядер или процессоров возрастает, вам нужно быть осторожным, чтобы не слишком сильно фрагментировать выполнение процессов. Если в программе 2 потока, попробуйте запланировать их в непосредственной близости, поскольку между ними может существовать причинная связь (через общие данные).
Вам также необходимо решить, как реализованы ваши потоки и как процесс представлен (тяжелый или легкий) в ядре. Управляется ли ядро потоков? пользовательское пространство управляется? Все это влияет на дизайн планировщика. Посмотрите, как потоки POSIX реализованы в различных операционных системах. Вам есть о чем подумать:)
короче на самом деле нет однозначных ответов о том, где логика находится или должна находиться. Все зависит от дизайна, ожиданий приложения, временных ограничений (для программ) и т. Д.
Надеюсь, это поможет, но я здесь не эксперт.