(1) 파일시스템의 이해

○ 파일 : 물리적 저장매체에 저장되는 프로그램이나 데이터 정보에 대한 논리적 저장단위
  - 물리적 저장매체 -> ex) 디스크, 자기테이프, CD-ROM, 광디스크
  - 논리적 저장단위 -> ex) 파일명을 부여하는것

○ 리눅스에선 어떤 디스크가 시스템에 설치되면 장치파일로 해당 디스크에 접근한다. 
  - 장치파일은 /dev 디렉토리 내에 위치한다.

파일시스템 : 각 파티션 내의 파일을 어떻게 관리할 것인가에 대한 방법을 정의한다. 
  - 파일저장, 파일명의 제한, 확장자명 제한, 파일저장위치 등..
  - 파일시스템은 각파티션마다 하나씩 만들어진다. 
  - 일반적으로 파일시스템은 파일 관리의 편의를 위해 디렉토리 구조를 사용한다.

○ 리눅스는 가상파일시스템(VFS; Virtual File System)을 채용해서 다양한 파일시스템을 지원한다.


(2) 가상파일시스템(VFS)

VFS는 다양한 파일 시스템을 일관된 형태로 인식할 수 있도록 하기위한 기법이다.
  - 사용자는 물리적 장치의 파일 시스템을 고려하지않고 read/write함수를 호출하면 sys_read/sys_write 와 같은 시스템 콜
    처리함수를
거쳐서 각 파일 시스템마다 실체적으로 읽고/쓰는 함수로 연결하여 처리한다.
  - VFS는 사용자에게 다양한 파일시스템을 일관되게 보여준다.


(3) 파일 저장공간 할당 방법

○ 파일시스템은 파일을 디스크블록이라는 논리적인 단위의 집합으로 관리한다.
  - 파일은 블록단위로 분할되어 일정한 장소에 저장된다.
  - 파일시스템에 따라 블록은 1KB(2섹터), 4KB(8섹터), 16KB(32섹터), 64KB(128섹터)로 나뉜다.
  - 디스크블록과 대응되는 섹터들을 매핑하는 역할은 디스크 디바이스 드라이버(디스크컨트롤러)가 수행한다.

파일에 디스크블록을 할당하는 방법
  - 연속할당 -> 하나의 파일에 디스크 블록을 연속으로 할당. 
    장점 : 블록이 인접해 있어서 디스크 탐색 시간이 짧다. 
    단점 : 외부 단편화 현상이 일어난다.
    파일의 크기가 가변적으로 변할 경우 크기가 커져서 지금의 자리에서 연속할당이 안되면 공간을 찾아서 파일 전체를 이동
    해야한다. 


불연속할당 -> 현재 비어있는 블록이라면 연속적이지 않아도 모두 파일에 할당할수 있는 방법 
  - 장점 : 파일 전체를 이동하는 문제가 발생하지 않는다. 
  - 단점 : 파일에 속한 블록들의 위치정보를 관리해야 하는 오버헤드 발생

위치정보를 관리하는 두가지
  - 연결할당 : 같은 파일에 속한 흩어진 블록들을 연결리스트로 관리
                   (순차접근에는 효과적이나 직접접근 방식에는 매우 비효율적)

  - 인덱스 할당 : 디스크 블록에 대한 위치정보를 담고 있는 인덱스 블록을 사용하여, 블록이 할당될때마다 해당 엔트리에 정보를
                       기록하는 방법. (인덱스 블록을 유지하는 비용문제가 발생)
파일이 커지면 하나의 인덱스 블록 만으로 관리가 불
                       가능하기 때문에 여러 인덱스 블록을 이용하여 관리가 가능하다. 
그 여러 인덱스블록은 연결리스트로 관리. 
  -  리눅스의 경우 inode로 4GB까지 관리 : <inode 기법>


※ 출처 : http://idkkangjs.blog.me/30091117058

by 민트앤라떼 2011. 9. 27. 16:50