본문 바로가기

커널 오브젝트

Memory Mapped File(MMF)를 이용한 프로세스간 메모리 공유 Win32 이상의 환경에서는 프로세스의 주소 공간이 독립적으로 관리됩니다.프로세스의 주소 공간이 독립적이기 때문에 다른 프로세스의 주소 공간을 공유할 수 없습니다.A라는 프로세스의 0x1234라는 주소값은 B라는 프로세스의 0x1234와는 전혀 다른 공간입니다.이런 메모리 관리 구조는 OS를 좀 더 안정적이고 견고하게 만들었습니다.그렇지만 각각의 프로세스 사이에서 정보를 주고 받는 것이 어렵게 되었습니다.프로세스 사이에 정보를 공유하기 위해서 Memory Mapped File(MMF)이라는 방식을 사용합니다.이름 그대로 파일을 메모리에 맵핑하기 위해서 사용하는 기법입니다.간단하게 설명하자면, 파일을 열어서 해당 파일을 메모리에 맵핑시켜서 사용하는 것입니다.MMF를 이용해서 하드디스크의 파일을 프로세스의 .. 더보기
다중 실행 방지 코드(CreateMutex) 프로그램을 보면 하나의 프로세스(실행되어진 프로그램)만 허용하는 경우가 있습니다.보통 게임에서 물가 안정 등의 이유로 다중 실행 방지를 많이 사용합니다.그래서 그걸 깨는 멀티로더들도 암암리에 제작이 됩니다.다중 실행을 방지하는 코드는 뮤텍스라는 걸 사용합니다.물론 뮤텍스가 아닌 다른 커널 오브젝트를 사용해도 가능합니다.뮤텍스는 커널 오브젝트기 때문에 모든 프로세스를 통틀어서 하나만 존재합니다.이 뮤텍스가 중복되는 지 확인(이미 존재하는가 확인)하면 되는것이죠.이 뮤텍스를 이용한 방법을 알아보도록 하겠습니다. #include #include HANDLE hMutex = nullptr; int main() { hMutex = ::CreateMutex(nullptr, TRUE, _T("Unique_Name_o.. 더보기