2014 윈도우 메모리구조
TRANSCRIPT
1
박동진2014.2.2
윈도우 메모리구조
Windows Memory Architecture
2
1.가상주소공간 과 가상메모리
2.MMU 와 메모리사용
3.페이징 , 힙 , 메모리 맵
4.부록
목차
3
☞32 비트는 4GB ,64 비트는 4GB 의 제곱 16 엑사바이트
1. Virtual Address Space( 가상주소공간 )
4GB
커널영역에 접근하지 못하게
막는 구역
사용자영역으로써 2GB의크기를 가진다
프로세스가 소유하고 있는 메모리에 대해서만 접근이 가능
운영체제 자체가 소유하고 있는 메모리 는 숨겨저있다
프로세스 A 와 B 가 같은 주소에 쓰기가능
4
1-2 region 과 page
Region64KB
Region 은 메모리 단위로써 x32 x64 모두 64KB 크기이다
페이지는 최소단위로써 마찬가지로 4KB 의 크기를 가지고있다
한 개의 리젼에서 16개의 페이지가 존재
10KB 할당이 필요하면 페이지 3
개를 할당
5
1-3 가상주소 상태와 함수
reserve
가상주소의 영역을 예약
사용중인것으로 간주
플래그를 reserve 로 지정
Commited
예약된걸 R/W 위핸 작업
매핑된다
플래그를 commit으로 지정
Release,Free
더 이상 필요없을떄주소공간및 영역을
반환
Commit-> reserveReserve-> free
VirtualAlloc() VirtualAlloc() VirtualFree()
6
가상메모리(
페이징파일 )
물리메모리
MMU
☞CPU 가 가상메모리를 사용할떄마다 MMU 에 요청☞ 같은 물리주소로 다른주소에 접근이 가능☞ 부하를 줄이기위해 처리단위를 생성 -> 블록 , 페이지
2-1. MMU(Memory Management Unit)
CPU가상 주소 공간의 가상 주소는 MMU 에 의해서 물리 주소로 변환된다 (매핑 )
프로그래머는 가상 주소 공간상에서 데이터가 주메모리상에 어떻게 존재하는지를 의식할 필요가 없어진다
화살표가 앞서말한 MMU 같은곳은 DLL 같은공유자원 페이지테이블은 메인메모리에존재 PFN 은 페이지 프레임 번호 프레임은 가상주소가
물리메모리에 위치한 곳 ( 번호로 표현한다 )
MMU 가 주소를 찾을수없을떄 페이지폴트 (Page Fault) 라고함 즉 가상주소에는 존재하나 물리주소에는 없을떄
2-2 가상메모리 실제메모리 사용
Thrashing( 쓰래싱 )
가상메모리 -> 페이지 테이블 -> 물리적 메모리 순으로 매핑된다
가상메모리가 메모리영역이 커서 효율적이긴 하지만 자꾸 쓰면 쓰수록 페이징과 매핑에 부히가 발생하기때문에 오히려 능률이 저하 버벅임 , 랙 발생
3. 페이징 , 힙 , 메모리 맵
8
• 물리 메모리에서 사용되지 않고 있는 메모리 영역이 하드 드라이브에 일시적으로 저장되는것
• 스왑파일과 같은말 , 쓰래딩 위험이 높다 .페이징
• 커널 힙오브젝트 사용 기본 1MB 사이즈• 작은 데이터를 쓸때 유용 페이지단위 할당 불필요• 일반적동적할당과 같으나 그에 사용되는 힙을 직접컨트롤힙
• 하드에 저장된 파일을 직접 물리메모리에 매핑하는것• EXE,DLL 이 이에포함된다• 대용량 파일을 부분또는 한번에 읽고 포인터로 사용• IPC 내부에서 사용 같은 다수의 프로세스가 한파일에 접근가능
메모리 맵
9
부록 - 메모리 계층 구조
10
부록 - 프로그램 메모리 구조
11
감사합니다 .