2014-11-25 7 views
0

FAT와 유사한 파일 시스템을 구축하고 있습니다. 다음과 같은 설정이 있습니다 :FAT16 파일 시스템

| MBR | FAT 지역 | 데이터 영역 | (바이트 섹터의 크기), CLUSTER_SIZE (부문에서 클러스터의 크기), 그리고 disk_size (클러스터에서 디스크의 크기)에 sector_size 주어진다면

그래서 어떻게 길이를 계산할 수 있습니다 FAT 구역?

MBR은 클러스터 0에서 시작하고 FAT 영역은 클러스터 1에서 시작한다는 것을 알고 있습니다.하지만 FAT 영역의 길이를 계산하는 데 사용할 수있는 정보는 무엇인지 알 수 없습니다.

또한 루트 디렉토리는 데이터 영역의 첫 번째 클러스터에서 시작되므로 루트 디렉토리의 길이도 어떻게 계산합니까?

답변

0

이것은 FAT12 (MS-DOS 6.22) 플로피 이미지 같은 모습입니다 :

왼쪽 상단에 FAT12 image example

  • 은 루트 디렉토리 아래에
  • 의 NC/VC 스타일이다 왼쪽은 디코드 정보
  • 이고 오른쪽은 섹터의 표면지도
  • 강조 표시된 녹색 섹터는 MSODS.SYS fi입니다. 제작 :

드라이브 형상

  • 머리 - 크기 - 트랙
  • 클러스터 당 섹터의 수 - 머리 당 트랙
  • 분야의 수 - 사용되는 표면 측
  • 트랙 수 클러스터

FAT

  • sector_size는
  • CLUSTER_SIZE는 FAT 테이블의 최소 단위
  • 그래서 cluster=N*sectorN={1,2,3,4,...}
  • 드라이브 크기 이제 FAT 테이블있다 heads*tracks*sectors*sector_size
  • 곳이다 드라이브의 최소 단위 인 데이터 (전체 녹색/회색 물건)에 사용할 수있는 전체 영역을 커버하기 위해
  • 정확하게 당신은 클러스터 당 하나의 값이 필요합니다. 파일이 파일 클러스터 등 서식 화되어 있지 않은 시스템, 무료 나쁜, 예약되어 있음을
  • 의 마지막 클러스터임을
  • 을 계속하고있다
    • 다음 클러스터 :
    • 이 값에 대한 정보를 인코딩됩니다. ..
  • 그래서 먼저 당신이 너무 많이하지 않습니다 드라이브
  • 250 개 클러스터를 CCA하기 위해 예를 들어 8 비트 값 한계에 대한 각 값
  • 당 사용하려면 얼마나 많은 비트를 결정해야합니다 ...
  • 때문에 클러스터 크기 또한 파일과 공간 낭비의이 제한되는 최대 수
  • FAT 같은 일부 시스템은 전체 드라이브 지역 (단지 데이터 영역) 처음이자 마지막 논리적 클러스터 사이
  • 때문에 영역 만 포함되어 있지 않습니다/sector는 FAT에 저장됩니다. 약간의 공간을 절약하고 데이터
  • 에 대한 더 많은 클러스터 인덱스를 해제

FAT의 크기

  • FAT는
      (등 FAT12, MDO에 같은) 고정 된 크기 일 수있다
    • 그래서 FAT 테이블은 2^FAT_entry_bits 인 모든 가능한 항목을 포함해야합니다.
    • 12bit FAT12의 경우 2^12 = 4096 항목
    • 단일 섹터에 6,
    • 그렇게을 yor FAT에 대한 당신이 ceil(4096/341)=12 섹터가이 경우에
  • 또는 변수
    • 는 길이가 MBR에
    • 진짜 문제 같은 곳 인코딩해야 필요 floor(512*8/12)=341 항목
    • 에 맞는 그런 다음 클러스터 크기 또는 FAT 크기를 알고 있습니까?
    • 그래서 다음 중 하나를 사용하십시오 예약
    • FAT_entries=(drive_size-reserved)/cluster_size
    • cluster_size=(drive_size-reserved)/FAT_entries
    • 는 FAT에 포함되지 않는 영역입니다
    • 이제 FAT 항목이 16bit 할 수 있도록 설계하여주십시오 (2 바이트)를 (지금에 0을하자)
    • 및 크기 2heads*1024tracks*64sectprs*512Byte=64MByte
    • 의 드라이브를 가지고 cluster_size=4096Byte
    • 그래서을 갖고 싶어 5,429,048,903,210
    • 지금 바로 위의 예에서 같다 필요한 섹터/클러스터의 수를 계산