Jump to content

Идентификатор процесса

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

Unix-подобный [ править ]

В Unix-подобных операционных системах новые процессы создаются fork() системный вызов . PID возвращается родительскому процессу , что позволяет ему ссылаться на дочерний процесс при дальнейших вызовах функций. Родитель может, например, дождаться завершения дочернего процесса с помощью waitpid() функцию или завершить процесс с помощью kill().

Есть две задачи со специально выделенными идентификаторами процессов: PID 0 используется для swapper или sched , которые являются частью ядра и представляют собой процесс, который запускается на ядре ЦП всякий раз, когда этому ядру ЦП больше нечего делать. [1] Linux также называет потоки этого процесса неактивными задачами . [2] В некоторых API PID 0 также используется как специальное значение, которое всегда относится к вызывающему потоку, процессу или группе процессов. [3] [4] Процесс с идентификатором 1 обычно является процессом инициализации, который в первую очередь отвечает за запуск и завершение работы системы. Первоначально идентификатор процесса 1 не был специально зарезервирован для init никакими техническими мерами: он просто имел этот идентификатор как естественное следствие того, что он был первым процессом, вызываемым ядром. Более поздние системы Unix обычно имеют дополнительные компоненты ядра, видимые как «процессы», и в этом случае PID 1 активно зарезервирован для процесса инициализации для обеспечения согласованности со старыми системами.

Идентификаторы процессов, во-первых, обычно выделяются последовательно, [5] начиная с 0 и увеличиваясь до максимального значения, которое варьируется от системы к системе. Как только этот предел будет достигнут, распределение возобновляется с 300 и снова увеличивается. В macOS и HP-UX выделение возобновляется со 100. Однако для этого и последующих проходов все PID, все еще назначенные процессам, пропускаются. Некоторые считают, что это потенциальная уязвимость безопасности, поскольку она позволяет извлекать информацию о системе или скрытно передавать сообщения между процессами. Таким образом, реализации, которые особенно заботятся о безопасности, могут выбрать другой метод назначения PID. [6] В некоторых системах, таких как MPE/iX , используется наименьший доступный PID, иногда для того, чтобы минимизировать количество страниц ядра с информацией о процессе в памяти.

Текущий идентификатор процесса предоставляется getpid() системный вызов, [7] или как переменная $$ в оболочке. Идентификатор родительского процесса можно получить с помощью getppid() системный вызов. [8]

В Linux максимальный идентификатор процесса задается псевдофайлом /proc/sys/kernel/pid_max. [9]

Пид-файл [ править ]

Некоторые процессы, например музыкальный проигрыватель moc и демон MySQL , записывают свой PID в документированное расположение файла, чтобы другие процессы могли его найти. [ нужна ссылка ]

Microsoft Windows [ править ]

В операционных системах семейства Windows можно получить идентификатор текущего процесса, используя команду GetCurrentProcessId() функция Windows API , [10] и идентификатор других процессов, использующих GetProcessId(). [11] Внутренний идентификатор процесса называется идентификатором клиента и выделяется из того же пространства имен, что и идентификаторы потоков , поэтому они никогда не перекрываются. Процессу простоя системы присваивается идентификатор процесса 0. Системному процессу присваивается идентификатор процесса 8 в Windows 2000 и 4 в Windows XP и Windows Server 2003 . [12] В семействе операционных систем Windows NT идентификаторы процессов и потоков кратны 4, но это не является частью спецификации. [13]

См. также [ править ]

Ссылки [ править ]

  1. ^ Что такое ПИД 0?
  2. ^ Код ядра Linux: инструменты/perf/builtin-sched.c , pid 0 == swapper == задача ожидания
  3. ^ kill(2) — страница руководства Linux
  4. ^ sched_setscheduler(2) — страница руководства Linux
  5. ^ pid_namespaces(7) — страница руководства Linux
  6. ^ comp.unix.aix Часто задаваемые вопросы , получено 21 июля 2008 г.
  7. ^ "getpid" , Базовые спецификации открытой группы, выпуск 7, издание 2018 г.
  8. ^ "getppid" , Базовые спецификации открытой группы, выпуск 7, издание 2018 г.
  9. ^ «proc — псевдофайловая система информации о процессе» , Руководство программиста Linux , получено 28 декабря 2009 г.
  10. ^ «Функция GetCurrentProcessId» , Центр разработки для Windows , Microsoft , 5 декабря 2018 г.
  11. ^ «Функция GetProcessId» , Центр разработки для Windows , Microsoft , 5 декабря 2018 г.
  12. ^ Руссинович, Марк ; Дэвид А. Соломон (2005), «Глава 2: Архитектура системы», Внутреннее устройство Microsoft Windows (4-е изд.), Microsoft Press, стр. 76 , ISBN  0-7356-1917-4
  13. ^ Чен, Рэймонд (28 февраля 2008 г.), «Почему идентификаторы процессов и потоков кратны четырем?» , Старая новая вещь , Microsoft
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 11b10e3f3417d7678c19d01b025ee3fa__1718769060
URL1:https://arc.ask3.ru/arc/aa/11/fa/11b10e3f3417d7678c19d01b025ee3fa.html
Заголовок, (Title) документа по адресу, URL1:
Process identifier - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)