요약
- CPU 가상화는 성능저하, 제어 문제를 갖고 있음
- 제한적 직접 실행은 커널과 사용자 모드를 분리해 이러한 문제를 해결한다.
본문
- CPU 가상화의 문제
- 성능 저하: 시스템에 과중한 오버헤드를 주지않으면서 가상화를 구현할 수 있는가?
- 제어 문제: CPU에 대한 통제를 유지하면서 프로세스를 효율적으로 실행있는가?
- 제한적 직접 실행(LDE, Limited Direct Execution)
- 직접 실행: 프로그램을 CPU 상에서 그냥 직접 실행시킴
- 운영체제가 원치않는 일을 하지 않는다는 것을 어떻게 보장하는가?
- 실행 중단 후 다른 프로세스로의 전환(시분할)을 어떻게 구현하는가?
- 직접실행의 장점은 "빠르게 실행"
- 하지만 직접 실행시킬 경우, 프로그램이 너무 많은 권한을 가짐(ex 모든 파일 시스템 접근)
- 사용자 모드, 커널 모드 분리를 통해 해결함
- 사용자 모드에서는 시스템 콜을 이용해 모드로 변경해 특권을 가질 수 있음
- trap, return-from-trap
- trap은 명령어로, 커널 안으로 분기하는 동시에 특권 수준을 커널모드로 상향 조절한다.
- return-from-trap은 다시 사용자 모드로 전환
- system call 호출시 내부적으로 trap으로 전환 후 작업 종료후 return-from-trap
- 직접 실행: 프로그램을 CPU 상에서 그냥 직접 실행시킴
참고
https://pages.cs.wisc.edu/~remzi/OSTEP/Korean/06-cpu-mechanisms.pdf