오래 못 할 짓 하지 않기
[ 운영체제 ] 17. 파일 시스템 본문
파티셔닝 / 포매팅
: 파일 시스템을 통해 파일/디렉터리에 접근하기 위해 필요한 기술
- 파티셔닝
: 저장 장치의 논리적인 영역을 구획하는 작업
- 포매팅
: 1) 파일 시스템을 설정
2) 어떤 방식으로 파일을 관리할지 결정 / 새로운 데이터를 쓸 준비하는 작업
예시
파일 할당 방법
- OS 는 파일/디렉터리를 블록 단위로 읽고 쓴다.
▶ 하나의 파일이 보조기억장치에 저장될 때는 여러 블록에 걸쳐 저장된다.
● 연속 할당
: 보조기억 장치 내 연속적인 블록에 파일 할당
파일 a는 블록 3개에 걸쳐서 저장될 크기...
- 디렉터리 엔트리 : [ 파일 이름 ] + [ 첫 번째 블록 주소 ] + [ 블록 단위 길이 ] 명시
● 단점
1. 외부 단편화 발생.
우선 쭉 나열함.
만약 파일 D,F가 사라진다면?
이 때 빈 블록은 11개임
근데 만약 7블록 이상이 필요한 파일은 할당할 수 있을까?
● 불연속 할당 = 연결 할당
: 각 블록의 일부에 다음 블록의 주소를 저장
= 각 블록이 다음 블록을 가리키는 형태 (Linked List 형태)
- 디렉터리 엔트리 : [ 파일 이름 ] + [ 첫 번째 블록 주소 ] + [ 블록 단위 길이 ] 명시
* 첫 번째 블록만 읽으면 거기서 타고타고 감
* 더 읽을 게 없다 = 다음 주소를 -1
● 단점
1. 반드시 첫 번째 블록부터 하나씩 읽어야 함
2. 오류 발생시 해당 블록 이후의 접근이 어렵다. ( 가는 길에 구멍이 뚫렸다고 생각하면 된다. )
● 불연속 할당 - 색인 할당
: 파일의 모든 블록 주소를 색인 블록이라는 하나의 블록에 모아 관리
▶ 파일 내 임의의 위치에 접근하기 용이하다.
- 디렉터리 엔트리 : [ 파일 이름 ] + [ 색인 블록 주소 ] 명시
FAT 파일 시스템
● 연결 할당 기반 파일 시스템 → 연결 할당의 단점을 보완
위와 같은 연결 할당의 단점을 분석해보자
4번 블록으로 시작해서 > 8 > 3 > 5 ( > -1) 로 끝나는데
중간에서 하나의 블록이라도 고장나면 그 뒤 블록들은 접근할 수 없다.
따라서 FAT = File Allocation Table , 각 블록이 포함된 다음 블록 주소를 한 곳에 모아 관리하는 방법이 FAT이다.
FAT 파일은 캐시 메모리에 저장되면, 임의 접근 속도도 개선시킬 수 있다.
(위) FAT 를 파티션을 간략화 한 모습
(아래) FAT 디렉터리 엔트리
속성 : 읽기 전용 파일인지, 숨김 파일인지, 디렉터리인지...
루트부터 접근을 해야함.
루트 디렉터리에서 홈 디렉터리는 [ 3번 블럭 ] 에 있다.
3번 블록에 가서 홈 디렉터리에 가니 minchul 디렉터리는 [ 15번 블럭 ] 에 있다.
거기에서 보니 a.sh 파일은 [ 9번 블럭 ]에 있다.
그럼 FAT 영역에서 9번 블럭을 보자
9 번 블럭 > 8번 블럭 > 11번 블럭 > 13번 블럭 (끝)
따라서 a.sh 파일은 9 > 8 > 11 > 13번 블럭에 접근하면 된다.
FAT 파일 시스템
: 색인 할당 기반 파일 시스템
색인 블록 == i - node
- 파일의 속성 정보와 15개의 블록 주소 저장
> 만약 15개 블록 이상을 차지하는 파일은?
1. 블록 주소 중 12개에는 직접 블록 주소 저장
2. 1번으로 충분하지 않으면 13번째 주소에 단일 간접 블록 주소 저장
3. 2번으로 충분하지 않으면 14번째 주소에 이중 간접 블록 주소 저장
4. 3번으로 충분하지 않으면 15번째 주소에 삼중 간접 블록 주소 저장
루트에서부터 시작한다. i node 2가 root i-node이고, 거기에 가니 root dir 은 [ 1번 블록 ]에 있다고 한다.
> 가보니까 home의 i node는 3번 i node에 있음
[ 3번 i node ] 에 가보니까 home dir의 위치는 [ 210번 블록 ]에 있다.
> 210 번 블록에서 home dir를 읽음. minchul 디렉터리의 i node는 8번
8 번 i node에 가보니까 minchul dir의 데이터는 [ 121 번 블록 ]에 있다고 한다.
> 121번 블록에서 minchul dir 읽고, 거기에 a.sh i node가 9번인 걸 읽음
9 번 i node에 가보니 a.sh은 98 > 12 > 13 번 블록을 읽는 것이 필요하다고 함
(출처)
유튜브 한빛미디어
'3학년 1학기 > 운영체제 (OS)' 카테고리의 다른 글
[ 운영체제 ] 2. System call (0) | 2024.03.16 |
---|---|
[ 운영체제 ] 1. Introduction (0) | 2024.03.12 |
[ 운영체제 ] 16. 파일/디렉터리 관리 (0) | 2024.01.24 |
[ 운영체제 ] 15. 페이징의 이점 , 계층적 페이징 (0) | 2024.01.24 |
[ 운영체제 ] 14. 페이지 교체 / 프레임 할당 (0) | 2024.01.23 |