Jak są ponumerowane procesy w UNIX?

17

Nie mogę znaleźć żadnego wzorca, gdy patrzę na numerację PID w tabeli procesów ( ps -a), ponieważ PID nie są kolejnymi liczbami i czasami występują duże „przerwy” między tymi liczbami. Czy to dlatego, że niektóre procesy mogą działać przez krótki czas i rezerwują niektóre PID? Czy jest jakiś zakres, po którym resetuje się numeracja procesów?

Korzystam z systemu Mac OS X, ale myślę, że odpowiedź powinna dotyczyć ogólnie systemu UNIX.

syntagma
źródło

Odpowiedzi:

18

Tak w obu przypadkach.

Wiele procesów trwa krótko. Otrzymują PID, uruchamiają, kończą, a PID znika z tabeli procesów.

Czasami procesy trwają tylko ułamek sekundy!

Często po uruchomieniu programu uruchamiają wiele poleceń w ramach sprawdzania systemu i inicjowania środowiska.

Maksymalna liczba PID zależy od systemu i jest czasem konfigurowalna. Zasadniczo, jeśli wiesz, że będziesz mieć ogromną liczbę procesów, może być konieczne zwiększenie tej liczby, ale w nowych systemach operacyjnych uważam, że maksymalna liczba jest zwykle wystarczająco duża dla większości obciążeń.

PID to wpisy w tabeli procesów, a im więcej masz pamięci, tym więcej miejsca zajmuje tabela procesów.

Spójrz na to powiązane pytanie: /server/279178/what-is-the-range-of-a-pid-on-linux-and-solaris

Należy również pamiętać, że wiąże się z tym „maksymalna liczba procesów na użytkownika”, która jest miarą chroniącą przed złośliwym użytkownikiem celowo tworzącym wiele procesów w celu zablokowania całej tabeli procesów.

Johan
źródło
7

Możliwe jest również skonfigurowanie niektórych nowoczesnych jąder w celu przypisania losowych PID do nowych procesów w celu zwiększenia bezpieczeństwa. Przynajmniej Linux i FreeBSD mogą to zrobić z ustawieniem sysctl, a OpenBSD robi to zawsze. W takich przypadkach można mówić coraz mniej o schematach numeracji.

unperson325680
źródło
Czy wiesz, jakie koszty związane z wydajnością istnieją?
Bruce Ediger
@Bruce: pierwsza proponowana łatka miała najgorszy przypadek O (infty) z powodu naiwnego losowania. Ale myślę, że mają coś bezpiecznego i użytecznego. Nie znalazłem nic bardzo aktualnego na ten temat ... nie wykorzystany, jak sądzę. :)
unperson325680
5
Losowe identyfikatory PID brzmią dla mnie jak bezpieczeństwo poprzez zaciemnienie.
Johan
Tak właśnie jest, głównie ...
unperson325680
Oprócz indywidualnych inicjatyw, Linux zwykł proponować go tylko poprzez łatkę grsecurity , zespół jądra Linuksa zawsze odmawiał wdrożenia ( przykład tutaj ), a nawet zespół grsecurity ostatecznie go porzucił pod koniec 2006 roku .
WhiteWinterWolf