* 해당 글은 윤성우의 뇌를 자극하는 윈도우즈 시스템 프로그래밍 도서를 읽고 정리한 글입니다
https://product.kyobobook.co.kr/detail/S000001223395
뇌를 자극하는 윈도우즈 시스템 프로그래밍 | 윤성우 - 교보문고
뇌를 자극하는 윈도우즈 시스템 프로그래밍 |
product.kyobobook.co.kr
[지금 무료]뇌를 자극하는 윈도우즈 시스템 프로그래밍 강의 | 한빛미디어 - 인프런
한빛미디어 | , [사진] 1. 강좌 소개 한빛미디어(주) 에서 발간한 '뇌를 자극하는 윈도우즈 시스템 프로그래밍' 의 저자 윤성우 님이 직접 강의하는 온라인 강좌입니다. 이미 여러 저서와 온라인
www.inflearn.com
* Windows 시스템에서 부여할 수 있도록 정의한 페이지의 상태
(1) Reserve - 예약
(2) Commit - 할당
(3) Free - 할당되지 않았음
예약을 했을 뿐 할당이 완료된 상태가 아니므로 물리 메모리에 할당되지는 않는다
Reserve 상태에 있는 메모리 중에서 일부만 COMMIT 상태로 변경하는 것도 가능하다
ㄴ 따라서,
메모리의 사용량이 늘어남에 따라서 점진적으로 Commit 상태의 페이지 개수를 증가시킬 수 있다
정말 필요한 만큼의 페이지만 물리 메모리에 할당하는 것이 가능하다
* 페이지의 개수 = 가상 메모리의 크기 / 페이지 하나당 크기
* 가상 메모리 시스템은 페이지 단위로 관리된다
페이지의 중간 위치에서부터 할당을 시작할 수 없으며, 페이지 크기의 배수 단위로 할당 해야 한다
* 메모리 할당의 시작 주소가 될 수 있는 기본 단위를 가리켜 'Allocation Granularity Boundary'라고 한다

* VirtualAlloc 함수 - Reserve와 Commit 상태로 만듦, VirtualFree 함수 - Free 상태로 만듦
https://learn.microsoft.com/ko-kr/windows/win32/api/memoryapi/nf-memoryapi-virtualalloc
VirtualAlloc 함수(memoryapi.h) - Win32 apps
호출 프로세스의 가상 주소 공간에서 페이지 영역의 상태를 예약, 커밋 또는 변경합니다. (VirtualAlloc)
learn.microsoft.com
https://learn.microsoft.com/ko-kr/windows/win32/api/memoryapi/nf-memoryapi-virtualfree
VirtualFree 함수(memoryapi.h) - Win32 apps
호출 프로세스의 가상 주소 공간 내에서 페이지 영역을 해제, 커밋 해제 또는 해제합니다.
learn.microsoft.com
* 디폴트 힙(Default Heap, 프로세스 힙, Process Heap)
디폴트 힙의 기본 크기는 1MB이나 링커(Linker) 옵션을 통해서 변경 가능
* Windows 시스템 힙(Dynamic Heap) 장점
(1) 메모리 단편화의 최소화에 따른 성능 향상
(2) 동기화 문제에서 자유로워짐으로 인한 성능 향상
https://learn.microsoft.com/ko-kr/windows/win32/api/heapapi/nf-heapapi-heapcreate
HeapCreate 함수(heapapi.h) - Win32 apps
호출 프로세스에서 사용할 수 있는 프라이빗 힙 개체를 만듭니다. 함수는 프로세스의 가상 주소 공간에 공간을 예약하고 이 블록의 지정된 초기 부분에 대한 물리적 스토리지를 할당합니다.
learn.microsoft.com
https://learn.microsoft.com/ko-kr/windows/win32/api/heapapi/nf-heapapi-heapalloc
HeapAlloc 함수(heapapi.h) - Win32 apps
힙에서 메모리 블록을 할당합니다. 할당된 메모리는 움직일 수 없습니다.
learn.microsoft.com
https://learn.microsoft.com/ko-kr/windows/win32/api/heapapi/nf-heapapi-heapfree
HeapFree 함수(heapapi.h) - Win32 apps
HeapAlloc 또는 HeapReAlloc 함수에 의해 힙에서 할당된 메모리 블록을 해제합니다.
learn.microsoft.com
* MMF(Memory Mapped File)
File을 Memory에 Mapping(연결)시킨다는 의미
ㄴ 장점
(1) 프로그래밍하기 편하다
(2) 성능이 향상된다
https://learn.microsoft.com/ko-kr/windows/win32/api/winbase/nf-winbase-createfilemappinga
CreateFileMappingA 함수(winbase.h) - Win32 apps
지정된 파일에 대한 명명되거나 명명되지 않은 파일 매핑 개체를 만들거나 엽니다. (CreateFileMappingA)
learn.microsoft.com
https://learn.microsoft.com/ko-kr/windows/win32/api/memoryapi/nf-memoryapi-mapviewoffile
MapViewOfFile 함수(memoryapi.h) - Win32 apps
호출 프로세스의 주소 공간에 파일 매핑 보기를 매핑합니다.
learn.microsoft.com
https://learn.microsoft.com/ko-kr/windows/win32/api/memoryapi/nf-memoryapi-unmapviewoffile
UnmapViewOfFile 함수(memoryapi.h) - Win32 apps
호출 프로세스의 주소 공간에서 파일의 매핑된 보기를 매핑 해제합니다.
learn.microsoft.com
https://learn.microsoft.com/ko-kr/windows/win32/api/memoryapi/nf-memoryapi-flushviewoffile
FlushViewOfFile 함수(memoryapi.h) - Win32 apps
파일의 매핑된 보기 내에서 바이트 범위를 디스크에 씁니다.
learn.microsoft.com
* Copy On Write(COW)
write 할 때 copy 하라
'IT공부 > IT서적' 카테고리의 다른 글
[윤성우 열혈 C++프로그래밍] 어셈블리 코드 - Chapter1, Chapter2 (0) | 2025.03.22 |
---|---|
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 21장. Dynamic Linking Library (0) | 2025.03.12 |
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 19장. 비동기 I/O와 APC (0) | 2025.03.01 |
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 18장. 파일 I/O와 디렉터리 컨트롤 (0) | 2025.02.27 |
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 17장. 구조적 예외처리(SEH) 기법 (0) | 2025.02.25 |