คำตอบสั้น ๆ:
- ไม่มันไม่ใช่กระบวนการ
- เธรดผู้ใช้ไม่ถูกรูทที่ init
Init เป็นเพียงกระบวนการแรก มันไม่ได้จัดการกระบวนการหรือเธรดใด ๆ มันสร้างบางอย่างโดยใช้เคอร์เนล syscalls fork () และ exec
ฉันคิดว่าคุณมีความคิดที่เป็นโคลนว่ากระบวนการคืออะไร มันไม่ได้หมายถึงการเรียกใช้โค้ดเพียงเล็กน้อย ใช่เคอร์เนลทำงานก่อน init (และบูตโหลดเดอร์ก่อนหน้านั้น) แต่ 'กระบวนการ' มีคำจำกัดความเฉพาะของ:
- ทำงานในพื้นที่ของผู้ใช้
- รันด้วย ID กระบวนการ
- การโต้ตอบจำนวนมากต้องผ่านเคอร์เนล
- ทรัพยากรทั้งหมดต้องมาจากเคอร์เนล
- จำเป็นต้องกำหนดเวลาโดยเคอร์เนล
ดังนั้นเมื่อเคอร์เนลเริ่มต้นมันจะเรียกใช้ init ซึ่งจะวางไข่ตามที่กระบวนการอื่น ๆ กำหนดค่าไว้
เท่าที่ # 2 ไปทุกสิ่งเคอร์เนลเป็นอย่างดีในเคอร์เนล คิดว่าเคอร์เนลเป็นรหัสพื้นที่ขนาดใหญ่ ไม่ใช่กระบวนการ แต่เป็นโค้ดขนาดใหญ่ บางส่วนของเคอร์เนลจัดการกับการจัดการหน่วยความจำส่วนต่าง ๆ ของมันมีส่วนของการกำหนดตารางเวลาของตัวเอง (เช่นไดรเวอร์ ฯลฯ ) และบางส่วนของมันด้วยกระบวนการกำหนดเวลา