C#

Memory Map

이타심 2023. 3. 7. 16:26
728x90
Memory Map

# Memory Map

* 프로그램에 의해 작성된 코드를 실행파일로 만들어 OS 실행 시, 메모리에 각각의 데이터 영역을 분리하여 할당된 지도

 

C언어에 의한 메모리 맵. 출처: 위키백과

 

  • 프로세스[1]가 실행되기 위한 데이터를 저장하는 변수 영역과 기계어 코드 영역 등 분류별 저장이 가능하다. 먼저 프로그램이 실행되면, 영역별로 분리하여 파일화된 이후 메모리에 배치하여 실행한다. OS에서 실행되는 프로그램 메모리 배치뿐 아니라 마이크로프로세서(CPU)의 프로그램 메모리도 나누어 배치한다.
  • 메모리 맵은 마이크로프로세서(CPU)에서 메모리와 입출력을 어떻게 배치할 것인가를 규정한다. 또한 메모리와 I/O와의 관계를 규정하고 배치를 한다.

[1] 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램. 스케줄링 대상이 되는 Task와 같은의미로 사용된다.


 

# 마이크로프로세서(CPU)의 메모리 배치

*Memory-Mapped I/O, MMIO

마이크로프로세서(CPU)가 입출력 장치를 액세스할 때, 입출력과 메모리 주소 공간을 분리하지 않고 하나의 메모리 공간에 취급하여 배치하는 방식. 따라서 전체 메모리의 주소 공간에 입출력 장치의 메모리나 레지스터를 메모리로 취급하여 일부분으로 특정 영역에 할당하여 배치하는 방식이다.

 

pros: 메모리가 I/O와 동일한 메모리 상에 있기 때문에, 접근과 설계가 용이.

cons: 메모리 사용 가능 공간이 협소해짐.

 

*I/O Mapped I/O, Port Mapped I/O, (I/O MIO, PMIO)

마이크로프로세서(CPU)에서 메모리와 입출력 주소 공간을 분리하여 액세스 하는 방식. 즉 특수하게 하드웨어로 처리하여 만들었기 때문에, 실제적인 하드웨어 장치와 연결하는 방식이라고도 할 수 있다.

 

pros: 두 공간을 분리하면 속도와 공간의 효율성.

cons: 하드웨어적 설계가 힘들고, 별도의 명령어 분리가 필요.


# Micro Map File, MMF

메모리 맵 파일은 운영체제에서 파일을 다루는 방법 중 하나로서, 물리 디스크 파일, 장치, 공유 메모리 객체와 같이 운영체제에서 파일을 다루는 모든 대상에 대해 사용이 가능하다. 이러한 메모리 맵 패일을 통해 프로세스의 가상 메모리 주소 공간에 파일을 매핑한 뒤 가상 메모리 주소에 직접 접근하는 것으로 파일 I/O를 대체한다.

 

 

<플러스 지식>

+ Reduced Instruction Set Computer, RISC

: CPU 명령어 개수를 줄여 하드웨어 구조를 보다 간단하게 만드는 방식

+ Complex Instruction Set Computer, CISC

: 복잡한 명령어 집할을 갖는 CPU 아키텍처.

728x90