1 minute read

pintos 구현하면서 알게된점 중

#####

스크린샷

mmap

kernel이 시스템 콜을 받으면, 요청 파일의 , 요청 offset에서 시작하는, 요청 크기만큼의 연속되는 메모리 영역을 요청 프로세스의 가상 메모리 상에 할당해준다.

스크린샷

요청 프로세스의 가상 메모리 상에 할당해준다 이 떄 또한 demanding paging이 적용되어 mmap 호출만으로는 물리 메모리에 파일 내용이 적히지 않고, 프로세스가 요구해야지만(fault가 발생해야지만) 그제서야 파일을 읽어서 물리 메모리에 적어준다.

mmap system call은 file system에 대한 일종의 interface 라고도 볼 수 있다. 프로세스가 mmap으로 할당받은 메모리공간에 write 하면, 그 변경사항이 실제로 storage 의 file 에 저장(write-back) 된다. 프로세스가 명시적으로 read or write를 하지 않도로 file 에 대한 작업을 할 수 있게 해주는 것이다. 변경사항이 저장되는 순간은, 프로세스가 명시적으로 munmap systemcall 을 호출하거나, 해당 영역에 포함된 page 가 swap out되거나, 명시적 munmap 호출없이 프로세스가 종료 될 때이다.

Updated:

Leave a comment