Development/C

c - 메모리 맵(memory map)

linuxism 2013. 8. 30. 19:15


컴퓨터 공학에서 메모리 맵(memory map)은 여러가지 측면에서 접근할수 있으나 컴퓨터 체계 중 메모리와 관련된 다음과 같은 경우이다:

  • 프로세스의 메모리 배치 맵 : 프로그램에 의해 작성 된 코드를 실행파일로 만들어 OS 실행할 때, 메모리에 각각의 데이터 영역을 분리하여 할당 된 지도를 말한다. 결국 프로세스가 실행되기 위한 데이터 저장 할 변수 영역, 기계어 코드 영역 등의 분류별로 나누어 저장하는 지도이다. 프로그램의 실행 시, 영역별로 나누어 분리하여 파일화하고 실행할 때는 메모리에 묶음으로 나누어 배치한 후 실행한다. 운영체계에서 실행되는 프로그램 메모리 배치 뿐만아니라 마이크로프로세서의 프로그램도 마찬가지로 메모리 나누어 배치한다.
  • 마이크로프로세서의 설계에서 메모리 배치 : 메모리 맵은 메모리와 입출력을 마이크로프로세서에서 어떻게 배치할 것인가를 규정한다. 메모리와 입출력(I/O)와의 관계 등을 규정하고, 메모리와 입출력(I/O) 메모리 배치를 한다. 주로 메모리 설계에서의 배치를 의미한다. 메모리 맵 입출력 방식과 입출력 맵 입출력 방식을 말한다.

메모리 맵은 프로그램이 작성되었을 때 마이크로프로세서와 컴파일러마다 메모리 맵의 차이가 있다. 각 메모리를 배치하는 방식과 묶음의 이름이 다르다.

프로세서의 메모리 배치 예[편집]

C언어에 의한 메모리 맵 예. 일반화 및 단순함.[note 1]

C/C++언어 등의 변수가 선언되면 각각의 데이터 처리 변수 방식에 따라 특정 묶음으로 분리한다. 프로그래밍에 의해 작성 된 코드는 기계어 코드의 묶음으로 분리한다. 프로그램이 실행할 때 필요한 요소들의 묶음을 메모리에 나누어 배치한다.

각각의 기능적 묶음은 실행파일에서 구별하여 저장한다. 사용자에 의해 실행하면 메모리에 묶음을 나누어 배치하고 기계어코드 영역을 실행 한다.

Notes:

  1.  배치할 때 이름은 CPU와 컴파일러에 따라 다르므로 개발도구를 선택하면 맵파일을 만드는 방법과 메모리 맵 파일 생성 옵션을 설정해야 한다.

마이크로프로세서의 메모리 배치[편집]

입출력의 메모리 배치 방식은 다음과 같은 방식이 있다:

  • 메모리 맵 입출력 : 입출력을 하나의 메모리의 일부로 보고 구별하지 않는다. 따라서 주소 디코딩할 때 입출력을 메모리의 일부로 설계한다.
  • 입출력 맵 입출력 : 입출력을 메모리 주소공간에서 분리하여, 입출력 주소공간을 따로 갖는다.

같이 보기[편집]



출처 - http://ko.wikipedia.org/wiki/%EB%A9%94%EB%AA%A8%EB%A6%AC_%EB%A7%B5