12개의 직접 포인터와 2kb 블록 크기를 사용하여 UNIX(FFS) 시스템에서 생성할 수 있는 가장 큰 파일을 찾으려고 합니다. 나는 일종의 공식이나 방향을 찾으려고 주위를 둘러보았고 내가 찾은 가장 가까운 것은대학 시험 답안지.
문제에 대한 해결책을 기반으로 내 시나리오에 맞는 가장 큰 파일을 계산해 보았습니다(공식의 다른 부분은 간접 포인터 때문이라고 가정합니다).
(12 * 2KB) = 24KB
그러나 솔루션을 확인할 수 없습니다. 가능한 최대 파일 크기를 올바르게 계산하는 방법은 무엇입니까?
답변1
각각 2kB 블록을 가리키는 12개의 직접 포인터를 사용하면 가질 수 있는 가장 큰 파일은 24kB입니다(올바르게 계산한 대로). 이를 확인하는 쉬운 방법은 없습니다. 디스크의 데이터 구조를 표시하려면 파일 시스템 디버거가 필요합니다.
간접 포인터가 있으면 2kB에 몇 개의 포인터가 들어갈 수 있는지 알아야 합니다. 블록당 4바이트를 가정하면 512바이트를 수용할 수 있으므로 각 간접 블록은 추가로 1MB(512 * 2kB)를 제공합니다.
이중 간접 참조가 있으면 간접 참조 블록이 설명하는 공간에 얼마나 많은 간접 참조가 들어갈 수 있는지 알아야 합니다. 1MB 및 4바이트 포인터의 경우 이는 256kB이므로 이중 간접 블록은 512MB를 허용합니다.
일부 파일 시스템은 (시작, 길이) 쌍을 사용하여 디스크의 연속 실행 블록을 설명합니다. 12개 포인터 대신 6개 쌍이 있는 경우 디스크 조각화 정도에 따라 12KB와 6 * 2 32 * 2KB 또는 약 36TB 사이에서 지정할 수 있습니다.