Project 3: Virtual Memory

Virtual memory management

주소 공간Address Space과 메모리 가상화

<aside> 💡 각 프로세스들은 자신만의 독립적이고 개별적인 주소 공간이 필요하다.

</aside>

왜 필요한가?

여러 프로세스들이 같은 물리 메모리를 공유하는 시분할 시스템에서, 각 프로세스가 다른 프로세스의 메모리 영역을 침범하지 않도록 메모리를 보호Protect하기 위해서이다.

어떻게 각 프로세스가 개별적인 주소 공간을 가진다고 믿게 할 것인가?

메모리를 가상화 할 것이다. 각 프로세스들은 서로 자신만의 독립적인 주소 공간을 가지면서 오로지 자신만이 실제 메모리를 독차지하고 있다고 생각한다.

운영체제가 할 일은 각 프로세스들의 가상 메모리 주소와 실제 물리 메모리 주소를 연결해 주는 것, 즉 주소 변환이다. 이 때 보통 하드웨어의 도움을 받는다.

가상 메모리 시스템의 목표

투명성 Transparency

실행 중인 프로그램은 가상 메모리의 존재를 몰라야 한다. 자신이 모든 물리 메모리를 소유했다고 착각해야 한다. 이를 위해 운영체제와 하드웨어가 작동해야 한다.

효율성 Efficiency

시간과 공간 측면에서 메모리 가상화가 효율적이어야 한다. 시간적으로 물리 메모리에 접근 시 너무 느려서는 안 되므로 하드웨어의 도움(TLB 등)을 받는다.

보호 Protection

프로세스는 어떤 방법으로든 다른 프로세스나 운영체제의 메모리 내용에 접근하거나 영향을 주어서는 안 된다. 즉 프로세스들은 서로 격리Isolate 되어야 한다.

Q. Virtual Memory와 Virtual Address Space의 차이는(참조)?

A. Virtual memory는 서로 다른 소스에서 온 메모리라도 프로세스 입장에서 보았을 때 그냥 차이가 없는 똑같은 메모리로 취급한다는 개념이다. 프로세스는 Virtual Memory로 인해 자신의 메모리가 디스크에서 왔건, 네트워크에서 왔건, RAM에서 왔건 동일한 메모리로 취급하여 작업할 수 있게 된다.