13장 mmap and DMA
( by Alessandro Rubini & Jonathan Corbet )
-----------------------------------------------------------------------------------------------
* 2005년에 개정 3판이 나왔지만, 보유하고 있는 2판으로 작업. 몇 년만에 다시 접하는 리눅스 디바이스 드라이버에 대하여 학습을 목표로 번역을 시작한다. 11월 목표.
-----------------------------------------------------------------------------------------------
이번장은 디바이스 드라이버 쓰기 기술이 중요한 리눅스 메모리 관리 영역을 연구한다. 이번 장의 소재는 무엇보다 향상된 것이고 누구나 이해할 만한 것은 아니다. 그럼에도 불구하고, 많은 작업들이 메모리 관리 서브시스템내에 깊이 이해되어야 할수 있는 것들이다; 이것은 어떻게 커널 동작의 중요한 영역이 되는지 흥미로운 관점을 제공하기도 한다.
이번장의 소재는 세가지 세션으로 나눠진다. 첫번째는 mmap 시스템 콜의 구현에 대한 것이다. mmap 시스템 콜은 디바이스 메모리 맵을 직접 사용자 프로세스의 주소 공간에 허용하게 한다. 우리는 그때 커널 kiobuf 메커니즘을 포함한다. 이것은 커널 공간으로부터 사용자 메모리에 직접 접근을 제공한다. kiobuf 시스템은 디바이스의 어떤 종류를 위해 "raw I/O"를 구현하기 위해 사용되기도 한다. 마지막 세션은 다이렉트 메모리 접근(DMA) I/O 동작에 대한 것이다. 이것은 주변 소자들이 시스템 메모리에 직접 접근하도록 도와준다.
물론, 이 기술들이 모두 리눅스 메모리 동작에 대한 이해를 요구한다. 따라서 리눅스 메모리의 서브 시스템의 개요에 대한 설명으로 시작한다.
Memory Management in Linux
이 세션에서는 운영 시스템에서 메모리 관리에 대한 이론을 설명하는 것보다는 그 이론의 리눅스 구현의 주요 특징을 정확히 하려고 한다. 독자가 mmap을 구현하기 위해 리눅스 가상 메모리 구루가 될 필요는 없지만, 어떻게 동작하는지에 대한 기본 개요는 유용하게 쓰일 수 있다. 다음 사항은 메모리를 관리하기 위한 커널에 의해 사용되는 데이터 구조에 대한 상당히 긴 설명이다. 필요한 배경 지식을 한번 다룬 후에는 이 구조를 이용하여 작업을 시작할 수 있다.
Address Types
... to be continued ...
댓글
댓글 쓰기