본문 바로가기

프로그래밍/c++20

dll과 메모리 맵 파일(memory-mapped file)의 관계. dll과 메모리 맵 파일(memory-mapped file)의 관계. 메모리 맵 파일, 혹은 메모리 맵드 파일 영어명칭 memory-mapped file.. 이것은 크게 3가지의 목적으로 사용 된다고 한다. 1. exe 나 dll 등의 파일을 읽고 수행하기위해 메모리 맵 파일을 사용한다. 2. 디스크에 있는 데이터에 접근하기위해 메모리 맵파일을 사용한다. 3. 동일한 머신에서 수행중인 다수의 프로세스간의 데이터를 공유하기위해 메모리 맵 파일을 사용한다. 윈도우즈에서 제공하는 프로세스간의 데이터 공유 기능은 내부적으로 메모리 맵 파일을 사용한다. 우선 윈도우즈 시스템에서 애플리케이션이 실행되는 순서를 간단히 살펴보자 test.exe 파일을 실행한다고 가정한다. 1. 시스템에 test.exe 을 실행하라고 .. 2011. 3. 7.
windows 애플리케이션 가상 메모리의 상태를 확인해보자. windows에서 원하는 대상 프로세스의 가상메모리 상태를 알아보는방법.. 프로세스 핸들을 알려면 프로세스 ID 값을 알아야 아래와 같이 핸들을 가져올수 있다. HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dwProcessId); http://msdn.microsoft.com/en-us/library/aa366907(v=vs.85).aspx typedef struct _MEMORY_BASIC_INFORMATION { PVOID BaseAddress; //pvAddress 매개변수로 전달한 주소를 페이지 크기 단위로 내림한 값. PVOID AllocationBase; // pvAddress 매개변수로 전달한 수고를 포함하는 영역의 시작 .. 2011. 3. 4.
가상메모리의 상태를 알아보자! 윈도우에서 애플리케이션에서 가상메모리공간의 정보를 가져올수 있는 함수를 제공한다. http://msdn.microsoft.com/en-us/library/aa366589(v=vs.85).aspx BOOL WINAPI GlobalMemoryStatusEx( __inout LPMEMORYSTATUSEX lpBuffer ); 위의 함수는 4GB 이상의 메모리를 체크할수 있는 함수 이며 4GB 까지 커지기 전의 시스템에서 사용하던 함수는 함수이름에서 Ex 를 뺀 GlobalMemoryStatus 함수를 사용였다.. GlobalMemoryStatusEx 함수에는 typedef struct _MEMORYSTATUSEX { DWORD dwLength; DWORD dwMemoryLoad;// 머신의 메모리 사용 퍼센트.. 2011. 3. 3.
운영체제 시스템 정보를 알아보자! 운영체제 시스템 정보를 알아보자! CPU 의 타입, 각 프로세스가 사용가능한 가장 큰 주소값 사용 가능항 CPU 및 코어 개수 메모리 할당에 사용하는 페이지 단위의 사이즈 등등의 기본적인 정보를 가져오는 방법을 살펴보자. winbase.h 에 있는 기능을 사용하자.. 아래와 같은 구조체가 정의 되어있고.. typedef struct _SYSTEM_INFO { union { DWORD dwOemId; // Obsolete field...do not use struct { WORD wProcessorArchitecture;// x86, x64, IA-64 등을 나타냄 WORD wReserved;//사용안함 }; }; //cpu의 페이지 크기 x86과 x64 머신에서는 4096,, IA-64머신은 8192바.. 2011. 3. 3.