줄기세포

[Linux] O_DIRECT / O_SYNC란? 본문

Linux

[Linux] O_DIRECT / O_SYNC란?

줄기세포(Stem_Cell) 2022. 7. 1. 17:30

I/O 종류

  • OS의 Buffer를 거치지 않고 Disk 바로 반영하는 Direct I/O(O_DIRECT)
  • OS Buffer를 거쳐 Disk에 Write하는 Buffered I/O
    • Buffered I/O는 동기화 방식에 따라 두가지로 분류
    • 동기식 I/O (synchronized I/O) → 바로 Disk에 반영 (O_SYNC)
    • 비동기식 I/O(Asynchronized I/O) → 특정 스케쥴에 따라 반영

 

동기화 방식에 대한 플래그

  • flag란 file descriptor의 접근 방식에 대한 정의 정도로 외운다.

 

동기식 I/O (synchronized I/O)

  • O_SYNC write 직후 메타데이터와 데이터를 동기화한다.
  • O_DSYNC는 write 직후 데이터만 동기화 한다.
    • read 호출은 특별한 옵션이 없어도 항상 동기화 됨.
  • O_RSYNC는 Read() 호출이 반환되기 전에 메타데이터와 데이터를 디스크
  • POSIX에서 제공하는 표준 플래그는 O_SYNC, O_DSYNC, O_RYNC 이다.
  • 리눅스 커널 2.4 이상부터는 O_DIRECT라는 플래그를 지원한다.

참조

https://vallhalla-edition.tistory.com/47

https://onecellboy.tistory.com/185

Comments