mmap()과 munmap()은 모두 시스템콜으로, mmap()은 디스크에 있는 파일 정보를 미리(사용자 몰래?) memory에 load시켜 두어 접근 속도를 빠르게 만들어주는 교묘한 기술이라고 할 수 있다. munmap()은 mmap()과 반대로 메모리에서 삭제해주는 과정이라고 생각하면 된다.
프로그래머는 이를 활용하여 사용자 모르게, 파일 실행 속도를 높여줄 수 있을 것이다.
기존에 있는 시스템콜인 write()와 read()를 사용하는 것 보다 장점이 있다. 위에 적었듯 파일을 메모리에 미리 올리는 이유는, 더 빠르게 접근하기 위해서이다. 이 흐름은 proejcet3 앞에서 구현한 load_segment와 거의 유사하다.
mmap() 시스템 콜을 실행하면, spt에 파일 정보들을 다 저장해두고 실제 그 페이지에 접근하려고 할 때, lazy load가 될 수 있도록 구현해주는 것이다.
munmap() 에서 혹시 메모리에서 수정부분이 생기면 disk에 작성을 해줘야한다. mmap()에서 file_reopen() 함수를 사용하는데, munmap()에서 file_close를 잘 해줘야 한다.
munmap 에서 file_close 를 해주면 안되지 않나여?