본문 바로가기
Computer Architecture/Virtual Address & Cache

Virtual Memory(가상 메모리)는 무엇이고 왜 사용되는가?

by FastBench 2024. 10. 23.
반응형

- 가상 메모리 시리즈 모아 보기-

https://microelectronics.tistory.com/99

 

Physical Memory와 관련된 세 가지 문제


현대 컴퓨터 시스템에서는 가상 메모리를 통해 여러 프로그램이 한정된 물리 메모리를 효과적으로 사용할 수 있다.

그런데 가상 메모리 도입 이전에는 프로그램 실행 중에 발생할 수 있는 여러 가지 문제가 있었다.

 

이번 게시글을 통해 가상메모리를 사용하지 않을 경우 발생할 문제와 이를 가상메모리로 어떻게 극복하는지에 대해 알아보자.

1. 메모리 부족 문제

물리 메모리가 부족한 경우, 프로그램이 실제 메모리를 초과하여 액세스하려 할 때를 생각해보자.

예를 들어, 컴퓨터에 1GB의 물리 메모리만 있는 상황에서 4GB를 사용하는 프로그램을 실행하면 메모리 부족으로 프로그램이 충돌할 수 있다.

 

2. 메모리 단편화 문제 (Memory fragmentation)

여러 프로그램이 메모리를 공유하는 환경에서는 프로그램이 실행되었다가 종료될 때 메모리의 사용 가능한 공간에 '구멍'이 생길 수 있다.

이러한 메모리 단편화는 새로운 프로그램이 실행될 때 연속된 메모리 공간을 확보하지 못하는 문제를 야기한다. 즉, 물리적으로 메모리가 충분히 남아 있어도, 단편화로 인해 프로그램이 실행되지 않는 상황이 발생할 수 있다.

3. 보안 문제

여러 프로그램이 동일한 메모리 주소 공간을 공유하면 서로의 데이터를 덮어쓰는 일이 생길 수 있다.

두 프로그램이 동일한 메모리 주소를 액세스하려고 할 때, 한 프로그램이 다른 프로그램의 중요한 데이터를 덮어쓰면 데이터 손상이나 프로그램 충돌이 발생할 수 있다.

이는 보안상의 큰 문제로, 프로그램 간 데이터의 무결성을 보장할 수 없다.

 

반응형

가상 메모리로 문제 해결

가상 메모리가 없는 경우, 프로그램이 사용하는 주소는 실제 RAM 주소와 동일하다.

예를 들어, 프로그램이 주소 1024를 참조하면 실제 RAM의 1024번 주소를 직접 참조하게 된다. 만약 컴퓨터에 1GB의 RAM만 설치되어 있다면, 프로그램이 그 이상의 주소를 참조할 경우 시스템이 충돌하게 된다.

가상 메모리는 각 프로그램에 독립적인 가상 주소 공간을 제공하여 이러한 문제를 해결한다.

구체적으로  가상 메모리는 간접 참조(indirection)를 이용하여 프로그램 주소 공간과 실제 메모리 주소 공간 사이에 간접적인 연결을 제공하는 개념이다.  이러한 물리 메모리와 가상 메모리 간의 매핑을 통해, 물리 메모리 부족 문제를 해결할 수 있고, 단편화나 보안 문제를 예방할 수 있다.  

1. 메모리 부족 문제 해결

위에서 말했듯, 가상 메모리는 이 문제를 해결하기 위해 프로그램 주소를 물리 메모리 주소로 매핑하는 맵을 제공한다. 이를 통해 프로그램의 주소가 실제로 어떤 물리 메모리 주소에 대응할지를 결정할 수 있다.

예를 들어, 프로그램이 주소 0을 참조하면 실제로는 RAM의 다른 주소에 매핑될 수 있으며, 심지어 데이터가 메모리에 없을 경우 디스크에 저장된 데이터를 가져와 사용할 수 있게 된다.

이 방식은 물리 메모리가 부족한 상황에서 디스크를 이용해 가상의 무제한 메모리 공간을 제공하는 상황도 만들어낸다.

물론 가상메모리는 디스크를 메모리로 사용하는 상황에서 성능 저하를 일으킬 수 있다. 디스크 접근은 메모리 접근보다 훨씬 느리기 때문에, 데이터가 디스크에 저장되면 프로그램의 성능이 심각하게 저하될 수 있다.

2. 메모리 단편화 문제 해결

가상 메모리는 메모리 단편화 문제도 해결할 수 있다. 각 프로그램의 메모리 맵을 사용하여, 물리 메모리의 어느 위치에든 프로그램 데이터를 저장할 수 있다. 이를 통해 메모리의 "구멍"을 채우고 더 효율적으로 메모리를 사용할 수 있게 한다.

3. 보안 문제 해결

가상 메모리는 프로그램 간 메모리 충돌 문제도 해결한다. 각 프로그램에 독립적인 메모리 맵을 제공하여, 같은 주소를 참조하더라도 실제로는 다른 물리 메모리 주소를 참조하도록 한다. 이를 통해 프로그램 간의 데이터를 보호할 수 있다.

(이는 각 프로그램이 격리된다는 의미이므로, 기본적인 메모리 접근 방식으로는 각 프로그램끼리 데이터를 공유할 수 없다는 단점이 존재한다.)

 

결론

결론적으로 가상 메모리는 프로그램마다 독립된 메모리 공간을 제공함으로써 메모리 부족, 단편화, 보안 문제를 해결할 수 있다.

 

Reference

반응형

댓글