ฉันกำลังมองหากระบวนการที่เริ่มต้นใน Linux ซึ่งมีกระบวนการ ID 0 ฉันรู้ว่าinit
มี PID 1 ซึ่งเป็นกระบวนการแรกใน Linux มีกระบวนการใดที่มี PID 0 หรือไม่
ฉันกำลังมองหากระบวนการที่เริ่มต้นใน Linux ซึ่งมีกระบวนการ ID 0 ฉันรู้ว่าinit
มี PID 1 ซึ่งเป็นกระบวนการแรกใน Linux มีกระบวนการใดที่มี PID 0 หรือไม่
คำตอบ:
จากหน้าวิกิพีเดียชื่อ: ตัวระบุกระบวนการ :
มีสองภารกิจที่มี ID กระบวนการที่แตกต่างเป็นพิเศษ: swapper หรือschedมีโพรเซส ID 0 และรับผิดชอบเพจจิ้งและเป็นส่วนหนึ่งของเคอร์เนลมากกว่ากระบวนการโหมดผู้ใช้ปกติ ประมวลผลหมายเลข 1 จะเป็นinitกระบวนการหลักรับผิดชอบในการเริ่มต้นและปิดระบบ ในขั้นต้น ID กระบวนการ 1 ไม่ได้ถูกสงวนไว้เฉพาะสำหรับการเริ่มต้นโดยมาตรการทางเทคนิคใด ๆ : มันมี ID นี้เป็นผลมาจากธรรมชาติของการเป็นกระบวนการแรกที่เรียกใช้โดยเคอร์เนล โดยทั่วไประบบ Unix ล่าสุดจะมีองค์ประกอบเคอร์เนลเพิ่มเติมที่มองเห็นเป็น 'กระบวนการ' ซึ่งในกรณีนี้ PID 1 ถูกสงวนไว้อย่างแข็งขันสำหรับกระบวนการเริ่มต้นเพื่อรักษาความสอดคล้องกับระบบเก่า
คุณสามารถดูหลักฐานนี้หากคุณดู PID หลัก (PPID) ของinit
และ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
เป็น daemon ของเคอร์เนลเธรด kthreads ทั้งหมดถูกแยกจากเธรดนี้ คุณสามารถดูหลักฐานนี้ถ้าคุณดูกระบวนการอื่นที่ใช้ps
และดูว่าใคร PPID ของพวกเขาคือ:
$ 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]
2
ขอให้สังเกตพวกเขากำลังทั้งหมด
kswapd[0-9]*
ที่ในระบบของฉันมี PID 52 ในปัจจุบัน? ดูเหมือนว่ายังต้องรับผิดชอบในการเพจ
จากตัวระบุกระบวนการ wiki:
มีสองงานที่มี ID กระบวนการที่แตกต่างเป็นพิเศษคือ swapper หรือ sched time มี process ID 0 และรับผิดชอบเพจจิ้งและเป็นส่วนหนึ่งของเคอร์เนลแทนที่จะเป็นกระบวนการโหมดผู้ใช้ปกติ
กระบวนการที่มีpid 0
คือตัวกำหนดตารางเวลา
ID กระบวนการคำอธิบาย:
0 The Scheduler
1 กระบวนการเริ่มต้น
2 kflushd
3 kupdate
4 kpiod
5 kswapd
6 mdrecoveryd