2012-12-11 3 views
0

일부 시험 검토 문제가 있는데 그 중 하나는 "UNIX 시스템 V에서는 블록 길이가 1KB이고 각 블록은 총 256 블록 주소를 보유 할 수 있습니다 inode 체계를 사용하면 파일의 최대 크기는 얼마입니까? "Inode 및 블록 크기의 개념

여기에 아이러니 한 것은 교수님이 제공하는 솔루션이며, 저는 싱글, 더블, 트리플 간접 배정의 수학/논리를 이해합니다. 직접 배분으로 인해 엉망입니다.

이 해법에 따르면 직접 할당 기법은 2^10 바이트 = 1KB이기 때문에 10 개의 블록을 사용합니다. 왜? 이 공식 뒤에있는 이유는 무엇입니까? Is는 유닉스 시스템 V 아이 노드의 발명가가 꿈꾸어 온 임의의 숫자인가? 1024 비트에 대해 10 개의 포인터를 갖는 것은 나에게 의미가 없으므로 1024/10 = 102.4 바이트마다 하나의 주소로 8 또는 다른 숫자를 갖는 것이 훨씬 더 논리적 일 것입니다.

교수는 우리 최종적으로 이런 질문을 할 수 있음을 암시하며 오히려 이해하지 못하는 쿠키 커터 공식을 사용하지 않을 것입니다.

+0

참고 : 편집 오타 : 20 개 블록 10 개 블록되어 있어야합니다. – Scott

답변

5

Google은 여기에 물어 보는 것보다 훨씬 빠르고 쉽게 답변을 드릴 수 있었지만 "inode indirect blocks"이 포함 된 게시물에 대해서는 3,145 개의 검색 결과를 얻었지만 여기, 답장을 보내 드리겠습니다 :

디스크의 inode 구조는 한 블록 자체 안에 들어갈 수 있다면 포함해야하는 다른 모든 정보와 함께 일정한 수의 블록 주소 만위한 공간이 있습니다 .

SysV inode의 경우 40 바이트의 데이터 블록 주소가 있으며 "파일 생성 번호"에 대해 13 개의 3 바이트 주소와 1 바이트 남았습니다 (여기서는 무시할 수 있음) .

그래서 13 개의 주소가 있습니다. 단지 13 개 이상의 데이터 블록을 포함하는 파일의 파일 데이터 블록 주소를 효율적으로 어떻게 사용하려고합니까?

처음 10 개를 직접 주소로 사용했습니다. 즉, 파일의 1-10 번째 데이터 블록을 직접 식별합니다. 11 번째, 12 번째 및 13 번째 주소는 간접 블록을 가리 킵니다. 하나의 간접 블록, 이중 간접 블록 및 3 중 간접 블록이 각각 가리 킵니다.

질문 참고 사항으로 각 간접 블록에는 256 개의 주소를 저장할 수 있습니다. 따라서 첫 번째 간접 블록의 주소 집합이 데이터 블록을 직접 가리키고 이중 간접 블록이 더 많은 데이터 블록 주소 블록을 먼저 가리킨다 고 생각하면 이들을 곱하여 추가해야합니다. 간접 블록은 데이터 블록 주소에 대한 포인터의 더 많은 블록에 대한 포인터 블록을 가리 킵니다.

이 페이지에는 멋진 다이어그램이 있으며이 경우 다이어그램이 없으면 혼란이 해결되지 않습니다. 엄격한 시스템 V 온 디스크 포맷 약간 다를 세부 사항에 대한이 페이지 회담을 참고 (더 직접 블록을 가지고 있으며, :

Understanding Indirect Blocks in Unix File Systems

0

1024 바이트와 4 바이트 포인터의 단일 블록으로 1024/4 = 256 포인터를 저장할 수 있습니다. 각 파일에 i- 노드 용 단일 블록이있는 경우 256 * 1024, 즉 256KB 파일을 얻게됩니다. 나는 그 10 블록이 어디에서 왔는지 모르겠다.