3. ☞32비트는 4GB ,64비트는 4GB의 제곱 16엑사바이트
1. Virtual Address Space(가상주소공간)
3
4GB
커널영역에 접근하
지 못하게 막는 구역
사용자영역으
로써 2GB의크
기를 가진다
4. 1-2 region 과 page
4
Region은 메모리 단위로써 x32
x64모두 64KB 크기이다
페이지는 최소단위로써 마찬가지로
4KB의 크기를 가지고있다
5. 1-3 가상주소 상태와 함수
5
가상주소의 영역을 예약
사용중인것으로 간주
플래그를 reserve로 지정
예약된걸 R/W 위핸 작업
매핑된다
플래그를 commit으로 지
정
더 이상 필요없을떄
주소공간및 영역을 반환
Commit-> reserve
Reserve-> free
6. 가상메모
리
(페이징파
일)
물리메모리
MMU
☞CPU가 가상메모리를 사용할떄마다 MMU에 요청
☞ 같은 물리주소로 다른주소에 접근이 가능
☞ 부하를 줄이기위해 처리단위를 생성->블록,페이지
2-1. MMU(Memory Management Unit)
6
CPU
가상 주소 공간의 가상 주소
는 MMU에 의해서 물리 주
소로 변환된다 (매핑)
프로그래머는 가상 주소 공
간상에서 데이터가 주메모
리상에 어떻게 존재하는지
를 의식할 필요가 없어진다
7. 화살표가 앞서말한 MMU
같은곳은 DLL 같은공유자원
페이지테이블은 메인메모리에존재
PFN은 페이지 프레임 번호
프레임은 가상주소가 물리메모리
에 위치한 곳(번호로 표현한다)
MMU가 주소를 찾을수없을떄 페
이지폴트(Page Fault)라고함 즉 가
상주소에는 존재하나 물리주소에는
없을떄
2-2 가상메모리 실제메모리 사용
Thrashing
(쓰래싱)
8. 3. 페이징, 힙, 메모리 맵
8
• 물리 메모리에서 사용되지 않고 있는 메모리 영역이 하드 드라
이브에 일시적으로 저장되는것
• 스왑파일과 같은말, 쓰래딩 위험이 높다.페이징
• 커널 힙오브젝트 사용 기본1MB 사이즈
• 작은 데이터를 쓸때 유용 페이지단위 할당 불필요
• 일반적동적할당과 같으나 그에 사용되는 힙을 직접컨트롤힙
• 하드에 저장된 파일을 직접 물리메모리에 매핑하는것
• EXE,DLL 이 이에포함된다
• 대용량 파일을 부분또는 한번에 읽고 포인터로 사용
• IPC내부에서 사용 같은 다수의 프로세스가 한파일에 접근가능
메모리 맵
16비트 시절의 윈도우 OS는 메모리 구조가 상당히 위험했다
커널과 사용자가 같은 메모리를 참조하기때문에 언제든지 커널이 손상되거나
오류나 발생할수있었다
그래서 MS는 프로세스별로 독립된 가상주소공간이라는 메모리를 할당했다
어플리케이션이 사용가능한 최대주소공간
이 가장주소공간은 영역이 분할되어있으며 이를 파티션이라 한다 크게 유저,커널 파티션이 각각2GB씩 차지하고있다
//the 8-TB user-mode partition looks greatly out of proportion to the 16,777,208-
TB kernel-mode partition.
반면, 리눅스에서는 각 응용프로그램이 4GB의 가상 주고 공간을 갖는 것은 같지만, 3GB의 사용자공간과 1GB의 커널공간을 갖게 된다. 커널 공간은 모든 프로세스들이 공유하게 된다.
1. VirtualProtect / VirtualProtectEx : 메모리 페이지의 접근 등급을 변경하는API
2. VirtualLock / VirtualUnlock : 특정 영역을 잠근다. 특정영역에 대한 사용을 중지 시키는 API
3. VirtualQuery / VirtualQueryEx : 특정 영역의 메모리 정보를 얻는 API. 메모리 영역의 접근 등급, 상태 등을 구조체 MEMORY_BASIC_INFORMATION 를 통하여 알 수 있다.
페이지 테이블(Page Table)은 프로세스의 페이지 정보를 저장하고 있으며, 하나의 프로세스는 하나의 페이지 테이블을 가진다. 테이블은 다음과 같이 색인과 내용으로 구성되어 있다.색인 : 페이지 번호.내용 : 해당 페이지에 할당된 물리 메모리(프레임)의 시작 주소. 이 시작 주소와 페이지 주소를 결합하여 물리 메모리 주소를 알 수 있다.페이지 테이블 엔트리(Page Table Entry, PTE) : 페이지 테이블의 레코드
l 메모리 맵 파일의 용도 및 특징
A. EXE 파일과 DLL 파일을 로드하여 프로세스를 실행할 때 시스템에 의해 사용한다.
B. 대용량의 가상 메모리 영역 할당 또는 대용량 파일의 처리에 적합하다.
C. 파일의 입출력 또는 버퍼 관리 등을 하지 않고 데이터 파일의 참조가 가능하다.
D. 동일한 메모리 맵 파일을 이용하여 프로세스간 데이터를 공유가 가능하다.