/////
Search
📄

User Memory Access

사용자 메모리 접근 구현 (Implement user memory access)
시스템 콜을 구현하려면, 사용자 가상 주소 공간에 있는 데이터를 읽고 쓰는 기능을 제공해야함. 이 기능은 시스템 콜의 인자를 가져올 때는 필요하지 않지만, 시스템 콜 인자로 전달된 포인터를 따라가 데이터를 읽거나 쓸 때는 반드시 이 기능을 통해야함
하지만! 여기에는 까다로운 점 존재 :
사용자가 잘못된 포인터를 넘겨줄 수도
사용자가 커널 메모리 영역을 가리키는 포인터를 줄 수도
혹은 포인터가 가리키는 메모리 블록이 일부는 유효한 영역, 일부는 커널 영역일 수도
이러한 경우에는 해당 사용자 프로세스를 종료하여야함
정리
시스템 콜에서 사용자 영역 데이터를 접근할 때는, 항상 "안전하게 읽고 쓰기"를 구현해야 하고, 잘못된 접근이 들어오면 즉시 해당 프로세스를 죽여야함