Поток состояний Linux против Windows

1404
Nickolouse

Linux имеет: готов, заблокирован, работает, завершен.

Windows имеет: Готово, Отложено готово, Ожидание, Работает, Ожидание, Завершено, Инициализировано.

Почему в Windows так много состояний? Какое преимущество дает эта дополнительная сложность?

3
Это вопрос о Windows, а не вопрос о науке. За этим может стоять научный вопрос (почему такие состояния полезны), но для этого необходимо знать, как эти состояния используются. Gilles 8 лет назад 0
краткий ответ ... планирование. Поскольку окна имеют больше состояний, они могут выполнять более тонкое планирование потоков на основе их способности выполнять в любой момент времени. нет никакого смысла давать процессу время ожидания, так же как нет смысла приостанавливать поток в инициализированном состоянии. Это чрезвычайно сложная тема, и было много споров и споров о том, как linux выполняет планирование потоков (см. Противоречие с Con Kolivas), что может дать вам некоторый контекст. TLDR - это стандартный linux, оптимизированный под нагрузку на сервер, а windows - для отзывчивости рабочего стола. Frank Thomas 8 лет назад 0
Спасибо за ваш ответ @FrankThomas. Сегодня я читал на эту тему и нуждался в каких-то рекомендациях относительно того, почему они выбрали так много штатов. Nickolouse 8 лет назад 0

1 ответ на вопрос

2
Xtremity

Running нить нить, которая в настоящее время осуществляет на процессоре. Запуск поток выбран из списка Ready потоков для этого процессора, которые являются потоками, которые хорошо поменять места, чтобы выполнить. Standby нить есть Готовый поток, который в настоящее время выбран заменяемым в к Running состояния следующего на этом процессоре. Однако это может измениться, если поток с более высоким приоритетом станет готовым до внесения изменений.

Отложенное состояние готовности - это глобальное состояние, указывающее, что поток готов к работе на любом процессоре. Это может использоваться, например, для одного ЦП для планирования потока с высоким приоритетом на другом ЦП.

Потоки, которые не готовы к работе, получают состояние, определяемое причиной, по которой они не могут работать:

  • Потоки переводятся в состояние инициализации во время их создания.
  • Потоки могут быть Ожидание на каком - то событии, например, синхронизации или I / O завершения, или могут быть вынуждены ждать, если они получают доступ к памяти, которая выгружаемый на диск, например. Как только событие будет сигнализировано или истечет время ожидания, поток будет иметь право на повторный запуск.
  • Потоки переводятся в состояние перехода, потому что их стек ядра был выгружен. Эти потоки не будут готовы к запуску, пока их стек ядра снова не станет доступен.
  • Выходящие потоки переводятся в состояние « Завершено» до тех пор, пока система не будет очищена.

enter image description here

Следует отметить, что состояния потоков полностью отделены от приоритетов планирования, которые определяют порядок, в котором потоки выбираются для запуска.