비동기함수 sync, 동기함수 fsync
유닉스(리눅스)에서는 메모리 정보를 disk에 적을 때 바로 disk에 적지 않고,
CPU 바로 옆에 있는 cache에 적은 다음 그 정보를 disk로 옮긴다.
sync 또는 fsync 시스템 콜을 이용해서 write를 할 수 있는데,
sync는 비동기함수이기 때문에 write 명령을 CPU에 전달하고 리턴된다.
void sync(void); // 항상 성공하므로 반환 값이 없다.
단순히 모든 버퍼를 디스크에 쓰도록 처리하는 과정을 시작하도록 명령할 뿐
그 버퍼 내용을 디스크에 쓰는 연산이 완료될 때까지 기다리지는 않는다.
반면, fsync는 동기함수로, write가 끝날 때까지 기다렸다가 리턴된다.
(disk 끝까지 내려가서 써지는 거 확인하고 return)
int fsync(int fd);
인자로는 파일 디스크립터 하나만 주면 되고, fd는 반드시 쓰기 상태로 열려 있어야 한다.
'SKKU SW > Operating System' 카테고리의 다른 글
[OS] [Linux] atime, ctime, mtime (0) | 2024.06.09 |
---|---|
[OS] Anonymous pipe와 Named pipe (0) | 2024.06.07 |
[OS] Multiprocessor Scheduling - SQMS와 MQMS (1) | 2024.04.06 |
[OS] Multiprocessor Scheduling(1) - Cache Coherence(캐시 일관성) & Bus snooping(버스 스누핑) (2) | 2024.03.26 |
[OS] System call 시스템 콜 (0) | 2024.03.25 |