OS yang dikelola mungkin entah bagaimana seperti microkernels - Anda mengorbankan kinerja demi keamanan.
Mungkin ada masalah yang sama karena memerlukan kode pemisahan dalam 2 bagian:
- Kernel tingkat rendah ditulis dalam C / assembler
- Kernel tingkat lebih tinggi ditulis dalam bahasa yang dikelola
Bergantung pada biaya untuk memasuki / meninggalkan bahasa HL dengan aman, hal itu dapat menimbulkan masalah yang sama seperti microkernels - mungkin sedikit lebih cepat (meninggalkan HL lebih cepat daripada konteks penuh tetapi IIRC misalnya JNI cukup mahal).
Aplikasi pengguna juga mungkin akan membutuhkan konteks terpisah karena banyak aplikasi yang ditulis pada platform lain (misalnya C, Java atau .Net). Dalam kasus yang sama, aplikasi mungkin terikat dengan CPU (kompiler, konverter musik, dll.) Dan bahkan perlu optimisasi assembler untuk bekerja dengan kecepatan yang memadai. Selain itu - perlindungan MMU diimplementasikan dalam bahasa HL mungkin tidak akan secepat perangkat keras bahkan jika mungkin jauh lebih baik.
Bahasa HL juga tidak mahir dalam operasi tingkat rendah. Sementara perangkat lunak biasanya dirancang dengan driver praktik pengkodean "baik" tidak perlu begitu. Saya tidak berpikir mereka akan melindungi terhadap setidaknya beberapa kesalahan karena kernel kadang-kadang membutuhkan memori pengelolaan tangan.
Akhirnya saya tidak berpikir bahwa OS seperti itu akan membutuhkan VM penuh. Karena OS tidak dapat dibangun dengan prinsip kompilasi-sekali-jalankan-di mana saja bahasa HL (bahkan dengan GC & co.) Akan menjadi kandidat yang lebih baik.
Misalnya, Anda tiba-tiba membuat pointer acak menjadi usang.
OS pada dasarnya tingkat rendah. Anda melewati perangkat keras tidak hanya 'penunjuk sewenang-wenang' tetapi mungkin alamat fisik daripada virtual. Beberapa DMA hanya dapat menangani 16MiB memori pertama. Meskipun OS semacam itu dapat menyederhanakan banyak hal, ia tidak akan menghilangkan alamat.
Dan jika ditulis dengan baik, Anda menyingkirkan satu ton warisan mentah yang dimiliki kebanyakan OS modern saat ini.
- Ada banyak perangkat keras warisan. Lebih dari itu dalam perangkat lunak. Pertama-tama Anda mulai dalam mode nyata, lalu aktifkan gerbang A20 (jangan tanya) lompat ke mode terlindung, lalu ke mode lama.
- Kompatibilitas API / ABI baik. Katakanlah mereka telah menulis OS seperti itu - apa yang akan Anda jalankan di atasnya Firefox - nggak (C dan C ++ menggunakan WinAPI). Java - mungkin perlu porting atau memiliki beberapa masalah kecil melalui ikvm - kecuali jika senang menggunakan JNI. Saya kira MSSQL (dan pastinya Oracle, MySQL, Postgresql ...) tidak ditulis dalam bahasa yang dikelola sehingga tidak akan cocok untuk server.
- Bahkan kompatibilitas bug adalah "baik". AFAIK MS menghabiskan banyak waktu hanya menguji dan memeriksa apakah beberapa perangkat lunak tidak menggunakan API dengan cara yang pintar (salah baca). Seperti masalah menggunakan pointer setelah
free
itu ketika Windows benar-benar mulai membebaskan memori.
Saya kira itu akan mendapatkan popularitas sekitar waktu yang sama dengan microkernels.