ประสิทธิภาพของ microkernel เทียบกับ kernel แบบ monolithic


14

microkernel ใช้ไดรเวอร์ทั้งหมดเป็นโปรแกรมพื้นที่ผู้ใช้และใช้คุณสมบัติหลักเช่น IPC ในเคอร์เนลเอง เคอร์เนลเสาหินอย่างไรก็ตามใช้ไดรเวอร์เป็นส่วนหนึ่งของเคอร์เนล (เช่นทำงานในโหมดเคอร์เนล)

ฉันได้อ่านการอ้างสิทธิ์บางอย่างว่า microkernels นั้นช้ากว่า monolithic kernels เนื่องจากพวกเขาจำเป็นต้องจัดการกับข้อความที่ส่งระหว่างไดรเวอร์ในพื้นที่ของผู้ใช้ มันเป็นเรื่องจริงเหรอ?

เป็นเวลานานเมล็ดส่วนใหญ่เป็นเสาหินเนื่องจากฮาร์ดแวร์ช้าเกินกว่าที่จะเรียกใช้ไมโครเคอร์เนลได้อย่างรวดเร็ว อย่างไรก็ตามขณะนี้มีไมโครเคิลและไฮบริดหลายเมล็ดเช่น GNU / Hurd, Mac OS X, สาย Windows NT เป็นต้น

แล้วมีอะไรเปลี่ยนแปลงเกี่ยวกับประสิทธิภาพของ microkernels บ้าง? คำติชมของ microkernels นี้ยังใช้ได้ในปัจจุบันหรือไม่?

คำตอบ:


11

เช่นเดียวกับคำตอบ (หรืออย่างน้อยคำนำหน้า) สำหรับคำถามที่เกี่ยวข้องกับประสิทธิภาพ: รู้โดเมนปัญหาของคุณรันมาตรฐานเปรียบเทียบและจดจำว่าการเพิ่มประสิทธิภาพก่อนวัยอันควรคืออะไร

ประการแรกไม่มีการเปรียบเทียบการเปรียบเทียบที่ครอบคลุมได้เปรียบเทียบเมล็ดขนาดใหญ่กับระบบ microkernel ยุคปัจจุบันที่ทำงานในลักษณะที่เท่าเทียมกัน ดังนั้นในขณะที่อาจมีการทดลองที่เปรียบเทียบองค์ประกอบเฉพาะของเมล็ดเหล่านั้นพวกเขาจะไม่ได้เป็นตัวแทนของ "ภาพใหญ่" ที่คำถามของคุณต้องการทาสี

จากการที่ถูกกล่าวว่ามีการสังเกตที่แตกต่างกันอย่างดุเดือดของประสิทธิภาพเคอร์เนลในไมโครเคิล ตัวอย่างเช่นตระกูล microkernel L4 สามารถกล่าวได้ว่ามีประสิทธิภาพ IPC ตามลำดับความสำคัญสูงกว่าเคอร์เนล Mach แต่อุปกรณ์ Apple ทุกรุ่นจากทศวรรษนี้ใช้ Mach อยู่และดูเหมือนว่าจะทำงานเร็วมากใช่มั้ย

คุณธรรมของเรื่องราวคือทุกคนที่ตัดสินใจว่าสถาปัตยกรรมเคอร์เนลที่จะใช้นั้นต้องตัดสินใจก่อนว่าเป้าหมายสูงสุดของพวกเขาคืออะไร ระบบ Microkernel นั้น (เมื่อใช้อย่างถูกต้องแน่นอน) ปลอดภัยกว่าบำรุงรักษาและแยกส่วน อย่างไรก็ตามพวกเขาอาจจะยากที่จะออกแบบอย่างถูกต้องและอาจมีค่าใช้จ่ายในการดำเนินการเสาหิน เคอร์เนลเสาหินจะเร็วขึ้น แต่การรักษาความปลอดภัยจะยากกว่าที่จะใช้และมันจะเป็นแบบแยกส่วนน้อยและง่ายต่อการปรับแต่ง

สถาปัตยกรรมเคอร์เนลของคุณควรเป็นไปตามเป้าหมายสุดท้ายของคุณ

(และเมื่อสิ่งอื่นล้มเหลวให้ลองทำทั้งสองวิธีแล้วดูว่าเกิดอะไรขึ้น)


"แต่อุปกรณ์ Apple ทุกเครื่องในทศวรรษนี้ใช้ Mach และดูเหมือนว่าพวกเขาจะทำงานเร็วมากใช่ไหม" นั่นถูกต้องเพียงบางส่วนเท่านั้น "เคอร์เนลของดาร์วินคือ XNU ซึ่งเป็นเคอร์เนลลูกผสมซึ่งใช้ OSFMK 7.3 (Open Software Foundation Mach Kernel) จาก OSF องค์ประกอบต่าง ๆ ของ BSD (รวมถึงแบบจำลองกระบวนการสแต็กเครือข่ายและระบบไฟล์เสมือน) และเชิงวัตถุ Device driver API ชื่อ I / O Kit การออกแบบเคอร์เนลแบบไฮบริดให้ความยืดหยุ่นของ microkernel และประสิทธิภาพของ monolithic kernel
Behrang Saeedzadeh

4

ฉันชอบโทรหา Windows NT และ Apple XNU kernel monolithic แทนที่จะเป็น hybrid ฉันไม่พบการจัดประเภทของลูกผสมให้มีความหมายมากในทางปฏิบัติ ในความเป็นจริงหนึ่งในวิศวกรดั้งเดิมของ XNU เรียกมันว่าเสาหิน [1]

ในเรื่องของประสิทธิภาพการเปรียบเทียบเชิงลึกเพียงอย่างเดียวของ monolithic vs micro ที่ฉันพบคือ "คอมพิวเตอร์ประสิทธิภาพสูงมากหรือทำไม Microkerenels ดูด" [2] และการนำเสนอโต้แย้ง "ทำ Microkernels ดูด?" [3]

Modularity และ customizablity เป็นปัญหาของการออกแบบมากกว่าข้อ จำกัด โดยธรรมชาติในเมล็ดเสาหิน ตัวอย่างเช่นเคอร์เนล Linux สามารถอยู่ในช่วงตั้งแต่หลายเมกะไบต์จนถึงขนาดประมาณหนึ่งเมกะไบต์ขึ้นอยู่กับตัวเลือกเวลาคอมไพล์และแอปพลิเคชันของแพตช์บางตัว ส่วนใหญ่ของ 15 ล้านบรรทัดบวกรหัสของ Linux เป็นโมดูลเคอร์เนลโหลดได้ พวกเขาจะรวบรวมแยกจากเคอร์เนลฐานและโหลดเมื่อจำเป็นเท่านั้น โมดูลเหล่านั้นสามารถใช้ไดรเวอร์และการเรียกใช้ระบบ (แม้แต่การเอาชนะการเรียกระบบพื้นฐาน)

สองพื้นที่ที่ microkernels มีข้อได้เปรียบที่ไม่มีปัญหาอยู่ในหน่วยความจำต่ำ (<= 512k ram) หรือระบบปฏิบัติการแบบเรียลไทม์ "ยาก" เช่นระบบการบินของสายการบินหรือระบบควบคุมเครื่องปฏิกรณ์นิวเคลียร์

แก้ไข: พูดถึงข้อดีและข้อเสียของสถาปัตยกรรมเคอร์เนลทั้งสอง Gernot Heiser ยอมรับอย่างอิสระในตอนท้ายของการนำเสนอของเขา [3] ว่าเสาหินใหญ่กว่าปกติมากเพราะมีขนาดเล็กกว่าตัวประมวลผล microkernel ถึงแม้ว่าค่าโสหุ้ยพิเศษนั้นจะนำไปสู่ความน่าเชื่อถือที่เพิ่มขึ้นดังนั้น microkernels จึงมีอำนาจเหนือ RTOS

[1] Louis G. Gerbarg, "การซิงโครไนซ์ขั้นสูงใน Mac OS X: การเพิ่ม Unix เป็น SMP และเรียลไทม์", การดำเนินการของการประชุม BSDCon 2002, หน้า 2

[2] Chistoph Lameter, "การคำนวณประสิทธิภาพสูงที่สุดหรือทำไม Microkernels Suck", Linux Symposium 2007, เล่มที่หนึ่ง

[3] Gernot Heiser, "Microkernels แย่ไหม?", 9th Linux.conf.au, มกราคม, 2551


ฉันจัดประเภท XNU และ Windows NT เป็นเมล็ดพันธุ์ "ลูกผสม"
mmk

ขอบคุณ @DW สำหรับการต้อนรับ ฉันล้างโพสต์ของฉันแล้วเพิ่มแหล่งอ้างอิง
Ironlenny

@mmk ขออภัยคุณเรียกพวกเขาว่าลูกผสมพวกนั้นฉันเพิ่งรีบทำให้โพสต์และอ่านผิด
Ironlenny
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.