CS 공부

[CS] {운영체제} 파일

ogh4554 2025. 5. 7. 23:27

1. 파일과 디렉터리

- 보조기억장치의 데이터 덩어리

 

1) 파일

- 보조기억장치에 저장된 관련 정보의 집합

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

 

2) 디렉터리

- 윈도우에서는 폴더

(1) 1단계 디렉터리

: 1개의 디렉터리 안에 다양한 파일

(2) 트리 구조 디렉터리

: 여러 계층으로 파일 및 폴더를 관리

 

** 경로

- 디렉터리를 이용해 파일/디렉터리의 위치, 이름까지 특정 지을 수 있는 정보

- 절대경로와 상대경로

(1) 절대 경로 : 루트 디렉터리에서 자기 자신까지 이르는 고유한 경로

(2) 상대 경로 : 현재 디렉터리에서 자기 자신까지 이르는 경로

 

** 많은 운영체제에서는 디렉터리를 그저 '특별한 형태의 파일'로 간주!

 

3)디렉터리 엔트리

- 파일의 내부에는 파일과 관련된 정보들이 있다면

- 디렉터리의 내부에는 해당 디렉터리에 담겨있는 대상과 관련된 정보들이 담겨있다.(보통 테이블(표)형태로 구성)

- 각 엔트리에 담기는 정보

(1. 디렉터리에 포함된 대상의 이름 / 2. 대상이 보조기억장치 내에 저장된 위치 )


 

2. 파일 시스템

- 파일과 디렉터리를 관리하는 운영체제 내의 프로그램

 

1) 파티셔닝과 포매팅

- 한 번도 사용된 적 없는 하드 디스크/SSD는 파티셔닝과 포매팅 없이는 사용할 수 없음.

(1) 파티셔닝

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

(2) 포매팅

: 파일 시스템을 설정.

- 어떤 방식으로 파일을 관리할지 결정 / 새로운 데이터를 쓸 준비 작업

 

=> 포매팅까지 완료되면 파일과 디렉터리 생성이 가능해짐!

 

2) 파일 할당 방법

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

- 운영체제는 파일/디렉터리를 블록 단위로 읽고 쓴다!

(즉, 하나의 파일이 보조기억장치에 저장될 때에는 여러 블록에 걸쳐 저장)

 

(1) *연속 할당*

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

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

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

 

- 구현이 단순하지만 '외부 단편화'를 야기할 수 있는 부작용이 있다.

 

(2) *불연속 할당*

- 오늘날 사용되는 방식

 

a. 연결 할당

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

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

- 불연속 할당의 일종 -> 파일이 여러 블록에 흩어져 저장되어도 무방

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

- 반드시 첫 번째 블록부터 하나씩 읽어들여야 한다는 단점(임의 접근 속도가 느리다)

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

 

b. 색인 할당

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

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

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

 

 

3) 파일 시스템 살펴보기

(1) FAT 파일 시스템

FAT 파일 시스템의 파티션 모습

 

- 연결할당 기반 파일 시스템

- 연결할당의 단점을 보완(FAT가 메모리에 캐시될 경우 느린 임의 접근 속도 개선 가능)

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

 

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

 

 

(2) 유닉스 파일 시스템

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

- 색인 블록 == i-node (파일의 속성정보와 15개의 블록주소 저장가능)

 

Q. 15개 블록 이상을 차지하는 파일은?

- 블록 주소 중 12개에는 직접 블록 주소 저장

- 충분하지 않다면 13번째 주소에 '단일 간접 블록 주소' 저장

*단일 간접 블록 주소 : 파일 데이터를 저장한 블록 주소가 저장된 블록

- 그래도 충분하지 않다면 14번째 주소에 '이중 간접 블록 주소' 저장

*이중 간접 블록 주소 : 단일 간접 블록들의 주소를 저장하는 블록

그래도 부족하다면 15번째 주소에 '삼중 간접 블록 주소' 저장(이중 간접 블록들의 주소 저장)