메모리 매핑

JM·2023년 12월 5일
0

메모리 매핑이란?

컴퓨터 시스템에서 물리적인 메모리 주소와 프로그램이나 하드웨어 장치에서 사용하는 논리적인 주소 간의 대응 관계를 정의하는 프로세스를 나타타냄.
이는 운영 체제 및 하드웨어 아키텍처에 따라 달라질 수 있음.

목적

  1. 프로그램 실행: 실행 중인 프로그램이 물리적인 메모리에 배치. 메모리 매핑은 프로그램의 코드와 데이터가 메모리 내의 특정 위치에 로드되는 방식을 정의.

  2. 주소 공간 분리: 각각의 프로세스는 독립적인 주소 공간을 가져야함. 메모리 매핑은 각 프로세스가 겹치지 않는 주소 공간을 할당하고, 다른 프로세스에게 영향을 주지 않도록 보장.

  3. 하드웨어 장치와의 통신: 메모리 매핑은 하드웨어 장치와 프로세서 간의 효율적인 통신을 지원. 메모리 매핑 레지스터를 통해 특정 주소 범위가 하드웨어 장치와 연결되어 있을 수 있음.

  4. 동적 메모리 할당 및 해제: 프로그램 실행 중에 동적으로 메모리를 할당하고 해제해야 할 때, 메모리 매핑은 이러한 동작을 지원. 힙 영역이 동적으로 확장되거나 축소되는 경우가 여기에 해당.

  5. 운영 체제의 역할: 메모리 매핑은 운영 체제 커널과 사용자 모드 간의 경계를 정의. 사용자 모드에서는 특정 주소 공간만 접근할 수 있고, 운영 체제는 보안 및 시스템 관리를 위해 다른 영역을 사용.

메모리 매핑의 주요 용도

1. 파일 매핑

  • 개요: 파일을 메모리에 매핑하여 입출력 최적화
  • 활용 예시: 대용량 파일 처리, 로그 파일 관리

2. 프로세스 간 통신

  • 개요: 공유 메모리를 통한 데이터 교환
  • 활용 예시:병렬 프로세싱, 다중 프로세스 간 효율적인 데이터 전송

메모리 매핑의 구현

1. POSIX 시스템에서의 메모리 매핑

함수: mmap
활용: UNIX 및 Linux 시스템에서 사용

2. Windows에서의 메모리 매핑

함수: CreateFileMapping
활용: Windows 운영 체제에서 사용

파일 매핑 예제

코드 예제를 통한 파일 매핑
언어: Python

프로세스 간 통신 예제

코드 예제를 통한 프로세스 간 통신
언어: Python

메모리 매핑 해제

이유

  • 메모리 누수 방지
  • 리소스 반환
  • 프로그램 안정성 강화

함수

munmap (POSIX), UnmapViewOfFile (Windows)

0개의 댓글