Linux 프로그래밍 인터페이스에서
데이터가 포함된 가상 메모리 페이지는 스왑 아웃될 수 있으며(mlock() 또는 유사한 메서드를 사용하여 메모리에 잠겨 있지 않은 경우) 그런 다음 권한 있는 프로그램이 스왑 영역에서 읽을 수 있습니다.
한 프로세스의 가상 메모리 주소 공간은 다른 프로세스에서 접근할 수 없다는 것을 배웠습니다. 위의 인용문이 나를 궁금하게 만든다.
이 격리 문은 다른 권한 있는 프로세스에 적용되지 않습니까?
이것은 스왑 부분에는 적용되지 않고 실제 메모리 부분에만 적용됩니까?
답변1
주소 공간 격리는 권한 있는 프로세스에 대해 작동하지만 어떤 경우에는 메모리에 저장된 데이터가 권한 있는 프로세스에 의해 로터리 방식으로 액세스될 수 있습니다.
데이터가 교환 상태가 되면 충분한 권한을 가진 모든 프로세스(즉기본 파일이나 장치를 읽을 수 있는 충분한 권한을 가지고 실행하는 사람은 누구나 스왑 저장소를 직접 읽고 거기에 있는 데이터에 액세스할 수 있습니다. 메모리 하위 시스템 이외의 수단을 통해 데이터에 액세스할 수 있기 때문에 주소 공간 격리가 여기서 무너집니다.
이전 커널 또는 구성된 커널에서 /dev/kmem
충분한 읽기 권한이 있는 프로세스는 메모리에 있는 모든 프로세스의 데이터를 읽을 수 있으며, 이는 또한 주소 공간 격리를 깨뜨립니다. 이번에는 가상 메모리 계층을 통하지 않고 실제 메모리를 읽습니다.