# CPU 가상화 마무리 대화

> **교수:** 자, 이제 CPU 가상화에 대해 얼마나 배웠는지 알아볼까?

**학생:** (교수의 의도를 간파하며) 교수님은 제가 "예"라고 대답하기를 원하시는 것 같네요.

> **교수:** (웃으며) 그건 사실이지만, 진심으로 궁금하기도 하다. 그럼, 나에게 쉴 틈을 좀 주지 않겠나?

**학생:** 네, 물론입니다. 제가 배운 내용을 말씀드릴게요. 우선 CPU 가상화 방법에 대해 알게 되었고, 트랩, 인터럽트, 프로세스 전환 등 중요한 기법들을 이해하게 되었어요.

> **교수:** 좋아, 잘 알았네!

**학생:** 하지만 이 모든 상호작용은 다소 복잡해 보이네요. 어떻게 더 자세히 알 수 있을까요?

> **교수:** 좋은 질문이야. 실제로 해보는 것만큼 좋은 방법은 없지. 단순히 책만 읽는 것보다 직접 프로젝트를 해보면 훨씬 더 많이 이해할 수 있을거야.

**학생:** 네, 그럴 것 같아요. 그런데 운영체제의 철학에 대해서는 어떻게 생각하시나요?

**학생:** 운영체제는 꽤 편집증적인 성향을 가지고 있는 것 같아요. 컴퓨터를 장악하고 싶어하는 의도가 느껴지고, 프로그램의 효율적인 실행을 원하면서도 악성 프로세스를 막고 싶어하는 모습이 보이죠. 마치 편집증 환자가 승리한 것 같아요. 그래서 우리는 운영체제를 자원 관리자라고 부르는 것 같습니다.

> **교수:** 그렇게 말할 수도 있겠군. 자네는 이제 정리를 시작하는 것 같아 보이는데, 매우 좋아!

**학생:** 감사합니다. 그럼 정책에 대해서는 어떻게 생각하시나요?

**학생:** 스케줄링 정책은 이해하기 쉬웠지만, 동시에 SJF와 RR처럼 동작하는 스케줄러를 구축하는 것은 어려울 것 같아요. MLFQ는 꽤 깔끔했지만, 실제로 구현하는 것은 쉽지 않을 것 같습니다.

> **교수:** 사실이야. 어떤 스케줄러를 사용해야 하는지에 대한 논란은 오늘날까지 이어지고 있다네. 예를 들어, Linux의 CFS, BFS와 O(1) 스케줄러 사이의 다툼을 한 번 보게.

**학생:** 정말 정답이 있는 건가요?

> **교수:** 아마 없을 것 같아. 결국, 평가 기준마다 결과가 달라질 수 있거든. 스케줄러가 반환 시간이 좋으면 응답 시간이 나쁘고, 그 반대도 참이지. Lampson이 말했듯이 아마도 목표는 최선의 해결책을 찾는 것이 아니라 사고를 피하는 것이지.

**학생:** 그건 조금 우울하네요.

> **교수:** 공학은 원래 그런거야. 하지만 실용적인 관점에서 생각하면 모든 문제가 깔끔하고 쉬운 해결책을 가지는 것은 아니지.

**학생:** 스케줄러를 의도대로 움직이게 하는 개념이 정말 맘에 들었어요. 다음에 제가 Amazon의 EC2에서 작업할 때 조사해 볼 무언가가 있을 것 같습니다.

> **교수:** (웃으며) 내가 괴물을 만들어 낸 것 같네!

**학생:** 하지만 원래 그런 의도 아니셨습니까? 우리가 흥미를 느껴서 스스로 조사하게 만드는 것?

> **교수:** 그렇게 생각하지만, 그게 효과가 있을 줄은 몰랐지!

**흥미진진한 대화는 끝났지만, 학생의 탐구는 계속된다. 과연 그는 CPU 가상화의 비밀을 완전히 밝혀낼 수 있을까?**

```{tableofcontents}

```
