목차
- 파일
- 디렉터리
- 파일 할당 방법
- 파일 시스템
파일 시스템(file system)
- 파일과 디렉터리를 관리하는 운영체제 내의 프로그램
- 파일과 디렉터리를 다루어 주는 프로그램
파일과 디렉터리
- 보조기억장치의 데이터 덩어리, 파일과 디렉터리
파일
- 보조기억장치에 저장된 관련 정보의 집합
- 의미 있고 관련 있는 정보를 모은 논리적 단위
파일을 이루는 정보
- 파일을 실행하기 위한 정보 + 부가 정보 (= 속성, 메타 데이터)
파일의 속성
파일 연산을 위한 시스템 호출
- 파일 생성
- 파일 삭제
- 파일 열기
- 파일 닫기
- 파일 읽기
- 파일 쓰기 등
디렉터리
- 윈도우에서는 폴더(folder)
- 1단계 디렉터리
- 여러 계층으로 파일 및 폴더를 관리하는 트리 구조 디렉터리
- 최상위 디렉터리(루트 디렉터리, /), 서브 디렉터리
경로
- 디렉터리를 이용해 파일/디렉터리의 위치, 나아가 이름까지 특정 지을 수 있는 정보
- 절대 경로: 루트 디렉터리에서 자기 자신까지 이르는 고유한 경로
- /home/minchul/a.sh
- 상대 경로: 현재 디렉터리에서 자기 자신까지 이르는 경로
- 현재 디렉터리 경로가 /home 일 경우: guest/d.jpg
디렉터리 연산을 위한 시스템 호출
- 디렉터리 생성
- 디렉터리 삭제
- 디렉터리 열기
- 디렉터리 닫기
- 디렉터리 읽기 등
디렉터리 엔트리
사실 많은 운영체제에서는 디렉터리를 그저 '특별한 형태의 파일' 로 간주한다.
즉, 디렉터리는 그저 '포함된 정보가 조금 특별한 파일'
파일의 내부에는 파일과 관련된 정보들이 있다면,
디렉터리의 내부에는 해당 디렉터리에 담겨 있는 대상과 관련된 정보들이 담겨 있다.
- 이 정보는 보통 테이블(표) 형태로 구성
디렉터리 엔트리
- 각 엔트리(행)에 담기는 정보
- 디렉터리에 포함된 대상의 이름
- 그 대상이 보조기억장치 내에 저장된 위치(를 유추할 수 있는 정보)
다음과 같이 디렉터리 엔트리에 파일 속성을 명시하는 경우도 있다.
. : 현재 디렉터리
.. : 상위 디렉터리
파일 시스템
- 파일 시스템이 파일과 디렉터리를 보조기억장치에 할당하고 접근하는 방법
- 대표적인 파일 시스템의 종류(FAT 파일 시스템, 유닉스 파일 시스템)
파티셔닝과 포매팅
- 이제 막 공장에서 생상되어 한 번도 사용된 적 없는 새 하드 디스크/ SSD
- 파티셔닝, 포매팅 하기 전까지는 사용할 수 없다.
파티셔닝
- 저장 장치의 논리적인 영역을 구획하는 작업
- 구분된 하나의 영역을 파티션이라고 한다.
포매팅
- 파일 시스템을 설정
- 어떤 방식으로 파일을 관리할지 결정, 새로운 데이터를 쓸 준비하는 작업
- 논리적 포매팅
USB 포매팅 예시
파일 시스템은 포매팅할 때 결정된다.
- 파일 시스템에는 여러 종류가 있고,
- 파티션마다 다른 파일 시스템을 설정할 수도 있다.
파일 할당 방법
- 포매팅까지 끝난 하드 디스크에 파일을 저장하기
- 운영체제는 파일/디렉토리를 블록 단위로 읽고 쓴다.
- 즉, 하나의 파일이 보조기억장치에 저장될 때에는 여러 블록에 걸쳐 저장된다.
- 하드 디스크의 가장 작은 저장 단위는 섹터이지만 보통 블록 단위로 읽고 쓴다.
파일을 보조기억장치에 할당하는 두 가지 방법
- 연속 할당
- 불연속 할당
연속 할당
- 이름 그대로 보조기억장치 내 연속적인 블록에 파일 할당
- 연속된 파일에 접근하기 위해 파일의 첫 번째 블록 주소와 블록 단위의 길이만 알면 된다.
- 디렉터리 엔트리: 파일 이름 & 첫 번째 블록 주소 & 블록 단위 길이 명시
- 구현이 단순하지만 외부 단편화를 야기할 수 있다.
파일 D와 F 삭제(잔여 블록 11개, 블록 7개 이상 사용하는 파일 할당 X)
불연속 할당 - 연결 할당
- 각 블록의 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키는 형태로 할당
- 파일을 이루는 데이터 블록을 연결 리스트로 관리(LinkedList와 똑같은 듯!)
- 불연속 할당의 일종: 파일이 여러 블록에 흩어져 저장되어도 무방
디렉터리 엔트리: 파일 이름 & 첫 번째 블록 주소 & 블록 단위의 길이
- 블록의 끝이라면 표시자를 기록
단점
- 반드시 첫 번째 블록부터 하나씩 읽어들여야 한다.
- 접근 속도가 느리다.
- 오류 발생시 해당 블록 이후 블록은 접근이 어렵다.
불연속 할당 - 색인 할당
- 파일의 모든 블록 주소를 색인 블록이라는 하나의 블록에 모아 관리하는 방식
- 파일 내 임의의 위치에 접근하기 용이하다.
디렉터리 엔트리: 파일 이름 & 색인 블록 주소
FAT 파일 시스템
- 연결 할당 기반 파일 시스템
- 연결 할당의 단점을 보완
각 블록에 포함된 다음 블록 주소를 한데 모아 테이블(FAT: File Allocation Table) 로 관리
FAT를 활용하는 파일 시스템
디렉터리 엔트리
FAT 파일 시스템에서 파일에 어떤 식으로 접근할까요?
유닉스 파일 시스템
- 색인 할당 기반 파일 시스템
- 색인 블록 == i - node
- 파일의 속성 정보와 15개의 블록 주소 저장 가능
i-node를 사용하는 파일 시스템
- i-node가 파일 시스템의 핵심
그럼 15개 블록 이상을 차지하는 파일은 어떡할까요?
유닉스 파일 시스템은 이러한 문제를 다음과 같이 해결합니다.
- 1. 블록 주소 중 12개에는 직접 블록 주소 저장
- 직접 블록: 파일 데이터가 저장된 블록
- 2. 1번으로 충분하지 않다면 13번째 주소에 단일 간접 블록 주소 저장
- 단일 간접 블록: 파일 데이터를 저장한 블록 주소가 저장된 블록
- 3. 2번으로 충분하지 않다면 14번째 주소에 이중 간접 블록 주소 저장
- 이중 간접 블록: 단일 간접 블록들의 주소를 저장하는 블록
- 4. 3번으로 충분하지 않다면 15번째 주소에 삼중 간접 블록 주소 저장
- 삼중 간접 블록: 이중 간접 블록들의 주소를 저장하는 블록
- 윈도우 운영체제에서 사용하는 NTFS(파일 시스템)
- 리눅스 운영체제에서 사용하는 EXT 파일 시스템
해당 포스팅에 나온 글과 이미지들은 강민철 저자님의 혼자 공부하는 컴퓨터 구조 + 운영체제의 책과 강의를 참고하여 만들어졌습니다.
책에서 보다 깊게 나오는 내용이 있으므로 한번 구매하고 보셔도 좋을 것 같습니다.
'CS' 카테고리의 다른 글
[CS] 병행성과 병렬성 (0) | 2024.11.06 |
---|---|
[CS] PCB와 TCB (0) | 2024.11.06 |
[CS] 페이지 교체와 프레임 할당 (0) | 2024.05.26 |
[CS] 페이징의 이점 (0) | 2024.05.26 |
[CS] 운영체제의 메모리 관리 방식 페이징 (0) | 2024.05.26 |