CharSyam
Tag | Location | Media | Guestbook | Admin

2009/02/20 01:04 2009/02/20 01:04
Linux VFS(Virtual File System)

  크악 리눅스 VFS에 대해서 적다가 다 날라갔다 엉엉엉. 뭐, 하늘에서 더 요약하라는 뜻인가라고 생각하자.

 

 간단하게 말하면, 리눅스에는 여러가지 다른 파일 시스템을 이용하는 데, 각각의 파일 시스템 안에 있는 파일에 접근하는 방법은 파일 시스템 마다 다 틀리다. 예를 들어 FAT 은 Fat Table 을 이용하고 Ext2/3는 inode (일종의 BTree)방식이고,  이걸 비유하자면, 하나의 클래스가 비슷한 동작을 하는 다른 클래스와 통신하는데, Interface 로 통신하지 않고 Concrete 클래스와 통신한다고 생각하면 된다. 그리고 그 클래스 수가 무지 많다.

 

즉, 코드 자체가 interface 라면 filesystem_interface->Read 형태면 되는걸

 

if( filesystem_type == EXT2 )

  Ext2FileSystem->Read(...)

else if( filesystem_type == FAT )

 FatFileSystem->Read(...)

 

이런식으로 늘어난다는 것이다. 그래서 VFS 라는 추상화 파일 시스템 계층이 들어간것이다.

최초의 VFS는 (썬의 SunOS에 들어갔다고 한다. 1986년)

 

사용자 삽입 이미지 

 

 VFS 에서는 공통 파일 모델(Common File Model)을 이용한다. 즉 이게 Interface 인것이다. 두둥!!!

 

즉, 리눅스 등에서 파일시스템을 추가할려면 이 VFS에 맞춰서 만들어주는 것이 필요하다.

VFS의 공통 파일 모델은 다음과 같은 4개의 핵심 객체 타입을 가진다.

 

  •  Super Block 개체

    • 마운트 된 파일 시스템에 대한 정보를 저장한다. 실제로 Ext2 등에는 슈퍼 블럭이라는 게 있다. 그런데 FAT 같은건 이런 부분이 없으므로 추가적으로 정보를 담도록 구현해줘야한다.
  • Inode 객체

    • 특정 파일에 대한 정보를 닮고 있다. 파일 시스템 내에 있는 파일의 유일한 식별자 등으로 보면된다.
  • 파일 객체

    • 열린 파일과 프로세스 사이의 상호 작용과 관련한 정보를 저장한다. 이 정보는 각 프로세스가 열린 파일을 가지고 있는 동안 커널 메모리에만 존재한다. 즉, 디스크로 저장되어 있는 부분에는 없다는 얘기다.
  • 디엔트리 객체

    • 디렉토리 항목과 이에 대응하는 파일의 연결에 대한 정보를 저장한다.

 

각각의 개체에 대한 자세한 내용은 리눅스 커널의 이해 12장 가상 파일 시스템 부분을 참고하자. 

 

Tag : , ,
Track this back : http://liso.or.kr/~charsyam/charsyam/tc/CharSyam/trackback/6

[로그인][오픈아이디란?]
name    password    homepage
 hidden


BLOG main image
CharSyam
 Notice
 Category
전체 (90)
(19)
(3)
프로그래밍 (61)
게임 (1)
Server Setting (5)
대학원 (1)
 TAGS
qsort XML google test 회계 부정 뷰패킷 모듈 사용 뷰 생각의 좌표 C# 드래곤퀘스트4 Haskell Simple Factory Interface 주식 여론 조작 세월이 젊음에게 DTM_SETIMAGE 도전 임베디드 OS 만들기 Free 정치 TDD Design Pattern 다국어바로가기 구글테스트 경제학 3.0 고수 식스픽셀 죽음의 행진 지식인의 책임 공짜경제학 촘스키
 Calendar
«   2010/07   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
 Recent Entries
YES24 총알 배송 광고
CMake – CMakeLis...
Autotools 관련 좋은 링...
고수와 전문가의 차이
Zookeeper 설치 방법
 Recent Comments
오~ 이 책도 땡기는군요...
ohyecloudy - 05/25
항상 정리해야 되는데,...
CharSyam - 05/13
잘 정리하셨네요. ^^
고감자 - 05/12
네, 저도 동감합니다....
CharSyam - 2009
http://www.thisisgame....
ParkPD - 2009
 Recent Trackbacks
Discount patio furniture.
Discount furniture.
Furniture competition.
Furniture design compe...
Acomplia ribona.
Acomplia.
Premarin.
Premarin vaginal cream.
스크럼과 XP
The note of Legendre
 Archive
2010/07
2010/06
2010/05
2010/04
2010/03
 Link Site
 Visitor Statistics
Total : 38342
Today : 44
Yesterday : 73
rss
Powered by Tistory & Designed by webnoon.net