블로그 이미지
No pain, no gain!
lepoussin

Tag

Notice

Recent Post

Recent Comment

Recent Trackback

Archive

calendar

1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
  • total
  • today
  • yesterday
11-26 07:20
2009. 5. 3. 00:34 Embedded System/Embedded Linux
임베디드 리눅스 시스템에서 볼 수 있는 세 가지 형태의 주소가 있다.
  1. 물리 주소(혹은 CPU가 변환하지 않는 주소) : 이 주소는 실제 메모리 버스상에서 사용되는 주소이다.
  2. 가상 주소(혹은 CPU가 변환하는 주소) : 이 주소는 CPU가 올바른 주소 영역으로 인식하는 영역이다. 예를 들면 커널에서 주로 사용되는 메모리 할당자인 kmalloc() 함수는 가상 주소를 반환한다. 이 가상 주소는 MMU에 의해 물리 주소로 변환된다.
  3. 버스 주소 : 이 주소는 CPU 외의 장치들에서 사용되는 메모리 주소이며, 버스의 종류에 따라 주소 영역이 달라질 수 있다.
시스템의 메모리 맵을 구성하기 위한 원칙은 다음과 같은 사항들로 나누어질 수 있다.
  1. 프로세서 메모리 맵 : 이것은 제일 먼저 생성해야하는 메모리 맵이다. 이것은 CPU가 (사용자 공간과 커널 공간 등의) 여러 주소 공간을 처리하는 방식과 다양한 메모리 영역 내에 보드상의 각 장치들의 메모리 관리 정책을 결정한다.
  2. 보드 메모리 맵 : 일단 프로세서 메모리 맵이 구성되면 다음으로 프로세서 메모리 영역 내에 보드상의 각 장치들에 대한 메모리 맵을 구성해야 한다. 이것은 하드웨어와 버스 컨트롤러에 대한 이해가 요구된다.
  3. 소프트웨어 메모리 맵 : 다음으로는 부트로더나 리눅스 커널과 같은 소프트웨어들에 대한 메모리 맵을 구성해야 한다. 리눅스 커널은 스스로 자신의 메모리 맵을 구성하고 코드나 힙과 같은 다양한 커널 섹션들이 위치할 장소를 결정한다.
    1. 리눅스 커널 레이아웃 - 링커 스크립트
    2. 부트 메모리 할당자
    3. 가상 주소 공간상에 메모리와 IO 매핑 생성
    4. 커널에 의한 메모리 할당 구역(zone) 생성

※ 출처 : ITC "임베디드 리눅스 시스템 설계와 개발"
posted by lepoussin