![Unix inode 파일 시스템에서 특정 파일 크기가 차지하는 블록 수를 계산하는 방법은 무엇입니까? [폐쇄]](https://linux55.com/image/174204/Unix%20inode%20%ED%8C%8C%EC%9D%BC%20%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%97%90%EC%84%9C%20%ED%8A%B9%EC%A0%95%20%ED%8C%8C%EC%9D%BC%20%ED%81%AC%EA%B8%B0%EA%B0%80%20%EC%B0%A8%EC%A7%80%ED%95%98%EB%8A%94%20%EB%B8%94%EB%A1%9D%20%EC%88%98%EB%A5%BC%20%EA%B3%84%EC%82%B0%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%ED%8F%90%EC%87%84%5D.png)
Unix와 유사한 파일 시스템을 갖춘 하드 드라이브와 다음 사양이 제공됩니다.
블록 크기는 4KB, 블록 주소 길이는 4바이트이며, i-node는 전통적인 구조(직접 포인터 10개, 간접 포인터 1개, 이중 간접 포인터 1개, 삼중 간접 포인터 1개)를 가지고 있습니다.
다음 파일이 차지하는 블록 수(데이터 블록 및 주소 블록 포함)는 얼마입니까?
- 파일 A 크기는 20KB입니다.
- 파일 B 크기는 200KB입니다.
- 파일 C, 크기 2000KB
- 파일 D, 크기 20000KB
여기서 문제는 이 문제를 해결할 수 있는 공식조차 찾을 수 없다는 것입니다. 수식이 있으면 값만 바꾸면 끝납니다. 문제 해결을 도와달라고 요청하는 것이 아니라 지침을 요청하는 것뿐입니다.
답변1
데이터 구조 어딘가에 문서가 있을 것입니다.
이것은 내 일이고 나는 의도적으로 그것을 하지 않습니다(이것은 당신의 숙제/공부입니다).
20K 파일의 경우 이는 단지 inode(간접 블록 없음)입니다. 따라서 20KB/(4KB/블록) + inode = 5블록 + inode입니다.
다른 경우에는 간접 포인터가 몇 개 있는지 알아야 합니다.간접 차단(4KB / (4B/포인터) = 1K 포인터). 4KB × 10 + 4KB × 1K = 4KB × ( 1K + 10 ) = 4KB × 1034 = 4136KB이면 충분합니다. (inode를 잊지 마세요. 얼마나 큰지는 모르겠습니다.)
이중 및 삼중 간접 참조의 경우. 각각 1K 포인터(1 블록)를 가리키는 1K 포인터(1 블록)의 트리가 있지만 각 포인터는 null일 수 있으므로 모든 블록이 할당되지는 않습니다.
그리고 트리플의 경우, 그것은 단지 확장일 뿐입니다.
또한 직접 블록을 먼저 할당한 다음 이를 크기에서 뺍니다. 그런 다음 간접 할당 및 빼기, 이중 간접 할당 및 빼기, 삼중 간접 할당을 수행합니다. 적합하지 않은 경우 최신 파일 시스템으로 업그레이드해야 합니다(이미 수행했지만 기본 사항을 이해하는 것이 더 쉽기 때문에 교육에는 이전 파일 시스템이 사용됩니다).