Поток состояний Linux против Windows
Linux имеет: готов, заблокирован, работает, завершен.
Windows имеет: Готово, Отложено готово, Ожидание, Работает, Ожидание, Завершено, Инициализировано.
Почему в Windows так много состояний? Какое преимущество дает эта дополнительная сложность?
1 ответ
Работающий поток - это поток, который в данный момент выполняется на процессоре. Запущенный поток выбирается из списка потоков Ready для этого процессора, которые являются потоками, которые можно заменить для выполнения. Резервный поток - это поток Готов, который в данный момент выбран для переключения в состояние " Выполнение" на следующем процессоре. Однако это может измениться, если поток с более высоким приоритетом станет готовым до внесения изменений.
Отложенная готовность - это глобальное состояние, которое указывает, что поток готов к работе на любом процессоре. Это может использоваться, например, для одного ЦП для планирования потока с высоким приоритетом на другом ЦП.
Потоки, которые не готовы к работе, получают состояние, определяемое причиной, по которой они не могут работать:
- Потоки переводятся в состояние инициализации во время их создания.
- Потоки могут ожидать какого-либо события, такого как синхронизация или завершение ввода-вывода, или могут быть вынуждены ждать, например, если они обращаются к памяти, которая выгружается на диск. Как только событие будет сигнализировано или истечет время ожидания, поток сможет снова запускаться.
- Потоки переводятся в состояние перехода, потому что их стек ядра был выгружен. Эти потоки не будут готовы к запуску, пока их стек ядра снова не станет доступен.
- Выходящие потоки переводятся в состояние " Завершено" до тех пор, пока система не будет очищена.
Следует отметить, что состояния потоков полностью отделены от приоритетов планирования, которые определяют порядок, в котором потоки выбираются для запуска.