이 포스팅은 한국기술교육대학교 김덕수 교수님의 시스템 프로그래밍 (CSE 232)를 참고하여 작성되었습니다.
Block
- 파일 시스템의 추상화된 개념. 물리적 Disk를 추상.
운영체제 입장에서 file system은 block들의 나열이다.
- Block의 크기는 일반적으로 512~8192 bytes (2^n)
Sector size < Block size < Page size
- Disk (or block device) access의 최소 단위
File IO vs Disk IO
- File IO with system call
Access in a unit of byte
- Disk IO
Access in a unit of block
매번 byte단위로 Disk에 접근하는 것은 비효율적이다.
Buffer에 byte를 저장하고 일정 데이터가 쌓이면 커널이 Page write-back을 통해 Disk로 데이터를 이동시킨다.
Kernel buffer (Page cache)
- Page write-back 시점
(커널의) 메모리 공간이 부족할 때
내용이 변경 된 후, 일정 시간이 지나면
fsync(2) 호출 : 강제 동기화
- Write-back 시점은 user 입장에서 예측하기 어려움
비효율적일 수 있음
User-buffered IO
- What is your solution?
RAM(memory)상에 Buffer를 직접 만든다.
적절한 시점에 write한다.
쉽게 구현 가능하다.
하지만, block size와 system call 등을 알아야한다. (귀찮음)
이를 해결하기 위한 것이 stdio.h 표준 입출력 라이브러리다.
긴 글 읽어주셔서 감사드립니다.
22.12.14
'TIL (Today I Learned) > 컴퓨터 시스템(CS)' 카테고리의 다른 글
[CS] 표준 입출력, Standard IO #3 (1) | 2022.12.14 |
---|---|
[CS] 표준 입출력, Standard IO #2 (0) | 2022.12.14 |
[CS] File, File descriptor #4 (0) | 2022.12.13 |
[CS] File, 파일 읽기/쓰기 #3 (0) | 2022.12.13 |
[CS] File, 파일 열기/닫기 #2 (1) | 2022.12.13 |
댓글