![st_blocks가 항상 512바이트 블록으로 보고되는 이유는 무엇입니까?](https://linux55.com/image/154218/st_blocks%EA%B0%80%20%ED%95%AD%EC%83%81%20512%EB%B0%94%EC%9D%B4%ED%8A%B8%20%EB%B8%94%EB%A1%9D%EC%9C%BC%EB%A1%9C%20%EB%B3%B4%EA%B3%A0%EB%90%98%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
오류를 보고하는 퓨즈 파일 시스템을 디버깅하고 있었는데 알고 보니 [*]를 구조 에 du
넣었습니다 . Linux 매뉴얼 페이지에는 다음과 같이 나와 있습니다.st_size / st_blksize
st_blocks
stat
stat(2)
struct stat {
…
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for file system I/O */
blkcnt_t st_blocks; /* number of 512B blocks allocated */
…
};
st_blksize
st_blocks
블록 512B에 위치 하면 의 용도는 무엇입니까?
[*] 정수 나누기는 소수 부분을 고려하지 않기 때문에 이것은 어쨌든 잘못된 것 같습니다...
답변1
st_blocks
예한정된~처럼
이 객체에 할당된 블록 수입니다.
청크의 크기는 구현에 따라 다릅니다. Linux에서는 역사적인 이유로 항상 512바이트입니다. 특히 예전에는 디스크 섹터의 일반적인 크기였습니다.
st_blksize
관련이 없습니다.
이 개체에 대한 파일 시스템별 기본 I/O 블록 크기입니다. 일부 파일 시스템 유형에서는 파일마다 다를 수 있습니다.
I/O에 선호되는 크기를 나타냅니다.즉최상의 결과를 위해 한 번의 작업으로 전송되어야 하는 데이터의 양입니다(I/O 스택의 다른 레이어 무시).