buffer를 설정하면 빠르다! 이유는?

  • 데이터는 하드 디스크에 저장되어 있음
  • 하드 디스크는 블록단위 저장장치
  • 하드 디스크 데이터는 파일 시스템(VFS)이라는 추상화 장치를 통해 접근 가능
  • 이 파일 시스템을 사용해 데이터를 요청하면 블록 단위로 반환
  • 1 byte를 요청해도 256 bytes나 512 bytes 블록을 반환
  • 어플리케이션은 512 bytes 중 필요한 1 byte를 읽고 나머지는 버림
  • 512 bytes를 읽으려면 1 byte를 512번 512개의 블록을 읽어야 함
  • 낭비
  • buffer를 512 bytes로 설정하면 1 블록을 버퍼에 담아 1번만 IO 하면 가능 (보통은 1024 or 2048 로 설정해 사용)

실제로는 복잡하지만 그냥 간단하게...

참고:
블록장치 IO 동작방식 1
블록장치 IO 동작방식 2
블록장치 IO 동작방식 3