< 프로세스를 물리 메모리에 바로 매핑할 경우 발생하는 문제점 >
1. Not enough memory
- 아키텍쳐가 지원하는 메모리 크기 보다 물리 메모리가 클 때
32비트 아키텍쳐의 경우 최대로 표현할 수 있는 주소의 용량이 4GB인데 RAM의 크기가 4GB를 넘어갈 경우 넘어서는 용량에 대해선 addressing이 불가능하다. - 아키텍쳐가 지원하는 메모리 크기 보다 물리 메모리가 작을 때
반대로 물리 메모리의 크기가 2GB로 작다고 하면, 아키텍쳐가 표현하고자 하는 값을 메모리가 충족시키지 못한다. 만약 물리 메모리 크기를 넘어서는 주소 값에 접근을 시도할 경우 충돌이 발생할 수 있다.
2. Keeping program secure
실행 중인 프로그램이 동일한 물리 메모리 주소에 접근하여 데이터를 읽고 쓰는 경우, 다른 프로세스들이 사용하는 메모리에 접근을 하여 정보가 노출되거나 데이터 오염등의 문제가 발생할 수 있다.
3. Holes in memory
실행 중인 프로그램이 동일한 메모리 공간을 사용하면 메모리 단편화로 인해 로드가 불가능해 질 수 있다.
(메모리 단편화: 메모리 공간이 여러 조각으로 나뉘어져 사용가능한 메모리가 충분히 있음에도 할당받지 못하는 상태)
VAS(Virtual Address Space)
프로세스와 물리 메모리 사이에 가상의 주소 공간을 부여하여 프로세스가 독립적이고 베타적으로 실행되게 함
- 프로세스가 사용하는 가상주소 공간과 실제 물리 주소 공간의 매핑은 OS가 관리한다.
- mapping 정보는 프로세스 별로 Mapping Table에 저장한다.
- 프로세스는 물리 메모리 주소 공간을 바라볼 수 없고 직접 접근이 불가능하다.
- VAS는 겹쳐도 상관이 없다. (실제 물리 메모리는 다르기 때문)
- 사실상 VAS는 실체하지 않고 그냥 Mapping Table 정보만 존재한다고 볼 수 있다.
+ Page file
물리 메모리 자체가 모든 프로세스를 관리할 수 없으며 적재되어 있는 모든 프로세스가 유효하지 않을 수 있다. 예를 들어 5-6시간 동안 사용하지 않는 브라우저 창을 여러 개 띄어놓는 경우 불필요한 메모리 공간을 낭비하게 된다. 공간 및 사용의 효율성을 위해 page file이란 것을 같이 사용하게 되는데, 이는 물리 메모리에서 오랫동안 access 되지 않은 프로세스들을 storage의 page file에 보내고 이를 공유하여 메모리처럼 사용하는 것이다.
(VAS가 사용하는 공간 -> 물리 주소 + page fie 용량으로 확장되는 것)
'KISA > KISA - 리버스 코드 엔지니어링' 카테고리의 다른 글
01. 실행파일의 생성 및 실행과정 (1) | 2024.11.15 |
---|