본문 바로가기

나름컴공이라공/Linux Kernel

Linux Kernal Internal > Ch5 파일시스템과 가상 파일시스템(1)

☆★☆2016.01.13 작성☆★☆
☆★☆참고책 _리눅스 커널 내부구조(저자_백승재, 최종무)☆★☆

 

 

1. 파일시스템 일반

* 파일시스템 : 보조 기억장치(ex 하드 디스크) 같은 저장장치를 관리하는 소프트웨어

- 기억장치는 한정, 내부/외부 단편화 최소화

 

* 메모리 관리 기법과 파일시스템의 차이 : naming 기법

- 메모리 관리 기법 + Naming = 파일시스템

- 파일시스템은 사용자에게 이름이라는 속성으로 접근되는 '파일'이라는 개념 제공

- 이름 값을 입력받아 해당 데이터 처리, 리턴

 

* 파일시스템의 하드디스크의 정보

- 메타 데이터 : 파일의 속성 정보, 이름 데이터 블록 인덱스 등.. 저장

- 사용자 데이터 : 실제 기록하려는 내용 저장

 

2. 디스크 구조와 블록 관리 기법

(그림참조) http://wingsofgod.tistory.com/category/%EC%BB%B4%ED%93%A8%ED%84%B0%20%EC%A7%80%EC%8B%9D?page=5

 

* 하드디스크 물리적 구조

- 원판(plotter) : 원모양 track(512byte의 섹터로 구분)

같은 위치를 같은 트랙들의 집합 cylinder

- arm

- head : 각 원판에 하나씩 존재

- head 개수, 실린더 개수, 섹터 개수에 따라 디스크의 용량과 물리적 특성 결정

 

* 데이터 접근 시간

- 탐색 시간 : 헤드를 요청한 데이터가 해당 트랙까지 가는데 걸리는 시간

- 회전 지연 시간 : 요청한 섹터가 헤드 아래로 갈 깨까지 디스크 원판을 회전시키는데 걸리는 시간

- 데이터 전송 시간 : 헤드가 섹터의 내용을 읽고 쓰는데 걸리는 시간

 

 

 

 

* 하드디스크 논리적 구조

- 논리적인 디스크 블록들의 집합

- 디스크 블록 : 논리적인 번호를 갖음(크기는 4kb)

- 디스크 디바이스 드라이버 or 디스크 컨트롤러 : 디스크 블록 번호와 섹터를 mapping시키는 역할

 

* 디스크 블록의 할당과 회수(색 칠해진 것 : 디스크 블록 사용 상태 / 안 칠해진 것 : free 상태)

- 연속 할당 : 2개의 디스크 필요시, 연속된 7번 8번 디스크 블록에 할당

-> 탐색 시간이 적기 때문에 읽는 속도 빠름.

-> 파일의 크기 변화시, 기존의 디스크 블록을 더 넓은 곳으로 복사해서 새로운 내용 추가

- 불연속 할당 : free한 어떠한 블록에라도 할당이 가능, 2번 5번 디스크 블록에 할당

 

* 정보 기록 방법

- 블록 체인 기법(block chain)

(그림참조) http://atsequence.tistory.com/8

 

 

: Linked list와 유사하게 체인으로 연결하는 방법

첫 번째 디스크 블록에서 포인터를 이용하여 다음 블록 위치 탐색가능

-> 파일 끝을 읽을 때도 앞에서부터 읽어야함 / 중간 블록 유실시 나머지 데이터 모두 읽어버림

 

- 인덱스 블록 기법(index block)

(그림참조) http://atsequence.tistory.com/8

 

 

: 블록들의 위치 정보를 기록한 인덱스 블록 사용하는 방법 (리눅스에서는 inode)

-> 인덱스 블록 유실시, 파일의 데이터 전체가 없어짐 / 인덱스 블록을 위한 별도 공간 필요

 

- FAT 기법(File Allocation Table)

(그림참조) http://atsequence.tistory.com/8

 

: 같은 파일이 속해있는 블록들의 위치를 FAT 자료구조(파일시스템 관리 공간에 전역적으로 존재)에 기록

-> FAT 구조가 소실되면, 파일시스템 내의 모든 파일이 소실된다는 문제 (요즘은 중복해서 관리)