주소 공간의 커널 공간은 어떻게 우리를 위해 예약되어 있습니까?

주소 공간의 커널 공간은 어떻게 우리를 위해 예약되어 있습니까?

프로세스 실행 중 프로세스의 메모리 맵은 다음과 같습니다.

여기에 이미지 설명을 입력하세요.

어리석은 질문일 수도 있지만 주소 공간에서 커널 공간을 예약하는 역할은 무엇입니까? 사용자 프로세스가 이에 대한 책임이 있습니까? 특권 프로세스? 모든 프로세스?

내가 이해한 바에 따르면 커널 메모리 공간은 실행 중인 프로세스에 의해 예약되지만 CPU는 링 0에서 실행하라는 지시가 있을 때만 해당 공간에 액세스할 수 있습니다. 이 올바른지?

답변1

답변2

이 (매우 단순화된) 메모리 맵은 오래 전, 먼 운영 체제에서 나온 것입니다. 요즘에는 조각이 주소 공간에 무작위로 매핑될 수 있으며(흥미로운 예는 매우 자주 요청하는 프로그램의 성능에 사용되는 현재 시간을 포함하는 Linux 커널 변수입니다) 프로그램의 주소 공간은 여러 조각으로 흩어져 있습니다. 모든 곳의 (논리적) 주소 공간. 예를 들어, 각 공유 라이브러리에는 자체 메모리 영역이 할당됩니다.

관련 정보