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

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

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

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

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

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

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

Процесс может иметь ноль или несколько однопоточных квартир и нулевую или одну многопоточную квартиру.

Из этого следует, что если количество однопоточных квартир и многопоточных квартир может быть равным нулю. Однако этот процесс не будет делать много 🙂

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

Эксперимент с мыслями: что бы сделал процесс с нулевыми streamами выполнения?

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

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

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

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

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

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

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

«Главная» – это stream. Это stream, который выполняется. Таким образом, каждый процесс работает по крайней мере в одном streamе.