ใครช่วยอธิบายด้วยตัวอย่างความแตกต่างระหว่างเสาหินและไมโครเคอร์เนล การจำแนกประเภทอื่น ๆ ของเคอร์เนลด้วยหรือไม่?
ใครช่วยอธิบายด้วยตัวอย่างความแตกต่างระหว่างเสาหินและไมโครเคอร์เนล การจำแนกประเภทอื่น ๆ ของเคอร์เนลด้วยหรือไม่?
คำตอบ:
เคอร์เนลเสาหินเป็นกระบวนการขนาดใหญ่เดียวที่ทำงานทั้งหมดในพื้นที่แอดเดรสเดียว มันเป็นไฟล์ไบนารีแบบคงที่เดียว บริการเคอร์เนลทั้งหมดมีอยู่และดำเนินการในพื้นที่ที่อยู่เคอร์เนล เคอร์เนลสามารถเรียกใช้ฟังก์ชันได้โดยตรง ตัวอย่างของระบบปฏิบัติการที่ใช้เคอร์เนลเสาหิน: Unix, Linux
ในไมโครเคอร์เนลเคอร์เนลถูกแบ่งออกเป็นกระบวนการที่แยกจากกันซึ่งเรียกว่าเซิร์ฟเวอร์ เซิร์ฟเวอร์บางตัวทำงานในพื้นที่เคอร์เนลและบางเซิร์ฟเวอร์ทำงานในพื้นที่ผู้ใช้ เซิร์ฟเวอร์ทั้งหมดจะแยกจากกันและทำงานในพื้นที่ที่อยู่ที่ต่างกัน เซิร์ฟเวอร์เรียก "บริการ" จากกันโดยการส่งข้อความผ่าน IPC (Interprocess Communication) การแยกนี้มีข้อดีคือหากเซิร์ฟเวอร์หนึ่งล้มเหลวเซิร์ฟเวอร์อื่นก็ยังสามารถทำงานได้อย่างมีประสิทธิภาพ ตัวอย่าง OS ที่ใช้ microkernel: Mac OS X และ Windows NT
การออกแบบเคอร์เนลเสาหินนั้นเก่ากว่าแนวคิดไมโครเคอร์เนลซึ่งปรากฏในตอนท้ายของปี 1980
เมล็ด Unix และ Linux เป็นแบบเสาหินในขณะที่ QNX, L4 และ Hurd เป็นไมโครเคอร์เนล เดิม Mach เป็นไมโครเคอร์เนล (ไม่ใช่ Mac OS X) แต่ต่อมาถูกแปลงเป็นเคอร์เนลลูกผสม Minix (ก่อนเวอร์ชัน 3) ไม่ใช่ microkernel แท้เนื่องจากไดรเวอร์อุปกรณ์ถูกคอมไพล์เป็นส่วนหนึ่งของเคอร์เนล
เมล็ดเสาหินมักจะเร็วกว่าเมล็ดไมโคร เครื่องไมโครเคอร์เนลเครื่องแรกทำงานช้ากว่าเมล็ดเสาหินส่วนใหญ่ 50% ในขณะที่รุ่นต่อมาเช่น L4 ช้ากว่าการออกแบบเสาหินเพียง 2% หรือ 4%
เมล็ดเสาหินมีขนาดใหญ่ในขณะที่ไมโครเคอร์เนลมีขนาดเล็ก - มักจะพอดีกับแคช L1 ของโปรเซสเซอร์ (ไมโครเคอร์เนลรุ่นแรก)
ในเมล็ดเสาหินไดรเวอร์อุปกรณ์จะอยู่ในพื้นที่เคอร์เนลในขณะที่อยู่ในไมโครเคอร์เนลไดรเวอร์อุปกรณ์คือพื้นที่ผู้ใช้
เนื่องจากไดรเวอร์อุปกรณ์ของเมล็ดเสาหินอยู่ในพื้นที่เคอร์เนลเมล็ดเสาหินจึงมีความปลอดภัยน้อยกว่าไมโครเคอร์เนลและความล้มเหลว (ข้อยกเว้น) ในไดรเวอร์อาจทำให้เกิดข้อขัดข้อง (แสดงเป็น BSOD ใน Windows) ไมโครเคอร์เนลมีความปลอดภัยมากกว่าเมล็ดพืชเสาหินจึงมักใช้ในอุปกรณ์ทางทหาร
เมล็ดเสาหินใช้สัญญาณและซ็อกเก็ตเพื่อใช้การสื่อสารระหว่างกระบวนการ (IPC) ไมโครเคอร์เนลใช้คิวข้อความ ไมโครเคอร์เนลรุ่นที่ 1 ใช้ IPC ได้ไม่ดีและช้าเมื่อใช้สวิตช์บริบทนั่นคือสาเหตุที่ทำให้ประสิทธิภาพไม่ดี
การเพิ่มคุณลักษณะใหม่ให้กับระบบเสาหินหมายถึงการคอมไพล์ใหม่ทั้งเคอร์เนลหรือโมดูลเคอร์เนลที่เกี่ยวข้อง (สำหรับเคอร์เนลเสาหินแบบแยกส่วน) ในขณะที่ไมโครเคอร์เนลคุณสามารถเพิ่มคุณสมบัติหรือแพตช์ใหม่ได้โดยไม่ต้องคอมไพล์ใหม่
เคอร์เนลเสาหิน
ทุกส่วนของเคอร์เนลเช่น Scheduler, File System, Memory Management, Networking Stacks, Device Drivers ฯลฯ จะได้รับการดูแลในหน่วยเดียวภายในเคอร์เนลในMonolithic Kernel
ข้อดี
•การประมวลผลที่เร็วขึ้น
ข้อเสีย
•ความผิดพลาดไม่ปลอดภัย•การพอร์ตไม่ยืดหยุ่น•การระเบิดของขนาดเคอร์เนล
ตัวอย่าง • MS-DOS, Unix, Linux
ไมโครเคอร์เนล
เฉพาะส่วนที่สำคัญมากเช่น IPC (การสื่อสารระหว่างกระบวนการ) ตัวกำหนดตารางเวลาพื้นฐานการจัดการหน่วยความจำพื้นฐานไพรเวต I / O พื้นฐานเป็นต้นเท่านั้นที่จะใส่ลงในเคอร์เนล การสื่อสารเกิดขึ้นผ่านการส่งข้อความ อื่น ๆ จะได้รับการดูแลเป็นกระบวนการของเซิร์ฟเวอร์ใน User Space
ข้อดี
•ทนต่อการชนพกพาขนาดเล็กลง
ข้อเสีย
•การประมวลผลช้าลงเนื่องจากการส่งข้อความเพิ่มเติม
ตัวอย่าง • Windows NT
1. เคอร์เนลแบบเสาหิน (เสาหินบริสุทธิ์):all
บริการเคอร์เนลทั้งหมดจากส่วนประกอบเดียว
(-) ไม่สามารถเพิ่ม / ลบได้มีความยืดหยุ่นน้อยกว่า / เป็นศูนย์
(+) การสื่อสารระหว่างคอมโพเนนต์ดีกว่า
เช่น - Unix แบบดั้งเดิม
2. เคอร์เนลไมโคร:few
บริการเพียงไม่กี่อย่าง (การจัดการหน่วยความจำ, การจัดการ CPU, IPC ฯลฯ ) จากเคอร์เนลหลักบริการอื่น ๆ (การจัดการไฟล์การจัดการ I / O ฯลฯ ) จากเลเยอร์ / ส่วนประกอบต่างๆ
Split Approach [บางบริการอยู่ในโหมดพิเศษ (เคอร์เนล) และบางบริการอยู่ในโหมดปกติ (ผู้ใช้)]
(+) ยืดหยุ่นสำหรับการเปลี่ยนแปลง / การไล่ระดับสี
(-) ค่าใช้จ่ายในการสื่อสาร
เช่น: - QNXเป็นต้น
3. เคอร์เนลโมดูลาร์ (Modular Monolithic):most
การรวมกันของเคอร์เนลไมโครและเสาหิน
คอลเลกชันของโมดูล - โมดูลสามารถเป็น -> คงที่ + ไดนามิก
ไดรเวอร์มาในรูปแบบของโมดูล
เช่น: - Linux Modern OS
ในสเปกตรัมของการออกแบบเคอร์เนลจุดสุดขั้วสองจุดคือเมล็ดเสาหินและไมโครเคอร์เนล
ตัวอย่างเช่นเคอร์เนลลินุกซ์ (คลาสสิก) เป็นเคอร์เนลเสาหิน (และทุกระบบปฏิบัติการเชิงพาณิชย์ก็เช่นกัน - แม้ว่าพวกเขาอาจอ้างว่าเป็นอย่างอื่นก็ตาม)
ในรหัสนั้นเป็นไฟล์ C เดียวที่ก่อให้เกิดกระบวนการเดียวที่ใช้บริการทั้งหมดข้างต้น
เพื่อเป็นตัวอย่างการห่อหุ้มเคอร์เนลลินุกซ์เราตั้งข้อสังเกตว่าเคอร์เนลลินุกซ์ไม่สามารถเข้าถึงไลบรารี C มาตรฐานใด ๆ อันที่จริงเคอร์เนล Linux ไม่สามารถใช้ฟังก์ชันไลบรารี C พื้นฐานเช่น printf แต่จะใช้ฟังก์ชันการพิมพ์ของตัวเอง (เรียกว่าภาพพิมพ์)
การแยกเคอร์เนลลินุกซ์และการกักเก็บในตัวเองอย่างแยกตัวทำให้เคอร์เนลของลินุกซ์มีข้อได้เปรียบหลัก: เคอร์เนลอยู่ในพื้นที่แอดเดรสเดียว 1 ทำให้คุณสมบัติทั้งหมดสามารถสื่อสารด้วยวิธีที่เร็วที่สุดเท่าที่จะเป็นไปได้โดยไม่ต้องใช้การส่งผ่านข้อความประเภทใด ๆ โดยเฉพาะอย่างยิ่งเคอร์เนลเสาหินใช้ไดรเวอร์อุปกรณ์ทั้งหมดของระบบ
อย่างไรก็ตามนี่เป็นข้อเสียเปรียบหลักของเคอร์เนลเสาหิน: การแนะนำฮาร์ดแวร์ใหม่ที่ไม่ได้รับการสนับสนุนจำเป็นต้องมีการเขียนเคอร์เนลใหม่ (ในส่วนที่เกี่ยวข้อง) การคอมไพล์ใหม่และการติดตั้งระบบปฏิบัติการใหม่ทั้งหมด
ที่สำคัญกว่านั้นหากไดรเวอร์อุปกรณ์ใด ๆ ขัดข้องเคอร์เนลทั้งหมดจะได้รับผลกระทบ วิธีการที่ไม่เป็นโมดูลสำหรับการเพิ่มฮาร์ดแวร์และการขัดข้องของฮาร์ดแวร์นี้เป็นข้อโต้แย้งหลักในการสนับสนุนแนวทางการออกแบบที่รุนแรงอื่น ๆ สำหรับเมล็ด ไมโครเคอร์เนลเป็นเคอร์เนลแบบเรียบง่ายที่มีเฉพาะบริการระบบปฏิบัติการพื้นฐานเท่านั้น (เช่นการจัดการกระบวนการและการจัดการระบบไฟล์) ในไมโครเคอร์เนลไดรเวอร์อุปกรณ์จะอยู่นอกเคอร์เนลเพื่อให้สามารถเพิ่มและลบไดรเวอร์อุปกรณ์ในขณะที่ระบบปฏิบัติการกำลังทำงานอยู่และไม่จำเป็นต้องมีการสลับเคอร์เนล
เคอร์เนลเสาหินมีบริการเคอร์เนลทั้งหมดพร้อมกับส่วนหลักของเคอร์เนลดังนั้นจึงมีน้ำหนักมากและมีผลเสียต่อความเร็วและประสิทธิภาพ ในทางกลับกันไมโครเคอร์เนลมีน้ำหนักเบาทำให้ประสิทธิภาพและความเร็วเพิ่มขึ้น
ฉันตอบคำถามเดียวกันที่เว็บไซต์ wordpress สำหรับความแตกต่างระหว่างเสาหินไมโครเคอร์เนลและเอ็กโซเคอร์เนลในรูปแบบตารางคุณสามารถเยี่ยมชมได้ที่นี่