Allocation Methods

김세영·2021년 4월 23일
0

Allocation Methods

  • Logical Block과 Physical Block을 연결하는 방법들

Contiguous Allocation

Contiguous Allocation이란, 각 Logical Block을 Physical Block에 연속적으로 저장하는 것입니다.

  • 위 그림에서, F4가 3개의 Physical Block을 연속으로 구성하고, Fa도 마찬가지로 연속으로 구성합니다.
    이 때, 3블록으로 구성된 F5가 들어오면, F4와 Fa 사이에는 3블록이 들어갈 수 없으므로, 다른 공간을 찾아 들어가게 됩니다.

  • 만약 F4에 해당하는 파일에 데이터를 더 담아서 F4가 6블록으로 늘어나게 되면, F4의 전체 블록을 다른 비어있는 공간으로 이동합니다.

  • 문제점

  1. 디스크 조각화
  2. 파일 사이즈를 알 수 없어 블록 이동이 많아짐

Linked Allocation


Linked Allocation이란 파일의 시작점을 알면, 각 Physical Block에 다음 블록의 번호가 저장되어 있어 그 정보를 따라가는 방식입니다.

  • 문제점

  1. 중간에 있는 Logical Block에 대한 Physical Block을 찾기 위해 Disk 접근을 많이 해야 합니다.
  2. 포인터를 담기 위해 Physical Block에 일정 공간을 할당해야 합니다.

FAT

FAT란 File Allocation Table의 약자로, Link에 대한 정보들만 다른 테이블에 저장해 두는 방식입니다.

  • Disk는 [Superblock, FAT table, Data]로 이루어져 있고, FAT table은 메모리로 올라가게 됩니다.

  • FAT table이 메모리로 올라가게 되면, 디스크 접근이 줄어들어 속도가 빨라집니다.

  • Directory Entry에는 start block에 대한 정보가 들어있고, Link를 계속 따라가다 -1이 나오면 파일의 끝을 인식합니다.

  • 문제점

    File System 노화가 되면 링크 조각화가 발생해 여러 클러스터를 참조해야 해서 속도가 느려집니다.

Indexed Allocation

  • Linked Scheme

    Index Block에서 각각의 블록은 Physical Block을 가리킵니다.
    마지막 블록은 다음 Index Block을 가리킵니다.

  • Multilevel index

    1st Index Block에서 각각의 블록은 2nd Index Block을 가리킵니다. 2nd Index Block의 각각의 블록은 Physical Block을 가리킵니다.

  • Combined Scheme

    총 15개의 블록 중 12개의 블록은 Direct block pointer
    나머지 3개는 각각 Single, Double, Triple Indirect block pointer입니다. UNIX / Linux inode에서 아래 그림과 같이 사용중입니다.

    • Direct Block Pointer
      각각의 블록은 Physcial Block을 가리킵니다.

    • Single Indirect Block Pointer
      각각의 블록은 다음 레벨의 Index Block을 가리킵니다. 다음 레벨의 블록들은 Physical Block을 가리킵니다.

    • Double Indirect Block Pointer
      각각의 1st Index Block은 2nd Index Block을 가리키고, 2nd Index Block의 각각의 블록은 Physical Block을 가리킵니다.

    • Triple Indirect Block Pointer
      Double에서 3rd Index Block까지 가리키는 것입니다.
      일반적으로 Triple까지 가면 4TB가 되기 때문에 Triple을 모두 채울 일은 없습니다.

profile
초보 iOS 개발자입니다ㅏ

0개의 댓글