ระบบปฏิบัติการที่มีการจัดการอาจเป็นเหมือน microkernels - คุณเสียสละประสิทธิภาพในนามของความปลอดภัย
อาจมีปัญหาคล้ายกันเนื่องจากต้องมีการแยกรหัสใน 2 ส่วน:
- เคอร์เนลระดับต่ำเขียนใน C / Assembler
- เคอร์เนลระดับสูงกว่าเขียนในภาษาที่ได้รับการจัดการ
ทั้งนี้ขึ้นอยู่กับค่าใช้จ่ายในการเข้า / ออกอย่างปลอดภัยภาษา HL มันอาจกำหนดปัญหาที่คล้ายกันเป็น microkernels - อาจจะเร็วกว่าเล็กน้อย (ปล่อยให้ HL เร็วขึ้นจากนั้นสลับบริบทแบบเต็ม แต่ IIRC เช่น JNI ค่อนข้างแพง)
แอปพลิเคชันผู้ใช้อาจต้องการบริบทแยกต่างหากเนื่องจากมีแอปจำนวนมากที่เขียนบนแพลตฟอร์มอื่น (เช่น C, Java หรือ. Net) ในกรณีเดียวกันแอพพลิเคชั่นอาจมีการเชื่อมต่อกับ CPU (คอมไพเลอร์, ตัวแปลงเพลงเป็นต้น) และจำเป็นต้องมีแม้แต่การเพิ่มประสิทธิภาพแอสเซมเบลอร์เพื่อให้ทำงานด้วยความเร็วที่เพียงพอ นอกจากนี้ - การป้องกัน MMU ที่นำมาใช้ในภาษา HL อาจจะไม่เร็วเท่ากับฮาร์ดแวร์หนึ่งแม้ว่ามันอาจจะถูกปรับแต่งเพิ่มเติม
นอกจากนี้ภาษา HL ไม่เชี่ยวชาญในการดำเนินการระดับต่ำ ในขณะที่ซอฟแวร์มักจะได้รับการออกแบบด้วยไดรเวอร์การฝึกการเขียนโปรแกรม "ดี" ไม่จำเป็นต้องทำเช่นนั้น ฉันไม่คิดว่าพวกเขาจะป้องกันข้อผิดพลาดอย่างน้อยที่สุดเพราะในบางครั้งเมล็ดต้องมีการจัดการหน่วยความจำด้วยมือ
ในที่สุดฉันไม่คิดว่าระบบปฏิบัติการดังกล่าวจะต้องการ VM แบบเต็ม เนื่องจากระบบปฏิบัติการไม่สามารถสร้างขึ้นได้ด้วยภาษา HL ที่คอมไพล์ครั้งเดียวทำงานได้ทุกที่ (แม้กับ GC & co.) จะทำให้ผู้สมัครดีขึ้น
ตัวอย่างเช่นคุณทำตัวชี้โดยพลการล้าสมัย
ระบบปฏิบัติการอยู่ในระดับต่ำโดยเนื้อแท้ คุณส่งต่อไปยังฮาร์ดแวร์ไม่เพียง 'ตัวชี้โดยพลการ' แต่อาจเป็นที่อยู่จริงแทนที่จะเป็นที่อยู่เสมือน DMA บางตัวสามารถรองรับหน่วยความจำ 16MiB แรกเท่านั้น ในขณะที่ระบบปฏิบัติการดังกล่าวอาจลดความซับซ้อนมากมันจะไม่กำจัดที่อยู่
และถ้าเขียนได้ดีคุณก็จะกำจัดสิ่งที่เป็นมรดกตกทอดมากมายที่ระบบปฏิบัติการสมัยใหม่ส่วนใหญ่มีอยู่ในปัจจุบัน
- มีฮาร์ดแวร์รุ่นเก่ามากมาย มากขึ้นแล้วในซอฟต์แวร์ คุณเริ่มต้นในโหมดจริงจากนั้นเปิดใช้เกต A20 (ไม่ต้องถาม) กระโดดเข้าสู่โหมดป้องกันจากนั้นเข้าสู่โหมดยาว
- API / ABI ใช้งานได้ดี สมมติว่าพวกเขาเขียนระบบปฏิบัติการเช่นนี้ - คุณจะใช้งานมันอย่างไร Firefox - ไม่ (C และ C ++ ใช้ WinAPI) Java - อาจจำเป็นต้องได้รับการจัดวางหรือมีปัญหาเล็กน้อยผ่าน ikvm - ยกเว้นว่าจะยินดีใช้ JNI ฉันเดา MSSQL (และแน่นอนว่า Oracle, MySQL, Postgresql ... ) ไม่ได้เขียนในภาษาที่ได้รับการจัดการดังนั้นมันจึงไม่เหมาะสำหรับเซิร์ฟเวอร์
- ความเข้ากันได้ของบั๊กก็คือ "ดี" AFAIK MS ใช้เวลามากมายในการทดสอบและตรวจสอบว่าซอฟต์แวร์บางตัวไม่ได้ใช้ API อย่างฉลาด (อ่านไม่ถูกต้อง) เหมือนปัญหาการใช้ตัวชี้หลังจาก
free
Windows เริ่มหน่วยความจำว่างจริง ๆ
ฉันเดาว่ามันจะได้รับความนิยมในเวลาเดียวกันกับ microkernels