В вычислении , то идентификатор процесса ( так называемый идентификатором процесса или PID ) является числом , используемым большинством операционной системы ядер -such как и Unix , MacOS и Windows , -в однозначно идентифицировать активный процесс . Это число может быть использовано в качестве параметра в различных вызовах функций, позволяя процессы можно манипулировать, например, регулируя приоритет процесса или убивают его полностью.
Unix-подобный
В Unix-подобных операционных системах новые процессы создаются fork()
системным вызовом . PID возвращается родительскому процессу , что позволяет ему ссылаться на дочерний процесс в дальнейших вызовах функций. Родитель может, например, дождаться завершения дочернего waitpid()
процесса с помощью функции или завершить процесс с помощью kill()
.
Есть две задачи со специально выделенными идентификаторами процессов: swapper или sched имеют идентификатор процесса 0 и отвечают за разбиение на страницы и фактически являются частью ядра, а не обычного процесса пользовательского режима . Идентификатор процесса 1 обычно представляет собой процесс инициализации, который в первую очередь отвечает за запуск и завершение работы системы. Первоначально идентификатор процесса 1 не был специально зарезервирован для init какими-либо техническими средствами: он просто имел этот идентификатор как естественное следствие того, что он был первым процессом, запущенным ядром. Более поздние системы Unix обычно имеют дополнительные компоненты ядра, видимые как «процессы», и в этом случае PID 1 активно зарезервирован для процесса инициализации, чтобы поддерживать согласованность со старыми системами.
Во-первых, идентификаторы процессов обычно назначаются последовательно, начиная с 0 и увеличиваясь до максимального значения, которое варьируется от системы к системе. Как только этот предел достигнут, выделение возобновляется с 300 и снова увеличивается. В macOS и HP-UX распределение начинается с 100. Однако для этого и последующих проходов все PID, все еще назначенные процессам, пропускаются. Некоторые считают это потенциальной уязвимостью безопасности, поскольку она позволяет извлекать информацию о системе или незаметно передавать сообщения между процессами. Таким образом, реализации, которые особенно озабочены безопасностью, могут выбрать другой метод назначения PID. [1] В некоторых системах, таких как MPE / iX , используется самый низкий доступный PID, иногда с целью минимизировать количество страниц ядра с информацией о процессе в памяти.
Идентификатор текущего процесса предоставляется getpid()
системным вызовом или как переменная $$
в оболочке. Идентификатор родительского процесса можно получить с помощью getppid()
системного вызова.
В Linux максимальный идентификатор процесса задается псевдо-файлом /proc/sys/kernel/pid_max
. [2]
Pidfile
Некоторые процессы, например музыкальный проигрыватель moc и демон MySQL , записывают свой PID в задокументированное расположение файла, чтобы другие процессы могли его искать.
Майкрософт Виндоус
В операционных системах семейства Windows можно получить идентификатор текущего процесса, используя GetCurrentProcessId()
функцию Windows API , [3] и идентификатор других процессов, используя GetProcessId()
. [4] Внутренне идентификатор процесса называется идентификатором клиента и выделяется из того же пространства имен, что и идентификаторы потоков , поэтому эти два идентификатора никогда не перекрываются. Процесс System Idle задается идентификатор процесса 0. Процесс Система получает идентификатор процесса 8 на Windows 2000 и 4 на Windows XP и Windows Server 2003 . [5] В операционных системах семейства Windows NT идентификаторы процессов и потоков кратны 4, но это не является частью спецификации. [6] [7]
Смотрите также
Рекомендации
- ^ comp.unix.aix Часто задаваемые вопросы , получено 21 июля 2008 г.
- ^ "proc - псевдофайловая система информации о процессе" , Руководство программиста Linux , дата обращения 28 декабря 2009 г.
- ^ «Функция GetCurrentProcessId» , Центр разработки для Windows , Microsoft , 5 декабря 2018 г.
- ^ «Функция GetProcessId» , Центр разработки для Windows , Microsoft , 5 декабря 2018 г.
- ^ Руссинович, Марк ; Дэвид А. Соломон (2005), «Глава 2: Архитектура системы», Microsoft Windows Internals (4-е изд.), Microsoft Press, стр. 76 , ISBN 0-7356-1917-4
- ^ Чен, Раймонд (2008-02-28), "Почему идентификаторы процессов и потоков кратны четырем?" , Старая новая вещь , Microsoft
- ^ Идентификатор проверенных дескрипторов
Эта статья основана на материалах, взятых из Free On-line Dictionary of Computing до 1 ноября 2008 г. и включенных в соответствии с условиями «перелицензирования» GFDL версии 1.3 или новее.