[운영체제] 파일 시스템

·2024년 9월 29일
0

운영체제

목록 보기
10/10

파일시스템

  • file과 directory를 보조기억장치에 저장하고 접근하게 하는 운영체제의 내부 프로그램
  • ex.FAT 파일 시스템, 유닉스 파일 시스템

파일 할당

  • 파일과 디렉터리를 읽고 쓰는 단위: 블록
  • 블록에 사용할 파일을 할당
  • 할당 방식
    • 연속 할당 (contiguous allocation)
    • 불연속 할당
      • 연결 할당 (linked allocation)
      • 색인 할당 (indexed allocation)

연속 할당 contiguous allocation

  • 이름 그대로 보조기억장치 내 연속적인 블록에 파일을 할당
  • 파일 접근을 위해서 첫 번째 블록 주소, 파일 길이만 알면 됨
  • 단점
    • 메모리 할당에서도 배웠듯 외부 단편화를 일으킴 (파일이 삭제됐을 때를 상상해 보삼)
    • 외부 단편화: 파일이 삭제됐다고 가정하면, 한 파일을 할당할 수 있는 빈 블록의 총 개수는 충분하지만, 연속적인 블록으로 존재하지 않아서 결국에는 할당이 불가능해짐

  • 0번 블록에서 시작하여 길이 2만큼 연속으로 할당된 count 파일
  • 14번 블록에서 시작하여 길이 3만큼 연속으로 할당된 tr 파일

연결 할당 linked allocation

  • 각 블록에 다음 블록의 주소를 저장하는 방식
  • 자료구조의 연결리스트 형식
  • 각 블록이 다음 블록을 가리키고 있으므로, 파일이 여러 블록에 흩어져 있을 수 있음
  • 대표적인 파일 시스템 → FAT 파일 시스템
  • 단점
    • 파일의 중간 부분에 접근하고 싶어도, 반드시 첫 번째 블록부터 읽어야 함 → 임의 접근 시 속도 느림
    • 오류 발생 시, 오류가 발생한 블록 이후 블록은 접근할 수 없음

  • 9번 블록이 16번을 가리키고, 16번은 1번 블록을, 1번 블록은 11번 블록을……


색인 할당 indexed allocation

  • 파일의 모든 블록 주소를 하나의 블록(index block)에 모아서 관리
  • 임의 위치의 파일에 접근하기 쉬움 → index block의 i번째 블록에 접근하면 되므로
  • 대표적인 파일 시스템: 유닉스 파일 시스템

  • 19번 블록에 index들을 관리



FAT 파일 시스템

  • 연결 할당(linked allocation) 기반
    • 연결 할당의 단점
      1. 임의 접근 시 속도 느림
      2. 고장/오류 발생 시 해당 블록 이후 블록은 접근할 수 없음
  • 연결 할당의 단점을 보완하기 위해 FAT(File Allocation Table) 활용
  • 블록을 나타내는 비트 수를 기반으로 하여 FAT12, FAT16, FAT32 버전 존재

FAT(File Allocation Table)

  • 각 블에 저장된 다음 블록의 주소들을 테이블 형태로 관리함, 이 테이블이 FAT
  • 파일의 첫 번째 블록만 알면 모든 블록에 접근할 수 있음
  • FAT의 일부나 전체가 메모리에 적재됨 → 연결 할당 방식보다 임의 접근 성능이 개선됨


유닉스 파일 시스템

  • 색인 할당(indexed allocation) 기반
  • 색인 블록은 i-node(index-node)라고 부름
    • 파일마다 i-node가 존재

i-node

  • i-node는 기본적으로 15개의 블록을 차지하는 파일까지를 가리킴
  • 파일 데이터가 저장된 블록을 직접 블록(direct block)이라고 함

Q. 오잉 그럼 블록이 15개 이상이 필요할 때는?

A. 이러한 케이스를 위해 아래와 같은 시스템 구축. 이렇게하면 웬만한 크기의 파일은 모두 표현 가능


1. 12개의 블록에는 직접 블록 주소를 저장

  • 직접 블록(direct block): 파일 데이터가 저장된 블록

2. 1번으로 충분하지 않다면, 13번째 블록 주소에는 단일 간접 블록 주소 저장

  • 단일 간접 블록(single indirect block): 파일 데이터를 저장한 블록 주소가 저장된 블록

3. 2번으로 충분하지 않다면, 14번째 블록 주소에는 이중 간접 블록 주소 저장

  • 이중 간접 블록(double indirect block): 단일 간접 블록들의 주소를 저장하는 블록

4. 3번으로 충분하지 않다면, 15번째 블록에는 삼중 간접 블록 주소 저장

  • 삼중 간접 블록(triple indirect block): 이중 간접 블록들의 주소가 저장된 블록

  • 위 내용을 그림으로 나타내 보면



저널링 파일 시스템

  • 파일 시스템 업데이트 과정 중 시스템 크래시가 일어난다면?
    • 데이터가 유효하지 않은 상태가 될 수 있음
    • 이를 해결하기 위한 방법 → 저널링
  • 저널링: 작업 로그를 통해 시스템 크래시 발생 시 빠르게 복구하기 위한 기법
  • 수행 방식
    • 작업 직전 파티션의 로그 영역에 작업에 대한 로그 남김
    • 작업 수행
    • 작업이 끝나면 로그 삭제
  • 시스템 크래시가 발생하여 다시 부팅해야 할 때, 파일 시스템 전체를 검사하지 않고 로그 영역에 남긴 로그만 검사 → 빠르게 복구 가능

마운트

  • 한 저장 장치의 파일 시스템에서 다른 저장 장치의 파일 시스템에 접근할 수 있도록 파일 시스템을 편입시키는 것

  • ex. USB 메모리의 파일 시스템을 컴퓨터의 파일 시스템에 마운트하면, 컴퓨터는 USB의 파일 시스템에 접근 가능!

  • 보통 mount 명령어로 간편하게 마운트 가능



Reference

  • 혼자 공부하는 운영체제
  • 공룡책

0개의 댓글

관련 채용 정보