APUE를 보던중 이해가 안가는 부분이 있어 질문드립니다.
글쓴이: athxue / 작성시간: 수, 2007/05/30 - 11:57오전
open함수의 인자로 사용되는 O_SYNC의 개념이 파일의 변경사항을 실제로 장치에 쓰기전에 일단 커널에서
버퍼링한다음에 일정시간이 되면 쓰게하는것이 아니라 write가 호출될때 마다 실제 장치에 쓰게 한다
라는 개념이 맞는건가요? Have each write wait for physical I/O to complete라고 되어있는데요..
근데 이렇게 하는것과 O_SYNC없이 매 write함수밑에 fsync를 호출하는것, 그리고 O_SYNC와 fsync를
같이 적용한 것이 어떤 차이가 있는건가요? 책의 테스트 결과에서 보면 3가지가 각각 다른결과를 보여
주는데요..
Forums:
"write가 호출될때
"write가 호출될때 마다 실제 장치에 쓰게 한다" 라기 보다는
write() 호출이 실제 쓰기작업이 완료될때까지 블럭된다고 보는게
맞지을까요?
윗분 말씀이 맞고요,
윗분 말씀이 맞고요, O_SYNC도 커널에서 버퍼링은 합니다. 커널 버퍼링을 하지 않으려면 Linux의 경우 O_DIRECT를 줘야 합니다.
댓글 달기