C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[4496] Re:Re:Re: Memory Mapped File 개요
박지훈.임프 [cbuilder] 3619 읽음    2000-11-29 00:00
황진이 님이 쓰신 글 :
:
: 바쁘신데 님 감사~~
:
: 염치 없지만서도 말씀하신 메모리 맵드 파일인가 몬가 좀 설명 해주심 않될까요
: 그리고 추가로 dll 에서 구조체 자체를 전달하거나 받을수 있을까요 ?
:
: 에구에구 부탁해요 님....
:
:  
:

임펠리테리입니다.

메모리맵드 파일의 개념은 조금 복잡해서, 가볍게 질문답변란에서 다룰 내용은 아닙니다. 아주 간단히 개념만 설명드리겠습니다.

Win32에서 일반 프로그램에서 접근하는 메모리는 실제의 메모리가 아니라 모두 가상의 주소입니다. Win32 커널(OS)은 실제 메모리 주소는 완전히 숨겨버리고 프로그램에게는 하드디스크상에 스왑된 가상메모리와 실제메모리 조금을 섞어서 어플리케이션에게는 마치 사용가능한 메모리가 4GByte인것처럼 속입니다. 프로그램에서는 이 가상의 메모리를 실제 메모리인 것처럼 사용할 수 있지만, 실제로는 시스템에 설치된 메모리의 남은 양에 따라 특정 메모리 영역은 하드디스크에 스왑되어 있을 수도 있고 실제의 메모리영역일 수도 있습니다.

Win32가 기본적으로 메모리를 이런 방식으로 관리하기 때문에 실제 메모리나 실제 하드디스크에 있는 어떤 객체를 여러 어플리케이션의 제각각의 메모리 위치에 매핑시키는 것이 가능합니다. dll이 바로 이런 구조로 되어있습니다. dll이 로드되면 실제 메모리에서는 하나의 인스턴스만 존재하지만, 그 dll을 호출하는 어플리케이션들의 주소공간에 매핑되게 됩니다. 그러므로 어플리케이션에서는 마치 자신만이 그 dll을 자신의 메모리에 로드해서 사용하는 것처럼 알게 되지만, 실제로는 여러 어플리케이션들 사이에 인스턴스(코드영역이지요)를 공유하는 것입니다.

dll(코드) 뿐 아니라, 데이터에 대해서도 이런 식으로 어플리케이션 사이에 공유하는 것이 좋겠다라는 아이디어에서 출발하는 것이 메모리 맵드 파일(Memory)입니다. 하나의 어플리케이션에서 파일을 오픈한 후 파일을 메모리로 매핑하겠다는 Win32 함수를 호출하게 되면 그 파일을 메모리로 매핑하여 파일이 아니라 마치 메모리인 것처럼 사용할 수 있게 되고, 다른 어플리케이션에서도 이 파일을 같은 방법으로 메모리로 매핑할 수있게됩니다.

이렇게 여러 어플리케이션 사이에서 각각 매핑된 동일 파일은 실제로는 디스크상에 존재하는 파일이므로 같은 데이터를 갖지만 각 어플리케이션 사이에서는 충돌 없이 동일한 내용을 각각의 주소공간에서 메모리 공간인 것처럼 쓰고 읽을 수 있게 됩니다.

메모리 맵드 파일의 이론만 간단히 설명드렸습니다. 더 자세한 내용은 Win32 시스템 프로그래밍에 대해 설명한 책들을 참고하시기 바랍니다.

그럼 이만...

+ -

관련 글 리스트
4478 [질문]DLL 너를 사랑하고 잡다, 그러나 흑흑 ..... 황진이 3033 2000/11/28
4488     Re:[질문]DLL 너를 사랑하고 잡다, 그러나 흑흑 ..... 박지훈.임프 3275 2000/11/28
4494         Re:Re:[질문]DLL 너를 사랑하고 잡다, 그러나 흑흑 ..... 황진이 3097 2000/11/29
4496             Re:Re:Re: Memory Mapped File 개요 박지훈.임프 3619 2000/11/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.