Computer Science/Introduction

혼자 공부하는 컴퓨터구조 + 운영체제: 6. 파일 시스템

컴퓨터 탐험가 찰리 2022. 12. 31. 19:08
728x90
반응형

 

15.  파일 시스템

 

파일과 디렉터리

 

파일

파일: 의미있고 관련 있는 정보를 모은 논리적 단위

속성(attribute) | 메타데이터(metadata): 이름, 실행하기 위한 정보 등 부가 정보

 

파일을 다루는 작업은 시스템 호출에 의해 이루어진다. 어떤 응용프로그램도 임의로 파일을 조작할 수 없으며 파일을 다루려면 운영체제가 직접 다루도록 되어있다. 운영체제는 파일 열기, 읽기, 쓰기 등 다양한 시스템 호출을 제공한다.

 

디렉터리

파일들을 관리하기 위해 묶어놓은 것이 디렉터리이다. 윈도우 운영체제에서는 폴더(folder)라고 부른다. 운영체제 입장에서는 디렉터리도 파일의 한 종류이다. 파일 이름과 파일을 유추할 수 있는 정보의 테이블로 구성된 것을 디렉터리로 인식하고, 디렉터리도 파일처럼 시스템 호출을 통해 관리된다. 

 

 

 

파티셔닝과 포매팅

 

  • 파티셔닝(partitioning): 저장 장치의 논리적인 구획을 나누는 것. 하드 디스크에 주로 적용하여 파티션을 나누어 관리한다.
  • 포매팅(formatting): 저수준 포매팅은 저장 장치 생산 시 수행되는 물리적인 포매팅. 논리적 포매팅은 파일 시스템을 설정하여 어떤 파일 시스템을 사용할 지 정하는 것(FAT32 등의 여러 방식이 있다)

 

 

 

파일 할당 방법

앞서 배웠듯이 운영체제는 파일과 디렉터리를 블록 단위로 읽고 쓴다. 더 작은 단위의 섹터가 있지만 섹터는 너무 작은 단위이고 개수가 많기 때문이다. 크기가 큰 파일은 여러 블록에 나뉘어 저장된다.

 

  • 연속 할당(continuous allocation): 블록에 순차적으로 파일 데이터를 저장한다. 단순 저장 시에는 깔끔할 수 있으나, 중간 부분에 파일이 삭제됐을 경우 외부 단편화를 야기할 수 있다. 페이지 할당때와 똑같다.
  • 연결 할당(linked allocation): 연결된 리스트 구조로 파일을 각 블록에 할당하는 방식이다. 각 블록에 다음 데이터가 있는 위치를 기록한다. 가령 2번 블록 -> 13번 블록 -> 5번 블록... 식으로 저장한다. 이 방식은 자료 구조의 특성상 임의의 위치에 접근하고 싶더라도 무조건 처음 데이터부터 조회해야해서 속도가 느리다. 그리고 혹시라도 중간에 결함이 생긴 데이터가 발생하면 그 뒤의 모든 데이터가 사용할 수 없게 된다는 단점이 있다.
  • 색인 할당(index allocation): 어떤 파일의 데이터를 색인 블록(index block)이라는 하나의 블록에 모아서 관리하는 방식이다. 색인 할당을 기반으로 만든 파일 시스템이 유닉스 파일 시스템이다.

 

 

파일 시스템

 

FAT(File Allocation Table)

연결 할당을 보완한 방식. 다음 블록의 주소를 각 파일의 블록에 표시하는 것이 아니라 테이블 형태로 한꺼번에 표시하여 관리한다. 첫 번째 블록 주소만 알면 FAT를 이용하여 전체 파일의 주소지들을 알 수 있다. 버전에 따라 FAT12, FAT16, FAT32가 있으며 숫자는 블록을 표현하는 비트 수를 의미한다.

 

연결 할당 방식
FAT, 디렉터리 구

 

FAT는 파티션의 앞부분에 만들어진다. 실행 중 FAT는 메모리에 적재되어 블록 검색 속도를 향상시킬 수도 있다.

FAT 파일 시스템과 파티션 구성

 

 

각 영역별로 해당하는 디렉터리의 첫 번째 블록 주소를 포함하여 구성한다. 그리고 각 디렉터리의 엔트리(각 표의 행)에는 아래와 같은 파일 속성(File Attribute) 정보들을 저장한다.

 

 

유닉스 파일 시스템

색인 할당 기반의 방식. 색인 블록을 두어 파일 속성 및 각 데이터 블록을 가리키는 블록 주소들을 표기한다. 이 색인 정보를 표시하는 블록을 i-node(index-node)라고 한다.

i-node와 직접 블록 주소 지정 방식

 

i-node의 크기는 유한하다. 만약 i-node에 파일속성을 저장할 수 있는 블록이 1개, 블록 주소를 저장할 수 있는 블록이 14개 라면 14개 만큼만 다른 데이터를 가리킬 수 있다. 그 이상으로 많은 데이터를 가리켜야할 경우, 블록 주소 1개가 데이터 1개를 가리키는 직접 블록 주소 방식을 사용하기보다는 그 블록이 다른 블록 주소들을 저장하는 또 다른 주소 블록을 가리키도록하는 간접 블록(indirect block) 방식을 사용한다.

간접 블록 주소 지정 방식

728x90
반응형