Является ли Windows 7 переработкой идентификационных номеров (PID)?

У меня есть эта небольшая пробная программа, которая отслеживает PID по мере их создания и закрытия. Я исследую проблему, которую обнаружил мой прогги, и хотел бы спросить вас об этом чтобы лучше понять, что происходит.

Когда процесс Windows запускается, он получает PID, но когда процесс завершается, PID (как звездный номер баскетбольного баскетболиста), или это возможно для нового, полностью несвязанный процесс, который должен быть создан под выпущенным PID?

Спасибо

Ответ 1

Да, идентификаторы процессов могут быть переработаны системой. Они становятся доступными для этого, как только последний дескриптор процесса был закрыт.

Раймонд Чен обсуждал этот вопрос здесь: Когда идентификатор процесса становится доступным для повторного использования?

Идентификатор процесса - это значение, связанное с объектом процесса, и как поскольку объект процесса все еще находится вокруг, так и его процесс Я БЫ. Объект процесса остается до тех пор, пока процесс все еще запущен (процесс неявно сохраняет ссылку на себя) или до тех пор, пока у кого-то еще есть дескриптор объекта процесса.

Если вы думаете об этом, это имеет смысл, поскольку до тех пор, пока есть все еще дескриптор процесса, кто-то может вызвать WaitForSingleObject ожидать завершения процесса или вызвать метод GetExitCodeProcess для получения кода выхода, и что код выхода должен быть сохранен где-то для последующего поиска.

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

Ответ 2

Я проверил тест около часа, и за это время 302 выходов процессов и 70 из них имели общие идентификаторы (один и тот же PID использовался для нового процесса). Так что бы сказать, что они часто используются повторно.

Ответ 3

Очевидно, что если процесс завершен, его PID доступен для повторного использования.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms683215%28v=vs.85%29.aspx

Примечание

До тех пор, пока процесс не завершится, его идентификатор процесса однозначно идентифицирует его в системе. Дополнительные сведения о правах доступа см. В разделе "Безопасность процессов и права доступа".