관리 메뉴

FU11M00N

가상 메모리(VAS) 본문

Forensic

가상 메모리(VAS)

호IT 2020. 4. 20. 18:13

1. Virtual Address Space (VAS)?

가상 메모리는 메모리를 관리하는 방법의 하나입니다.
각 프로그램의 프로세스들은 실제 메모리 주소가 아닌 가상 메모리주소를 할당하는 방식입니다.
멀티태스킹 운영 체제 ex) windows 에서 자주 사용됩니다.
실제 RAM의 메모리 영역보다 크게 사용가능합니다.

 

2. 메모리의 이해

  • VAS는 실제 Physical Memory를 mapping한 가상 주소를 사용하는 것으로 Physical Memory 한계를 극복할 수 있고 OS가 메모리 접근을 관리하여 Memory Protection을 가능하게 합니다.
  • Windows는 VAS를 Physical Memory와 mapping하기 위하여 page table 을 사용하며 Physical Memory에 저장할 수 없는 Memory 정보는 page file로 저장하게 된다. (이것을 페이징 이라고 말합니다.)
  • Process의 메모리 공간은 공유되지 않는 한 다른 Process가 접근하지 못 합니다.
  • 32bit 환경에서는 최대 VAS는 4GB이고 64bit 환경에서는 2의 64bit 만큼 의 VAS를 가질 수 있습니다.
  • 4GB 넘어가면 메모리에서 접근이 불가능합니다.
  • 페이지 파일의 형태는 히든 파일 형태입니다.
  • 가상 메모리를 사용하면 사용자 프로그램이 물리 메모리보다 커져도 됩니다.
  • 메모리는 유저가 접근가능한 유저 메모리 영역과 커널이 관리하는 커널 메모리가 있습니다. 
  • 리눅스는 커널 구역이 1GB 유저는 3GB (32비트 기준)
  • 윈도우즈는 커널구역이 2GB 유저는 2GB (32비트 기준) 

사진 1-1

 

사진 1-2

사진 1-2는 가상 메모리주소와 물리 메모리주소가 매핑이되는 과정 입니다.

 

 

사진 1-3

PEN은 Page Frame Number를 의미합니다.

 

page table의 일부 = page table entry(4byte) = 실제물리적주소가 저장합니다.

 

P는 Present(페이지 존재여부)를 의미합니다.



 VAS(4GB, 2^32)의 0번 페이지의 실제주소는 0X0005000 입니다.


4번째가 0이므로 페이지주소가 0이고 오프셋 값은 100이됩니다.

 0X0100은 뒤에 3개 지우고 페이지넘버 0의 페이지주소를 찾아갑니다.


 4K(4096, 0X1000)는 물리주소.에 OFFSET 0X100해서 0X1100을 접근합니다. 

페이지테이블은 메모리의 일부에 존재하고, vas실제로 존재하는 것은 아닙니다. 

접근한 메모리가 0x1100이면 4k씩 끊기에 페이지테이블의 1번테이블로 가서  거기에 있는 주소로 찾아가서 0x1100에서 16진수 천의자리를 뺀 0x0100을 offset값으로 사용합니다.


 커널은 실제(물리)메모리의 빈 곳을 하나 할당받아 페이지테이블에 적제된 페이지를 기록하는 하고 다시접근하게 하는 것을 demand(요청) paging 이라고 합니다.


페이지하나는 2의 20승입니다.

페이지폴트란?  페이지가 물리주소에 할당되어있지 않아 발생하는 것 입니다.

 

 

 

 

 I386 페이징 기법 32bit

 


 


1. 페이지 디렉토리는 각 테스크마다 하나씩 할당되며 10bit를 가지므로 1,024개의 엔트리를 갖습니다.

2.페이지 디렉토리의 각 엔트리는 하나의 페이지 테이블를 가리킵니다.

3. 각 엔트리는 32bit 주소를 가리키기 위한 4byte 위드 크기를 가지므로 페이지 디렉토리 하나의 크기는 4KB입니다.

4. 하나의 테스크는 최대 1,024개의 페이지 테이블을 가질 수 있습니다.

5. 각 페이지 테이블 엔트리는 물리 메모리의 페이지 프레임 주소 정보를 가지고 있습니다.

6. 테스크가 생성된다고 무조건 1,024개의 페이지 테이블이 만들어지지 않으며 사용하지 않는 영역에 대해서는 페이지 테이블을 생성하지 않습니다.

7. 하나의 페이지 테이블 크기는 10bit로서 4KB이고 1,024개의 엔트리를 가집니다.





Comments