2009-05-23 2 views
0

질문에 대한 조나단 룰러의 의견은 "How can I find the Size of some specified files?"으로 생각됩니다. 나는 그것을 분석을 위해 부분들로 분해 할 것이다.리눅스 파일 시스템에 대한 역사적 관점

  1. - 파일이 페이지에 저장됩니다; 1 바이트 파일 (자주) 한 페이지 (아마도 512 바이트)를 차지하기 때문에

  2. 당신이 일반적으로 더 많은 공간이 그 계산보다 사용 인으로 끝낼는 을 제공합니다.

  3. 정확한 값은 다를 - 그것은 에서 쉽게 7 판 유닉스 파일 시스템의 일이었다 (아니지만 사소한 그렇다하더라도

4-5는 간접 을 고려하고 싶어합니다. 블록은 원시 데이터 블록뿐만 아니라 inode에 의해 참조 된). 부품

  1. "페이지"의 정의는 무엇인가에 대한

질문?

  • 사후 "한 페이지 (어쩌면 512 바이트)"에 "어쩌면"이라는 단어가 나오는 이유는 무엇입니까?
  • 왜 "7th Edition Unix file system"에서 정확한 크기를 측정하는 것이 더 쉬웠습니까?
  • "간접 블록"의 정의는 무엇입니까?
  • "inode"와 "원시 데이터 블록"두 가지로 어떻게 참조 할 수 있습니까?
  • 역사 질문

    등장

    I. 레플러에 대해 말하고있는 역사적 맥락은 무엇인가?

    II. 시간 경과에 따라 정의가 변경 되었습니까?

    답변

    2

    평소와 마찬가지로 위키피디아 페이지의 경우, Block (data storage)은 모든 키워드를 연결하는 데 너무 어려움에도 불구하고 유익합니다.computing (특히 데이터 전송 data storage)에서

    는 블록 공칭 길이 (a 블록 크기)을 갖는 bytes 또는 bits의 서열이다. 이와 같이 구성된 데이터는 차단되었다고합니다. 블록에 데이터를 저장하는 프로세스를 차단이라고합니다. 블로킹은 데이터를 수신하는 컴퓨터 프로그램에 의한 데이터 스트림의 처리를 용이하게하는데 사용된다. 차단 된 데이터는 일반적으로 한 번에 전체 블록으로 읽습니다. 블로킹은 9- 트랙 magnetic tape에 데이터를 저장할 때, floppy disks, hard disks, optical discs 및 NAND flash memory과 같은 회전 미디어에 거의 보편적으로 사용됩니다. 대부분 file systems

    은 파일 시스템의 블록 사이즈는 물리 블록 사이즈의 배수가 될 수 있지만 저장 데이터의 특정 블록을 검색 담당 hardware위한 abstraction 레벨이되는 block device에 기초한다. 클래식 파일 시스템에서 단일 블록은 단일 file의 일부만 포함 할 수 있습니다. 파일 길이가 종종 블록 크기의 배수가 아니므로 파일의 마지막 블록이 부분적으로 비어있게되므로 이로 인해 internal fragmentation으로 인해 공간 비효율이 발생합니다. 그러면 slack space이 생성되며 파일 당 평균 블록 수는 반 블록입니다. 일부 새로운 파일 시스템은 block suballocationtail merging이라는 기술을 통해이를 해결하려고 시도합니다.

    또한 Unix File System에 대한 합리적인 개요가 있습니다.

    일반적으로 하드 디스크 지오메트리 (디스크 자체의 블록 레이아웃)는 CHS입니다.

    • 헤드 : 각 플래터 (A 측)의 자기 기록/판독기; 플래터가
    • 분야 회전함에 따라 헤드 아래를 통과 트랙 : 액세스 다른 실린더
    • 실린더에 밖으로 이동할 수 부를 실린더에 인접하여 저장된 데이터를 일정한 크기의 양; 드라이브가

    CHS를 처리 할 수있는 데이터의 가장 작은 단위는 더 이상 실린더 당 섹터의 상수를 사용하지

    • 하드 디스크로, 요즘 많이 사용되지 않습니다. 더 많은 데이터는 일정한 회전 각보다는 섹터 당 일정한 arclength를 사용하여 플래터에 압축되므로 내부 실린더보다 외부 실린더에 더 많은 섹터가 있습니다. ATA의 스펙
    • 는 구동 헤드 당 최대 2보다 16 개 실린더 2 개 4 헤드 및 실린더 당 2 개 8 섹터를 가질 수있다; 512B 섹터의 경우 128GB로 제한됩니다. BIOS INT13을 통해 어쨌든 CHS를 통해 7.88GB 이상을 액세스 할 수 없습니다.
    • 하위 호환성을 위해 더 큰 드라이브는 여전히 CHS 지오메트리를 가지고 있다고 주장하지만 (그렇지 않으면 DOS는 부팅 할 수 없음) 더 높은 데이터를 얻으려면 LBA 주소 지정을 사용해야합니다.
    • CHS는 RAID 또는 비 회전식 미디어에도 의미가 없습니다.

    그러나 역사적인 이유로 섹터 크기가 거의 항상 512B 였기 때문에 파일 시스템 블록 크기는 항상 512B의 배수였습니다. (movement은 1kB 및 4kB 섹터 크기의 드라이브를 소개하지만 다소 호환성이 있습니다.)

    일반적으로 파일 시스템 크기가 작을수록 많은 작은 파일을 저장할 때 낭비되는 공간이 줄어 듭니다 (꼬리 병합이 사용 중임) 큰 블록 크기는 외부 조각화를 줄이고 대형 디스크의 오버 헤드가 적습니다. 파일 시스템 블록 크기는 대개 2의 거듭 제곱이며, 블록 장치의 섹터 크기에 의해 제한되며, 종종 OS의 페이지 크기에 의해 제한됩니다.

    page size은 OS 및 플랫폼에 따라 다르며 (Linux의 경우 구성에 따라 다를 수도 있음). 블록 크기와 마찬가지로 블록 크기가 작을수록 내부 조각화가 줄어들지 만 관리 오버 헤드가 더 많이 필요합니다. 32 비트 플랫폼에서 4kB 페이지 크기가 일반적입니다.

    이제 간접 블록을 설명합니다. UFS 디자인에서

    • inode은 파일을 설명합니다.
    • UFS 디자인에서 inode가 수용 할 수있는 데이터 블록에 대한 포인터의 수는 매우 제한되어 있습니다 (16 미만). 특정 번호는 파생 된 구현에서 다양하게 나타납니다.
    • 작은 파일의 경우 포인터는 파일을 구성하는 데이터 블록을 직접 가리킬 수 있습니다.
    • 큰 파일의 경우에는 블록에 대한 포인터가 더 많이 들어있는 블록을 가리키는 간접 포인터가 있어야합니다. 파일에 속한 데이터 블록에 대한 직접 포인터 일 수도 있고, 파일이 매우 큰 경우 더 간접적 인 포인터 일 수도 있습니다.

    따라서 파일에 필요한 저장소 양은 간접 포인터를 사용할 때 데이터가 들어있는 블록보다 클 수 있습니다.

    모든 파일 시스템이 파일에 속한 데이터 블록을 추적하는 데이 방법을 사용하는 것은 아닙니다. FAT은 사실상 하나의 파일 할당 테이블을 사용합니다. 이는 사실상 연결된 목록의 거대한 시리즈이며 많은 최신 파일 시스템은 extents을 사용합니다.

    +0

    유망 해 보입니다. 그 문제를 탐구하는 데 시간이 걸립니다. –

    3
    1. 나는 그가 페이지 대신 블록을 의미한다고 생각하는데, 블록은 파일 시스템의 최소 주소 지정 단위입니다.

    2. 블록 크기는 다를 수 있습니다

    3. 확실하지 왜하지만 아마도 파일 시스템 인터페이스 API의 좀 더 정확한 측정을 가능하게 노출.

    4. 간접 블록은 미가공 데이터가하는 것처럼

    5. 아이 노드 공간 (블록) 점유의 포인터에 의해 참조되는 블록이다. 이것은 저자가 의미 한 것입니다.

    관련 문제