Tôi đang tìm kiếm quy trình bắt đầu trong Linux có ID tiến trình 0. Tôi biết init
có PID 1, đây là quy trình đầu tiên trong Linux, có quy trình nào với PID 0 không?
Tôi đang tìm kiếm quy trình bắt đầu trong Linux có ID tiến trình 0. Tôi biết init
có PID 1, đây là quy trình đầu tiên trong Linux, có quy trình nào với PID 0 không?
Câu trả lời:
Từ trang wikipedia có tiêu đề: Định danh quy trình :
Có hai nhiệm vụ với quá trình ID đặc biệt phân biệt: swapper hoặc sched có quá trình ID 0 và có trách nhiệm phân trang , và thực sự là một phần của hạt nhân chứ không phải là bình thường sử dụng chế độ quá trình. ID tiến trình 1 thường là quá trình init chịu trách nhiệm chính cho việc khởi động và tắt hệ thống. Ban đầu, quy trình ID 1 không được dành riêng cho init bởi bất kỳ biện pháp kỹ thuật nào: đơn giản là ID này là kết quả tự nhiên của quá trình đầu tiên được gọi bởi kernel. Các hệ thống Unix gần đây thường có các thành phần hạt nhân bổ sung hiển thị dưới dạng 'quy trình', trong trường hợp đó, PID 1 được tích cực dành riêng cho quy trình init để duy trì tính nhất quán với các hệ thống cũ.
Bạn có thể thấy bằng chứng về điều này nếu bạn nhìn vào các bộ cha mẹ (PPID) của init
và kthreadd
:
$ ps -eaf
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Jun24 ? 00:00:02 /sbin/init
root 2 0 0 Jun24 ? 00:00:00 [kthreadd]
kthreadd
là daemon chủ đề hạt nhân. Tất cả các kthread được rẽ nhánh từ chủ đề này. Bạn có thể thấy bằng chứng về điều này nếu bạn xem xét các quy trình khác bằng cách sử dụng ps
và xem PPID của họ là ai:
$ ps -eaf
root 3 2 0 Jun24 ? 00:00:57 [ksoftirqd/0]
root 4 2 0 Jun24 ? 00:01:19 [migration/0]
root 5 2 0 Jun24 ? 00:00:00 [watchdog/0]
root 15 2 0 Jun24 ? 00:01:28 [events/0]
root 19 2 0 Jun24 ? 00:00:00 [cpuset]
root 20 2 0 Jun24 ? 00:00:00 [khelper]
Hãy chú ý tất cả 2
.
kswapd[0-9]*
, trên hệ thống của tôi có PID 52 là gì? Nó dường như cũng chịu trách nhiệm phân trang.
Từ wiki Định danh quy trình :
Có hai tác vụ với ID tiến trình được phân biệt đặc biệt: trình trao đổi hoặc lịch biểu có ID tiến trình 0 và chịu trách nhiệm phân trang và thực sự là một phần của kernel chứ không phải là quy trình chế độ người dùng thông thường.
Quá trình với pid 0
là lịch trình,
ID quy trình Mô tả:
0 Trình lập lịch biểu
1 Quá trình khởi động
2 kflushd
3 kupdate
4 kpiod
5 kswapd
6 mdrecoveryd