Нулевой процесс? - PullRequest
       3

Нулевой процесс?

4 голосов
/ 02 октября 2011

Должен ли процесс иметь хотя бы один поток?Возможно ли, чтобы процесс был лишен каких-либо потоков, или это не имеет смысла?

Ответы [ 5 ]

5 голосов
/ 02 октября 2011

У процесса обычно есть хотя бы один поток. Википедия имеет определение:

поток выполнения - это наименьшая единица обработки, которая может быть запланирована операционной системой. Реализация потоков и процессов отличается от одной операционной системы к другой, но в большинстве случаев поток содержится внутри процесса.

MSDN поддерживает это:

Процессор выполняет потоки, а не процессы, поэтому каждое приложение имеет по крайней мере один процесс, а процесс всегда имеет по крайней мере один поток выполнения, известный как основной поток.

Хотя он продолжает говорить:

У процесса может быть ноль или более однопоточных квартир и ноль или одна многопоточная квартира.

Что подразумевает, что если бы как количество однопоточных, так и многопоточных квартир могло бы быть равно нулю. Тем не менее, процесс не будет делать много:)

2 голосов
/ 02 октября 2011

В Unix-подобных операционных системах возможно иметь процесс-зомби , где запись все еще существует в таблице процессов, даже если нет (больше) никаких потоков.

2 голосов
/ 02 октября 2011

Вы можете не использовать явную библиотеку потоков или операционную систему, которая не имеет понятия о потоках (и поэтому не называет это потоком), но для большинства современных программ все программы имеют как минимум один поток выполнения.(обычно упоминается как основной поток или поток пользовательского интерфейса или аналогичный).Если это происходит, то и процесс тоже.

Мысленный эксперимент: что будет делать процесс с нулевым потоком выполнения?

0 голосов
/ 10 февраля 2013

Само "главное" - это поток. Это поток, который исполняется. Итак, каждый процесс выполняется хотя бы в одном потоке.

0 голосов
/ 02 октября 2011

Теоретически я не понимаю, почему нет. Но это было бы невозможно с популярными операционными системами.

Процесс обычно состоит из нескольких различных частей:

  • Тема
  • Память
  • Файловые дескрипторы
  • Среда (корневой каталог, текущий каталог и т. Д.)
  • Привилегии (UID и т. Д.)
  • и так далее

Теоретически процесс может существовать без потоков в качестве сервера RPC. Другие процессы будут выполнять вызовы RPC, которые порождают потоки в процессе сервера, а затем потоки исчезают, когда функция возвращается. Я не знаю ни одной операционной системы, которая работает таким образом.

В большинстве ОС процесс завершается либо при выходе из последнего потока, либо при выходе из основного потока.

Примечание. При этом игнорируются «бесполезные» случаи, такие как процессы зомби, которые не имеют потоков, но не делают ничего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...