PintOS project.4

신병규·2023년 5월 30일
0
post-custom-banner

File System

File system component

저장 장치는 HDD, SSD, CD-ROM, USB 등등, 그리고 마그네틱, 광학, 반도체 등 종류가 여러가지 입니다. 이렇게 다양한 저장 장치들에 정보를 저장하기 위해서는 정보를 읽고 쓸 수 있는 방법이 정리되어 있어야 합니다. 이를 파일 시스템이라고 합니다.

특히 파일과 디렉토리라는 두 개의 개념으로 저장 장치를 추상화할 수 있습니다. 즉, 저장 장치에 접근하기 위해 파일과 디렉토리라는 개념을 이용합니다.

FAT

FAT 기반 파일 시스템들은 파일 시스템 내부의 모든 클러스터 하나하나에 대한 항목을 FAT 테이블에서 관리합니다. 이를 통해 각각의 클러스터에 저장되어 있는 정보가 무엇인지 알 수 있습니다.

FAT 테이블은 하나의 단일 리스트(배열)로 관리되며, 이 테이블을 통해 어떤 클러스터가 어떤 파일에서 사용되는지, 혹은 어떤 디렉토리가 존재하는지 등을 알 수 있습니다.

파일의 메타데이터가 저장되는 방식

  • FAT 디렉토리 테이블의 각 엔트리
    • 파일 이름
    • 시작 클러스터 번호
    • 길이
  • FAT 테이블
    • 클러스터의 할당 여부
    • 해당 클러스터 사용 파일
  • 아이노드 기반 파일 시스템(Unix File System)과의 차이점은? 아이노드가 실제 블록을 가리키는 포인터 목록(간접 포인터)을 가리킬 수 있다는 것이 차이점입니다. FAT 파일 시스템은 클러스터 번호가 테이블의 인덱스가 되어 모든 클러스터 하나하나를 가리킨다면, 아이노드 테이블은 아이노드 번호가 인덱스가 되어 각 파일을 가리킨다는 것이 다름니다

File Allocation Table

FAT 방식은 여러 빈 섹터를 찾아 데이터를 분산 저장하는 메커니즘을 사용합니다. 연속 할당 방식에서는 파일을 저장하기 위해 연속적인 빈 섹터를 찾아야 했지만, FAT 방식에서는 연속적이지 않은 여러 빈 섹터에 데이터를 분산하여 저장할 수 있고, 이는 공간 사용의 효율성을 크게 높여줍니다.
예를 들어, 보라색 섹터에 데이터를 순서대로 저장할 수 있다고 가정해보겠습니다. 이는 파일 'D'의 데이터를 저장하는 것으로, 이 파일은 세 섹터의 크기를 가지고 있습니다. 이를 FAT 방식에 따라 저장하면, 각 섹터를 연결하는 정보는 File Allocation Table에 기록됩니다. File Allocation Table은 파일이 저장된 섹터들을 체인 형태로 연결하는 구조로, 다음과 같이 표현될 수 있습니다.
이렇게 파일 시스템은 디스크의 빈 공간을 최대한 효율적으로 활용할 수 있게 되었으며, 파일의 확장 및 삭제에 대한 복잡성을 크게 줄일 수 있게 되었습니다.

File System

파일을 열기 위한 함수는 filesys_open으로 파일을 열면, file 구조체가 생성되고 file_open 함수가 호출되어 inode를 로드하고 이를 file 구조체에 연결하여 inode를 가리키게 됩니다. inode는 실제 디스크에 저장된 inode_disk에 대한 참조를 가지고 file 구조체의 pos는 파일 내의 현재 위치를 표시하며, 이는 파일 읽기 및 쓰기 작업에 사용됩니다

post-custom-banner

0개의 댓글