"왜"부분을 설명하겠습니다.
최신 OS의 이유 중 하나는 시스템에서 여러 프로그램 (프로세스)을 동시에 실행할 수 있기 때문입니다. 이 작업을 안전하게하려면 다음을 수행해야합니다.
(특별한 요구가 없다면) 시스템에서 RAM을 고정 된 방식으로 분할하고 싶지는 않을 것입니다 (예 : 프로세스 당 256MB 고정)-2GB 시스템에서 8 개의 프로세스로 제한합니다. 각 프로세스가 메모리를 "요청"하고 완료되면이를 반환 할 수 있기를 원합니다.
또한 장치간에 고정 된 방식으로 I / O 장치를 나누고 싶지 않습니다. 일반적으로 메모리와 같은 일부 또는 모든 하드웨어가 공유 리소스가되거나 특정 시간에 특정 프로세스에 대해 일시적으로 독점적으로 사용되기를 원합니다. 이를 위해서는 모든 프로세스가 자체적으로 I / O를 시도하지 않고 I / O를 예약하고 조정하기 위해 무언가를 "통과"해야합니다. 대부분의 I / O가 CPU보다 훨씬 느리기 때문에 스케줄링이 중요하므로 단일 코어 시스템에서도 I / O를 기다리는 동안 CPU가 다른 프로세스에 대해 작동하도록 할 수 있습니다.
위의 작업을 올바르게하려면 몇 가지 CPU 하드웨어 기능을 활용해야합니다. 이 중 하나는 MMU이고 다른 하나는 보호 모드입니다. 두 개의 OS가 두 개 이상의 OS를 실행하기 위해 이러한 하드웨어 기능을 협력 적으로 공유 할 수 있습니까?
물론, 하나의 OS가 다른 OS 메모리 전체에서 스톰 핑하는 것을 막을 수있는 하드웨어는 없습니다. CPU가 커널 모드 인 경우 ( 하나의 커널 모드 만 있음) 모든 코드는 무엇이든 할 수 있습니다. 한 OS의 코드가 다른 OS의 코드 또는 데이터를 실행하는 것이 100 % 가능합니다. 우리는 과거에 운영 체제에 취약점이 있었고 앞으로 더 많은 기능을 보유 할 것임을 알고 있습니다. 따라서 보안이 매우 나쁩니다.
이제 이것 위에 또 다른 "계층"을 배치하고 여러 OS에 대해 하드웨어 지원이 필요한 경우 멋지지 않습니까? 이것이 바로 하드웨어 가상화 기능이하는 일이며, 실행중인 여러 OS간에 하드웨어 장벽을두고 하이퍼 바이저라고하는 최상위 "인터페이스"가 있습니다. 하나의 하이퍼 바이저 만 가질 수 있습니다. 그리고 네, 어느 OS에서든 실행되는 프로세스는 I / O를 수행하기 위해 3 개의 계층을 거쳐야합니다 (프로세스-로컬 커널-하이퍼 바이저)