프로그래밍/컴퓨터구조 및 운영체제

파일 시스템

gameObject 2023. 12. 3. 15:43
728x90

* 혼자공부하는 컴퓨터구조 운영체제를 공부하였습니다.


파일시스템이란

파일과 디렉터리를 보조기억장치에 할당하고 접근하는 방법이다.

대표적으로 FAT 파일 시스템과 유닉스 파일 시스템이 있다.

 

막 공장에서 생산되어 한번도 사용된 적이 없는 하드디스크 or SSD가 있다면

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

* 파티셔닝

 - 저장장치의 논리적인 영역을 구획하는 작업

 - 보조기억장치의 영역을 나누는 작업이다.

 - 파티셔닝을 통해 나눠진 영역 하나를 파티션이라고 한다.

* 포매팅

 - 어떤 방식으로 파일을 저장하고 관리할지 결정하는 작업이다.

 - 파일 시스템을 설정하여 새로운 데이터를 쓸 준비를 하는 작업.

 - 물리적 포매팅(공장 수행)과 논리적 포매팅(파일 시스템 생성)이 있다.

 

옛날에는 USB를 처음 구매후 컴퓨터에 꽂으면 포매팅을 하라고 나왔었다고 한다.


파일시스템에는 여러 종류가 있고, 파티션마다 다른 파일시스템을 설정할 수 있다.

포매팅까지 완료하여 파일 시스템을 설정했다면 이제 파일과 디렉터리 생성이 가능해진다.

 

파일 할당 방법

- 포매팅까지 끝난 하드 디스크에 파일을 저장하기

- 운영체제는 파일/디렉터리를 블록 단위로 읽고 쓴다. (하나의 파일은 여러 블록에 걸쳐 보조기억장치에 저장됨)

 -> 하드디스크의 가장 작은 저장단위는 섹터이지만 보통 블럭단위로 읽고쓴다.

- 연속할당과 불연속할당(연결할당, 색인 할당)의 방법이 있다. (불연속 할당을 많이 사용한다.)

 

연속 할당

- 보조기억장치 내 연속적인 블록에 파일 할당

- 연속된 파일에 접근할때는 첫번째 블록 주소와 블록 단위의 길이만 알면 된다.

- 디렉터리 엔트리: 파일 이름 & 첫번째 블록 주소 & 블록 단위 길이

단점: 구현이 단순하지만 외부 단편화를 야기할 수 있다.

 

불연속 할당

연결할당

- 각 블록의 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키는 형태

- 파일을 이루는 데이터 블록을 연결리스트로 관리

- 파일이 여러 블록에 흩어져 저장되어도 무방하다.

- 디렉터리 엔트리 : 파일 이름 & 첫번째 블록 주소 & 블록 단위의 길이

- 블록의 끝에는 특별한 지시자를 사용한다. (예를들어 -1을 표시하거나, 끝을 알 수 있도록)

단점

- 파일의 임의의 위치에 접근하는 속도가 느리다. (중간부터 읽기가 안됨)

- 오류 발생시 해당 블록 이후 블록은 접근이 어렵다.

 

색인할당

- 파일의 모든 블록 주소를 색인 블록이라는 하나의 블록에 모아 관리

- 파일 내 임의의 위치에 접근이 용이하다.

- 디렉터리 엔트리: 파일 이름 & 색인 블록 주소

 


실제로 사용되는 파일 시스템

1. FAT 파일 시스템

- USB, SD카드 등 저용량 저장장치에서 사용된다.

1) 연결 할당 기반 파일 시스템

2) 연결 할당의 단점을 보완했다.

 - 각 블록에 포함된 다음 블록 주소를 한데 모아 테이블(FAT: File Allocation Table)로 관리

 - FAT 12, 16, 32는 블록을 표현하는 비트수이다.

 - FAT는 메모리에 캐시될 경우 느린 임의 접근 속도 개선된다.

3) 디렉터리 엔트리: 파일 이름, 확장자, 속성, 예약영역, 생성시간, 마지막접근시간, 마지막 수정시간, 시작블록, 파일 크기

2. 유닉스 파일 시스템

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

- 색인 블록 == i-node

1) 파일의 속성 정보와 15개의 블록 주소 저장이 가능하다. (i-node만 읽어도 15개 정보를 가져온다.)

2) 15개보다 큰 파일은?

 - 블록 주소 중 12개에는 직접 블록 주소 저장 (직접 블럭: 파일 데이터가 저장된 블록)

 - 12개로 부족하다면 13번째 주소에 단일 간접 블록 주소 저장(단일 간접블럭 : 파일 데이터를 저장한 블록 주소가 저장된 블록)

 - 두번째로도 부족하다면 14번째에 이중 간접 블록 주소 저장(이중간접블럭: 단일 간접 블럭들의 주소를 저장하는 블럭)

 - 세번째로도 부족하다면 15번째에 삼중 간접 블록 주소 저장(삼중간접블럭: 이중 간접 블럭들의 주소를 저장하는 블럭)

3) I-node가 파일 시스템의 핵심이다.

 - 이 파일의 속성, 저장된 위치들까지 전부 다 알 수 있다.(파일 크기가 아무리 크더라도).

 - 파일 이름을 뺀 모든것을 갖고있다고 봐도 된다.

 - 디렉터리 엔트리 : i-node 번호, 파일 이름

 

** 파일 시스템에 대한 개념은 굉장히 방대하다고 한다. 파일시스템만 다루는 전공서적도 있을 정도

이외에도 윈도우즈의 NTFS, 리눅스의 EXT 파일시스템을 알아두면 좋다고 한다.

728x90