Các hệ điều hành được quản lý có thể bằng cách nào đó giống như microkernels - bạn hy sinh hiệu năng để đảm bảo an toàn.
Có thể có các vấn đề tương tự vì nó yêu cầu chia mã thành 2 phần:
- Hạt nhân cấp thấp được viết bằng C / hợp ngữ
- Hạt nhân cấp cao hơn được viết bằng ngôn ngữ được quản lý
Tùy thuộc vào chi phí khi nhập / rời ngôn ngữ HL một cách an toàn, nó có thể đặt ra các vấn đề tương tự như microkernels - có thể nhanh hơn một chút (để lại HL nhanh hơn sau đó chuyển đổi ngữ cảnh đầy đủ nhưng ví dụ IIRC là JNI khá tốn kém).
Ứng dụng người dùng cũng có thể cần các bối cảnh riêng biệt vì nhiều ứng dụng được viết trên các nền tảng khác (giả sử C, Java hoặc .Net). Trong các trường hợp tương tự, các ứng dụng có thể bị ràng buộc bởi CPU (trình biên dịch, bộ chuyển đổi nhạc, v.v.) và thậm chí cần tối ưu hóa trình biên dịch để thực hiện với tốc độ đủ. Bên cạnh đó - bảo vệ MMU được triển khai bằng ngôn ngữ HL có thể sẽ không nhanh bằng phần cứng ngay cả khi nó có thể được điều chỉnh tốt hơn nhiều.
Ngoài ra ngôn ngữ HL không thành thạo trong các hoạt động cấp thấp. Trong khi phần mềm thường được thiết kế với trình điều khiển thực hành mã hóa "tốt" thì không cần thiết như vậy. Tôi không nghĩ rằng họ sẽ bảo vệ chống lại ít nhất một số lỗi vì hạt nhân đôi khi đòi hỏi phải quản lý bộ nhớ.
Cuối cùng tôi không nghĩ rằng hệ điều hành như vậy sẽ yêu cầu VM đầy đủ. Vì hệ điều hành không thể được xây dựng với các ngôn ngữ HL được biên dịch theo nguyên tắc biên dịch một lần ở mọi nơi (ngay cả với GC & co.) Sẽ làm cho ứng cử viên tốt hơn.
Ví dụ, bạn đột nhiên làm cho con trỏ tùy ý lỗi thời.
Hệ điều hành vốn đã ở mức độ thấp. Bạn chuyển đến phần cứng không chỉ là 'con trỏ tùy ý' mà có lẽ là địa chỉ vật lý chứ không phải là địa chỉ ảo. Một số DMA chỉ có thể xử lý 16MiB bộ nhớ đầu tiên. Mặc dù hệ điều hành như vậy có thể đơn giản hóa rất nhiều nhưng nó sẽ không thoát khỏi địa chỉ.
Và nếu được viết tốt, bạn sẽ thoát khỏi hàng tấn di sản mà hầu hết các hệ điều hành hiện đại hiện có.
- Có rất nhiều phần cứng di sản. Nhiều hơn nữa trong phần mềm. Trước tiên, bạn bắt đầu ở chế độ thực, sau đó kích hoạt cổng A20 (không hỏi) nhảy vào chế độ được bảo vệ sau đó chuyển sang chế độ dài.
- Khả năng tương thích API / ABI là tốt. Nói rằng họ đã viết HĐH như vậy - bạn sẽ chạy cái gì trên đó? Firefox - không (C và C ++ sử dụng WinAPI). Java - có lẽ nó cần phải được chuyển hoặc có một số vấn đề nhỏ thông qua ikvm - trừ khi nó vui lòng sử dụng JNI. Tôi đoán MSSQL (và chắc chắn Oracle, MySQL, Postgresql ...) không được viết bằng ngôn ngữ được quản lý nên sẽ không phù hợp với máy chủ.
- Ngay cả khả năng tương thích lỗi là "tốt". AFAIK MS dành nhiều thời gian chỉ để kiểm tra và kiểm tra xem một số phần mềm không sử dụng API theo cách thông minh (đọc không chính xác). Giống như vấn đề sử dụng con trỏ sau
free
nó khi Windows thực sự bắt đầu giải phóng bộ nhớ.
Tôi đoán nó sẽ trở nên phổ biến cùng thời gian với microkernels.