2014-01-21 2 views
2

mmap()은 파일에서 메모리 주소와 파일 사이의 일대일 대응을 위해 파일을 메모리에 매핑하는 것을 허용한다는 것을 알고 있습니다.리눅스 : 비정상 파일을위한 mmap()

하지만 내 질문에 파일이 장치 드라이버에서 생성 된 비정규 파일 인 경우 어떻게됩니까? 아시다시피 일부 비정규 파일은 mmap 가능하고 일부는 그렇지 않습니다. 이것이 프로그래밍의 관점에서 무엇을 의미합니까? 비정상적인 파일을 mmap 가능하게하려면 어떻게해야합니까?

답변

2

저는 mmap 함수 포인터 (struct file_operations)를 구현 한 Linux 커널 모듈에서 작업했습니다. 이 모듈은/dev/디렉토리에 장치 항목을 만듭니다. 이제는 내 사용자 공간 응용 프로그램이 "open"을 사용하여이 항목을 열고 mmap 시스템 호출을합니다. 결국 Linux-Kernel-module 내부에서 mmap 함수가 불려질 것이라는 것을 암시하고 구현 된 처리를 수행하고 사용자 공간으로 돌아갈 것입니다.

이것은 사용자 공간이 OS (커널)에 요청한 서비스를 나타내는 예입니다. 사용자가 하드웨어에 액세스하려고하거나 커널에서 서비스를 요청하려는 경우 (실제 메모리를 사용자 가상 주소 공간에 매핑하는 것처럼)/dev/또는/sys에있는 드라이버가 만든 항목을 사용하여 수행 할 수 있습니다/또는/proc/등이 있습니다.이 파일은 커널에 대한 "가상 인터페이스"라고 할 수 있습니다.