Machineboy空

대표적 파일 시스템 - FAT 파일 시스템 , 유닉스 파일 시스템 본문

Computer/CS

대표적 파일 시스템 - FAT 파일 시스템 , 유닉스 파일 시스템

안녕도라 2024. 1. 24. 11:13

파일 시스템이란

파일과 디렉터리를 보조기억 장치에 일목요연하게 저장하고, 접근할 수 있도록 하는 운영체제의 내부 프로그램.

 

파일 시스템이 파일과 디렉터리를 보조기억장치에 할당하고 접근하는 방법을 알아본다.

정말 다양한 파일 시스템이 있는데,

대표적으로 FAT 파일 시스템, 유닉스 파일 시스템을 학습할 것

 

하나의 컴퓨터에서 여러 파일 시스템을 사용할 수도 있음


파티셔닝(partitioning)과 포매팅(formatting)

 

이제 막 공장에서 생산되어 한 번도 사용된 적 없는 새 하드 디스크 / SSD

파티셔닝과 포매팅을 하기 전까지 사용할 수 없다.

즉, 파티셔닝과 포매팅을 해야 파일시스템을 통해 보조기억장치에 할당, 접근할 수 있다.

 

  • 파티셔닝(partitioning) : 저장 장치의 논리적인 영역을 구획하는 작업
    • 서랍에 칸막이 설치하고 용도에 맞게 용품들을 정리한다면
    • 파티션(partition): 구획된 영역
  • 포매팅(formatting): 파일 시스템을 설정하고 어떤 방식으로 파일을 관리할지 결정, 새로운 데이터를 쓸 준비하는 작업
    • USB 포매팅 시, 파일 시스템은 포메팅할 때 결정된다.
    • 파일 시스템에는 여러 종류가 있고 파티션마다 다른 파일 시스템을 설정할 수도 있다.
    • 포매팅까지 완료하여 파일 시스템을 설정했다면 이제 파일과 디렉터리 생성이 가능해진다.

파티션 확인 / 포매팅(파일 시스템 설정) / 각 파티션 별 다른 파일 시스템 설정 가능

 


파일 할당 방법

  • 포매팅까지 끝난 하드 디스크에 파일을 저장하기
  • 운영체제는 파일/디렉터리를 블록 단위로 읽고 쓴다.
    • 즉, 하나의 파일이 보조기억장치에 저장될 때에는 여러 블록이 걸쳐 저장된다.
    • *하드디스크의 가장 작은 저장단위는 섹터이지만 보통 블록단위로 읽고 쓴다.
    • 하나 이상의 섹터를 블록 단위로 묶은 다음 블록 단위로 관리
     

  • 연속 할당 
    • 정의
      • 이름 그대로 보조기억장치 내 연속적인 블록에 파일 할당
    • 디렉터리 엔트리
      • 연속된 파일에 접근하기 위해 파일의 첫 번째 블록 주소와 블록 단위의 길이만 알면 된다
      • 파일 위치를 추론하기 위해,
      • 디렉터리 엔트리: 파일 이름 & 첫 번째 블록 주소 & 블록 단위 길이 명시
    • 한계
      • 구현이 단순하지만 외부 단편화를 야기할 수 있다.
  • 불연속 할당 - 연결 할당
    • 정의
      • 각 블록의 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키는 형태로 할당
      • 파일을 이루는 데이터 블록을 연결 리스트로 관리
      • 불연속 할당의 일종: 파일이 여러 블록에 흩어져 저장되어도 무방
    • 디렉터리 엔트리
      • 디렉터리 엔트리: 파일 이름 & 첫번째 블록 주소 & 블록 단위 길이
      • 끝 블록이라는 표시자로서 -1 기록
    • 한계
      • 외부 단편화를 해결할 수 있지만
      • 반드시 첫 번째 블록부터 하나씩 읽어들여야 한다. (= 파일 임의접근 속도가 느리다)
      • 오류 발생시(하드 웨어 고장 등이 일어나면, 다음 주소를 알 수 없기 때문에) 해당 블록 이후 블록은 접근이 어렵다.
  • 불연속 할당 - 색인 할당
    • 정의
      • 파일의 모든 블록 주소를 색인 블록이라는 하나의 블록에 모아 관리하는 방식
      • 파일 내 임의의 위치에 접근하기 용이하다.
    • 디렉터리 엔트리
      • 파일 이름 & 색인 블록 주소

 

불연속 할당 - 연결할당 / 색인 할당


FAT 파일 시스템 (File Allocation Table)

 

연결 할당 기반의 파일시스템으로 연결 할당의 단점을 보완함.

USB, SD 카드 등의 저용량 장치에서 많이 사용됨.

 

각 블록에 포함된 다음 블록 주소를 한데 모아 테이블(FAT, file allocation table)로 관리.

다음 번지 주소가 적혀 있음 / 단점 보완을 위해 FAT로 관리
FAT12의 파티션을 간소화 한 것

 

FAT가 메모리에 캐시될 경우 느린 임의 접근 속도 개선 가능

폴더 디렉터리가 생성되면 루트 디렉터리 영역 이후로,  줄줄이 공간이 생기게 되는 것

 

FAT 파일 시스템의 디렉터리 엔트리, 파일의 속성까지도 적힌다.

 

예제)

  1. 루트 디렉터리 영역 : home이 3번이니까 3번을 읽어보자.
  2. home 디렉터리 영역(3번) : 민철은 15번이니까 15번을 읽어보자.
  3. 민철 디렉터리 영역(15번) : a.sh는 9번이니까 9번을 읽어보자.
  4. FAT :  9 >> 11 >> 13 순으로 읽으면되는 구나.

유닉스 파일 시스템

색인 할당 기반 파일 시스템.

 

  • 색인 블록 == i-node (index-node)
    • 파일의 속성 정보15개의 블록 주소 저장 가능
    • 유닉스 파일 시스템에서 가장 중추적 역할, 유닉스 파일 시스템의 핵심
    • i-node만 읽어서 이 파일이 무엇인지 어디 저장되어 있는지 알 수 있다.

유닉스 파일 시스템에서는 각 파일마다 i-node를 가지고 있고 고유한 번호를 가지고 있다.

 

 

 

15개 블록 이상을 차지하는 파일을 저장하는 법 (= 큰 용량의 파일을 저장하는 법)?

예제 )

 

  • 1. 블록 주소 중 12개에는 직접 블록 주소 저장
    • 직접 블록: 파일 데이터가 저장된 블록
  • 2. 1번으로 충분하지 않다면 13번째 주소에 단일 간접 블록 주소 저장
    • 단일 간접 블록: 파일 데이터를 저장한 블록 주소가 저장된 블록
  • 3. 2번으로 충분하지 않다면 14번째 주소에 이중 간접 블록 주소 저장
    • 이중 간접 블록: 단일 간접 블록들의 주소를 저장하는 블록
  • 4. 3번으로 충분하지 않다면 15번째 주소에 삼중 간접 블록 주소 저장
    • 삼중 간접 블록: 이중 간접 블록들의 주소를 저장하는 블록
    • 여기까지 하면 왠만한 크기의 파일은 다 저장 가능

 

 

예제)

  1. i-node영역 : 루트 디렉터리 영역을 알아내자(항상 고정된 i-node속 위치에 존재)! 1번이네
  2. 루트 디렉터리 영역 : home이 3번이니까 3번i-node를 읽어보자. 210번이네
  3. home 디렉터리 영역(210번) : 민철은 8번 I-node번이니까 121번블록이네.
  4. 민철 디렉터리 영역(121번) : a.sh는 9번 i -node이니까 9번 i - node을 읽어보자.
  5. 9번 i-node :  98 >> 12 >> 13 순으로 읽으면되는 구나.

 

NTFS, EXT 파일 시스템 등 공부해보기...