CharSyam
Tag | Location | Media | Guestbook | Admin

'리눅스 커널'에 해당하는 글(1)
2009/02/20   Linux VFS(Virtual File System)


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 : , ,


BLOG main image
CharSyam
 Notice
 Category
전체 (92)
(19)
(3)
프로그래밍 (62)
게임 (1)
Server Setting (6)
대학원 (1)
 TAGS
전문가 Atomic C&C 뷰타입 스타일 모듈 분할 뷰 구본형 생각의 좌표 ERROR_ACCESS_DENIED Bundle Identifier 더블버퍼링 문제 프로젝트 WindowsMobile 일일 빌드 모듈 사용 뷰 Head First Software Development 식스픽셀 지식인의 책임 윈도우즈 모바일 도전 임베디드 OS 만들기 CAB 포팅 TDD 지속적인 통합 리눅스 커널 버전관리 다국어바로가기 C# 정치 CeRegSetValueEx Design Pattern 일일빌드
 Calendar
«   2010/09   »
      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    
 Recent Entries
ubuntu network setting
Head First OOD/A - 요... (2)
YES24 총알 배송 광고
CMake – CMakeLis...
Autotools 관련 좋은 링...
 Recent Comments
그렇게 되어가는거죠 ㅋ...
CharSyam - 08/02
우리 스터디 공식 템플...
ParkPD - 08/02
오~ 이 책도 땡기는군요...
ohyecloudy - 05/25
항상 정리해야 되는데,...
CharSyam - 05/13
잘 정리하셨네요. ^^
고감자 - 05/12
 Recent Trackbacks
스크럼과 XP
The note of Legendre
플래닝 포커 카드
Pell's seer Blog
 Archive
2010/08
2010/07
2010/06
2010/05
2010/04
 Link Site
 Visitor Statistics
Total : 41693
Today : 8
Yesterday : 19
rss
Powered by Tistory & Designed by webnoon.net