이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 23927|회답: 2

[출처] C#은 프로세스 메모리 매핑, 파일 공유 메모리를 구현합니다

[링크 복사]
게시됨 2017. 10. 7. 오후 6:51:10 | | |
메모리 매핑 파일은 가상 메모리를 사용하여 파일을 프로세스의 주소 공간에 매핑한 후, 프로세스는 memcpy 및 C 언어의 다른 메모리 연산 함수를 사용하여 프로세스 공간의 주소처럼 파일을 조작합니다. 이 방법은 파일이나 대용량 파일을 자주 처리해야 하고, IO 처리 효율이 일반 IO보다 높은 상황에서 잘 활용될 수 있습니다
공유 메모리는 디스크 위의 파일 대신 메모리 조각을 매핑하는 메모리 매핑 파일의 특수한 경우입니다. 공유 메모리의 주체는 프로세스이며, 운영체제는 기본적으로 각 프로세스에 메모리 공간을 할당하고, 각 프로세스는 운영체제가 할당한 메모리 조각만 접근할 수 있으며, 다른 프로세스에는 접근할 수 없습니다. 그리고 때로는 서로 다른 프로세스 간에 같은 메모리에 접근해야 할 때가 있는데, 어떻게 해야 할까요? 운영 체제는 공유 메모리에 대한 접근을 생성하는 API를 제공하며, 메모리를 공유해야 하는 프로세스는 이 정의된 API 집합을 통해 여러 프로세스가 공유하는 메모리에 접근할 수 있으며, 각 프로세스는 하드 디스크의 파일을 접근하듯 이 메모리에 접근합니다. .Net 4.0은 System.IO 을 도입합니다. MemoryMappedFiles 네임스페이스는 Windows 공유 메모리 관련 API를 캡슐화하여 .Net 프로그래머가 메모리 매핑 파일을 더 쉽게 사용할 수 있도록 합니다.
C#에서 공유 메모리를 사용하세요. 다음 App1 코드는 사용자가 텍스트 한 줄을 공유 메모리에 입력할 수 있게 해줍니다; App2는 콘솔을 지속적으로 새로고침하고 최신 공유 메모리 콘텐츠를 출력합니다; App3는 App2와 동일한 기능을 구현하지만, 읽기 방식은 다릅니다.

데이터를 읽기 위해 두 가지 방법이 사용되었습니다.
프로세스 간 통신이 이전에는 거의 사용되지 않았기 때문에, 이 방법은 예비적인 이해에 불과합니다. 이 프로그램은 너무 기초적이고, 평가받지 않는 부분도 많습니다. 예를 들어, 공유 메모리를 만드는 방법, 그것을 검색하고 삭제하는 방법 등이 있습니다.




이전의:.net/c# CryptoJS aes 암호화된 소스 코드
다음:activemq 지속 저장소가 가득 찼습니다
 집주인| 게시됨 2025. 10. 3. 오후 4:10:57 |
.NET/C#은 Mutex와 MemoryMappedFile 기반의 프로그램 싱글턴을 구현합니다
https://www.itsvse.com/thread-10808-1-1.html

.NET/C# 부모-자식 프로세스는 MemoryMappedFile을 사용하여 통신합니다
https://www.itsvse.com/thread-10983-1-1.html
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com