장치 드라이버는 커널 논리 주소 공간을 사용합니까, 아니면 커널 가상 주소 공간을 사용합니까?

장치 드라이버는 커널 논리 주소 공간을 사용합니까, 아니면 커널 가상 주소 공간을 사용합니까?

가능하다면 문서를 알려주시거나 커널 공간 메모리 레이아웃에 대해 설명해 주실 수 있나요?

장치 드라이버가 변수를 인스턴스화할 때 변수가 커널 공간에 존재합니까, 아니면 특별한 권한이 있는 사용자 공간에 있습니까?

답변1

커널 공간의 메모리 레이아웃은 다음과 같습니다.최소한 x86_64에 대해서는 커널에 문서화되어 있습니다.. 많은 아키텍처에서 여기에는 커널 인스턴스의 수명 동안 변경되지 않는 고정 오프셋을 사용하는 직접적인 물리적 매핑이 포함됩니다. 커널 코드는 MMU(MMU 장착 아키텍처)를 사용하여 CPU에서 실행되므로 실행 코드(변수 포인터, 스택 등)에서 참조하는 모든 주소는 MMU가 이해하는 주소입니다.일반적으로 직접적인 물리적 매핑 외부에 할당되는 가상 주소입니다.

기본적으로 장치 드라이버의 변수는 커널 공간에 매핑됩니다. 장치 드라이버는 다양한 방법( 사용자 공간에 sysfs매핑 )으로 사용자 공간의 데이터를 제공할 수도 있습니다.procfs가상 DSO...

관련 정보