Id quá trình sẽ được tái chế? Điều gì nếu bạn đạt id tối đa?


7

ID tiến trình đang tăng nghiêm ngặt, nhưng nếu hệ thống của bạn chạy đủ lâu và có rất nhiều quá trình kết thúc và bắt đầu, đôi khi bạn có thể đạt đến giới hạn của loại tích phân cơ bản (trên hệ thống của tôi, nó dường như là một int int đã ký) không có pid lớn hơn sẽ tồn tại. Điều này có khiến các id cũ không sử dụng (của các quá trình đã hoàn thành) được tái chế (tức là đưa ra lần thứ hai) không? Có gì nếu ai đó đang chờ đợi pid rằng để chấm dứt nhưng không kiểm tra trong một looong thời gian?


Điều này có vẻ như là một bản sao gần như của unix.stackexchange.com/questions/22425/NH
Bruce Ediger

Câu trả lời:


7

ID tiến trình không tăng nghiêm ngặt trên bất kỳ hệ điều hành nào giống như UNIX mà tôi biết. Câu hỏi của bạn dựa trên một giả định sai.

Các yêu cầu duy nhất về ID tiến trình là:

ID tiến trình sẽ không được hệ thống sử dụng lại cho đến khi vòng đời của quá trình kết thúc. Ngoài ra, nếu tồn tại một nhóm quy trình có ID nhóm quy trình bằng ID quy trình đó, ID quy trình sẽ không được hệ thống sử dụng lại cho đến khi vòng đời của nhóm quy trình kết thúc. Một quy trình không phải là quy trình hệ thống sẽ không có ID quy trình là 1.


2
Không, điều đó là không thể. Quá trình không kết thúc cho đến khi nó báo cáo giá trị thoát của nó cho cha mẹ của nó. Đó là một trong những công việc của nó và cho đến khi nó hoàn thành nó, nó vẫn chưa hoàn thành.
David Schwartz

1
@DavidSchwartz - không chắc cái này sẽ dễ đọc như thế nào trong một bình luận nhưng - linux khá tuần tự. [adrian @ iceweasel ~] $ a.out 24506 [adrian @ iceweasel ~] $ a.out 24507 [adrian @ iceweasel ~] $ a.out 24508 [adrian @ iceweasel ~] $ a.out 24509 [adrian @ iceweasel ~ $ cat pid.cc #include <stdio.h> #include <sys / type.h> #include <unistd.h> int main (int argc, char * argv []) {printf ("% d \ n", getpid ()); trả về 0; }
Adrian Cornish

1
Hầu hết các hệ điều hành là tuần tự cho đến khi chúng bao quanh. Một số dự trữ phạm vi nhất định cho các quá trình của các loại khác nhau. Một số đã được ngẫu nhiên.
David Schwartz

1
@DavidSchwartz - Đó là quan điểm của tôi - bạn nói "không tăng nghiêm ngặt trên bất kỳ hệ điều hành nào giống như UNIX mà tôi biết" - bạn nhớ rằng lỗ hổng bảo mật siêu cao trong Debian vì họ đang sử dụng PID làm muối để băm ;-) - chỉ với 65K của PID không phải là loại muối tốt nhất
Adrian Cornish

1
Vâng, chúng không tăng nghiêm ngặt trên một hệ điều hành giống như UNIX mà tôi biết. Nếu bạn biết một trong những nơi họ đang tăng nghiêm ngặt, bạn chưa đề cập đến nó. ( Tăng nghiêm ngặt có nghĩa là chúng không bao giờ giảm.) Tôi có thể tưởng tượng một hệ điều hành với các bộ vi xử lý 64 bit đã làm điều đó, nhưng tôi không biết gì về nó.
David Schwartz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.