Thursday, March 27, 2008

msync()

mmap된 영역을 디스크에 sync하는 함수이다. 인자로는 간단하게 주소, 크기, flag을 받는다. 이 함수와 함께 비교해볼 함수로 fsync()가 있다. write()함수 호출시에는 disk의 write queue에 들어가고 dirty 영역이 언젠가는 디스크에 쓰여지지만, mmap의 경우에는 msync를 호출하기 전에는 언제 dirty가 sync될지는 가늠할 수 없다. flag으로 MS_ASYNC/MS_SYNC를 줄 수 있고, MS_INVALIDATE를 주면 이 영역을 물고 있는 모든 cache를 invalidate시켜서 다음번 접근 부터는 sync 된 데이터를 사용할 수 있게 해준다.

No comments:

Post a Comment