CharSyam
Tag | Location | Media | Guestbook | Admin

'Interface'에 해당하는 글(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
리눅스 커널 소프트웨어 아키텍처 문서화 여론 조작 디자인패턴 회계 부정 qsort 다국어바로가기 Simple Factory C&C 뷰타입 스타일 드래곤퀘스트4 google test 버전관리 C# 생각의 좌표 이미지로드 공병호 미디어법 일일 빌드 TDD Interface 지속적인 통합 MACOSX 삽질운하 문제 프로젝트 구본형 세월이 젊음에게 WindowMobile 더블버퍼링 일일빌드 ERROR_ACCESS_DENIED
 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