본문 바로가기
컴퓨터공학기초 개념/운영체제

36. 파일시스템 - 파일 시스템의 이해

by devraphy 2021. 7. 9.

1. 파일시스템이란?

- 파일 시스템은 운영체제가 저장매체에 파일을 쓰기(write)위한 자료구조 또는 알고리즘을 의미한다.

 

a) 파일 시스템이 만들어진 이유(블럭)

- 0과 1로 이루어진 데이터를 어떻게 저장매체에 관리할까?

     ▶ 비트 단위로 주소를 매겨서 읽고 쓰고 등 관리하기에 오버헤드가 너무 크다

     ▶ 그래서 블럭 단위로 관리하는 방법이 고안됨 (4kb 단위)

     ▶ 블럭마다 고유번호를 부여하여 읽고 쓰는 방식이 고안됨 

 

-그러나 데이터가 점점 많아 질수록 일반 사용자가 블럭을 관리하는데 한계를 느낌

    ▶ 그래서 블럭이 아닌, 사용자가 이해하기 쉬운 데이터의 집합(= 객체)이라는 개념이 생김

    ▶ 데이터의 집합 = 객체 = 파일 이라는 개념이 등장

    ▶ 사용자는 파일 단위로 데이터를 관리하고, 각 파일은 블럭 단위로 데이터를 관리 

 

b) 어떻게 저장할 것인가?

- 파일이 많아질수록 저장매체에 효율적으로 파일을 적재하는 방식에 대한 고민이 생김

    ▶ 처음에는 파일을 연속적인 공간에 저장하자는 아이디어가 고안됨

    ▶ 그러나 외부 단편화와 같은 문제로 불연속적인 저장방식의 필요성이 생김

        ex) 블록체인 - 블록을 linked list 형태로 연결, 블록을 검색하려면 맨 처음 블록부터 읽어나가야 함

              ▶ 그 블록체인 아님

        ex) 인덱스 블록기법 - 각 블록의 위치정보를 기록하여, 한번에 마지막 블록을 찾아갈 수 있도록 함 

 


2. 파일 시스템의 종류 

a) Window

- FAT, FAT32, NTFS

- 블록의 위치를 FAT라는 자료구조에 기록

- 최근에는 NTFS를 활발히 사용 

 

b) Linux / Unix

- ext2, ext3, ext4

- 일종의 인덱스 블록 기법인 inode 방식을 사용


3. 시스템 콜과 파일 시스템

- 만약 파일 시스템 관련 시스템 콜(커널 영역의 명령어)이 파일 시스템에 따라 다르다면 어떨까?

- 파일 시스템에 따라 다른 시스템 콜을 사용해야 하므로 개발자의 입장에서는 굉장히 불편할 것이다. 

- 다행히도 파일 시스템과 관련된 시스템 콜은 다양한 파일 시스템을 지원하도록 구현되어 있다. 

C언어 - 파일 시스템 관련 시스템 콜(메소드)의 예시

댓글