가상메모리 공간은 특별한 이유가 없다면, 32bit 크기의 저장할 수 있는 메모리 크기를 갖게된다. 이때 VMS는 4GB다. 유저와 커널은 각각 2GB씩 할당 받게 된다. 위의 그림에서 나오는 프로세스(VMS)는 유저(2GB)를 뜻한다.
데이터:
*Stack
*Heap
*정적:
Read / Write
Read
데이터 영역에서 특별한 이유가 없다면 RW기능만 된다. 코드영역은 RX(Read/Execute) 가 된다. 정적영역에서 읽고 쓰기가RW) 다 되는 영역은 전역변수다. 정적 영역 중 읽기만 되는 부분 영역은 코드 영역에 섞여 들어간다.
프로그램 코드로 코드 / 데이터와 같은 각종 영역에 RWX에 대한 권한을 변경할 수 있다. 메모리를 다룰 때 DEP라는 개념을 잘 이해해야한다.
DEP(Data Execution Prevention)는 바이러스 및 기타 보안 위협으로 인한 컴퓨터 손상을 방지하는 데 도움이 되는 보안 기능이다.
DEP는 프로그램이 시스템 메모리를 안전하게 사용하는지 모니터링함으로써 컴퓨터를 보호할 수 있다. DEP가 컴퓨터에서 메모리를 잘못 사용하는 프로그램을 탐지할 경우 프로그램을 닫고 사용자에게 알려준다.
페이지 테이블에는 권한 비트가 존재하여, 가상메모리가 실제 메모리에 접근 하기 전에 실행
내용을 체크해서 page fault를 일으킬 수 있다.