Что планирует ОС — потоки или процессы?

Задавал вопрос про то, как работает параллелизм в ОС:
Как на самом деле работает параллелизм?

Из всего изученного стало понятно, что процессы - это некие "контейнеры", содержащие id, статус, instruction pointer, значение регистров, открытые файлы и другие данные контекста. А потоки (полное название - потоки исполнения), из потоков ОС как раз-таки считывает инструкции из памяти и отправляет их на ядра. Я намеренно очень сильно обобщил, чтобы ввести некоторое общее понимание.

Вопрос: если процесс - это просто контейнер для потоков, а ОС реально шедулит потоки, грузит ядра инструкциями из этих потоков и распределяет кванты времени именно для kernelspace-потоков, то какую роль в планировании играют процессы? Для чего они нужны? Как планировщик ОС работает с процессами?

Моя единственная догадка в том, что планировщик как бы "заглядывает" в каждый процесс и уже там работает с потоками.

P.S. Можно разобрать на примере Windows
  • Вопрос задан
  • 292 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Из всего изученного стало понятно, что процессы - это некие "контейнеры", содержащие id, статус, instruction pointer, значение регистров, открытые файлы и другие данные контекста.

Вот уже по этому предложению видно, что понятно не стало. instruction pointer и значения регистров -- свои у каждого потока.

какую роль в планировании играют процессы?

Никакой.

Для чего они нужны?

Для учёта ресурсов и создания изолированных адресных пространств.

Как планировщик ОС работает с процессами?

Никак.

Моя единственная догадка в том, что планировщик как бы "заглядывает" в каждый процесс и уже там работает с потоками.

Не нужно ему никуда заглядывать. У него есть списки потоков находящихся в разных состояниях, а планирование заключается в перемещении потоков по этим спискам.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы