관리되는 OS는 아마도 마이크로 커널과 비슷할 것입니다. 안전 이름으로 성능을 희생하십시오.
두 부분으로 코드를 분할해야하는 것과 비슷한 문제가있을 수 있습니다.
- C / 어셈블러로 작성된 저수준 커널
- 관리 언어로 작성된 더 높은 수준의 커널
HL 언어를 안전하게 입력하고 떠나는 비용에 따라 마이크로 커널과 비슷한 문제가 발생할 수 있습니다. HL을 떠나는 것이 전체 컨텍스트 스위치보다 빠르지 만 JRC와 같은 IIRC는 비용이 많이 듭니다.
다른 플랫폼 (예 : C, Java 또는 .Net)에서 많은 앱이 작성되므로 사용자 애플리케이션에는 별도의 컨텍스트가 필요할 수 있습니다. 같은 경우에 응용 프로그램은 CPU 바운드 (컴파일러, 음악 변환기 등) 일 수 있으며 충분한 속도로 수행하려면 어셈블러 최적화가 필요합니다. 게다가 HL 언어로 구현 된 MMU 보호는 훨씬 더 미세하게 조정 되더라도 하드웨어만큼 빠르지 않을 것입니다.
또한 HL 언어는 저수준 작업에 능숙하지 않습니다. 소프트웨어는 일반적으로 "좋은"코딩 연습으로 설계되었지만 드라이버는 필요하지 않습니다. 커널은 때때로 수동 관리 메모리를 필요로하기 때문에 적어도 일부 오류로부터 보호 할 것이라고 생각하지 않습니다.
마지막으로 그러한 OS에 전체 VM이 필요하다고 생각하지 않습니다. OS는 HL 언어 (GC & co.)로 컴파일 할 때마다 한 번만 컴파일 할 수 있기 때문에 더 나은 후보가 될 수 있습니다.
예를 들어, 갑자기 임의 포인터를 쓸모 없게 만듭니다.
OS는 본질적으로 저수준입니다. '임의 포인터'뿐만 아니라 가상 주소 대신 물리적 주소로 하드웨어에 전달합니다. 일부 DMA는 처음 16MiB의 메모리 만 처리 할 수 있습니다. 그러한 OS는 많이 단순화 할 수 있지만 주소를 제거하지는 않습니다.
그리고 잘 쓰여져 있다면, 대부분의 현대 OS가 가지고있는 많은 레거시 크루 드를 제거 할 수 있습니다.
- 많은 레거시 하드웨어가 있습니다. 소프트웨어에서 훨씬 더. 먼저 리얼 모드에서 시작한 다음 A20 게이트 (요청하지 않음)를 보호 모드로 전환 한 다음 롱 모드로 설정하십시오.
- API / ABI 호환성이 좋습니다. 그들이 그러한 OS를 작성했다고 가정 해보십시오. 어떻게 실행할 것입니까? Firefox-아니요 (WinAPI를 사용하는 C 및 C ++). Java-아마도 JNI를 사용하기를 원치 않는 한 ikvm을 통해 포팅되거나 사소한 문제가 있었을 것입니다. MSSQL (및 Oracle, MySQL, Postgresql ...)은 관리되는 언어로 작성되지 않았으므로 서버에 적합하지 않은 것 같습니다.
- 버그 호환성도 "좋은"것입니다. AFAIK MS는 일부 소프트웨어가 스마트 (잘못된 읽기) 방식으로 API를 사용하지 않는지 테스트하고 확인하는 데 많은 시간을 소비합니다.
free
Windows가 실제로 메모리를 확보하기 시작한 후 포인터를 사용하는 문제와 같습니다 .
나는 그것이 마이크로 커널과 같은시기에 인기를 얻을 것이라고 생각합니다.