Керовані ОС, мабуть, як-то схожі на мікроядра - ви жертвуєте продуктивністю заради безпеки.
Можуть виникнути подібні проблеми, оскільки він вимагає розщеплення коду на 2 частини:
- Ядро низького рівня написано на C / асемблері
- Ядро вищого рівня, написане керованою мовою
Залежно від вартості безпечного введення / виходу з мови HL, це може спричинити подібні проблеми, як мікроядерні канали - можливо, трохи швидше (залишення HL швидше, ніж повний контекстний комутатор, але IIRC, наприклад, JNI, досить дороге).
Користувачеві програми також, ймовірно, знадобляться окремі контексти, оскільки багато додатків написано на інших платформах (скажімо, на C, Java або .Net). У тих же випадках програми можуть бути пов'язані з процесором (компілятори, перетворювачі музики тощо) і потребувати навіть оптимізації асемблера для виконання з достатньою швидкістю. Крім того - захист MMU, реалізований на мові HL, ймовірно, не буде настільки швидким, як апаратний, навіть якщо він може бути набагато більш точним.
Також HL мова не володіє низькорівневими операціями. Хоча програмне забезпечення, як правило, розроблене з "хорошими" драйверами практики кодування, це не потрібно. Я не думаю, що вони захистять принаймні деяких помилок, оскільки ядра вимагають іноді ручної пам’яті.
Нарешті, я не думаю, що для такої ОС потрібна повна VM. Оскільки ОС не може бути побудована з принципом компіляції одноразово запускати всюди мови HL (навіть з GC & co.), Зробить кращим кандидатом.
Наприклад, ви раптом роблять довільні вказівники застарілими.
ОС по суті є низьким рівнем. Ви передаєте на апаратне забезпечення не лише "довільний покажчик", але ймовірно фізичну адресу, а не віртуальну. Деякі DMA можуть обробляти лише перші 16MiB пам'яті. Хоча така ОС може значно спростити, адреси не позбудуться.
І якщо це добре написано, ви позбудетеся тонни застарілого сирого, що є у більшості сучасних ОС.
- Є багато застарілого обладнання. Набагато більше, ніж у програмному забезпеченні. Ви спочатку запускаєтесь у реальному режимі, потім вмикаєте ворота A20 (не запитуйте) переходити в захищений режим, потім у тривалий.
- API / ABI сумісність хороша. Скажіть, вони написали таку ОС - що б ви на ній працювали? Firefox - nope (C і C ++ за допомогою WinAPI). Java - ймовірно, її потрібно було перенести або виникли незначні проблеми через ikvm - якщо тільки не сподіватися на використання JNI. Я думаю, що MSSQL (і точно: Oracle, MySQL, Postgresql ...) не пишеться керованою мовою, щоб не підходити для сервера.
- Навіть сумісність помилок "хороша". AFAIK MS витрачає багато часу на тестування та перевірку, чи якесь програмне забезпечення не використовує API розумним (читати неправильно) способом. Як і проблема використання вказівника після
free
нього, коли Windows насправді почала звільняти пам’ять.
Я здогадуюсь, він придбає популярність приблизно в той же час, що і мікроядер.