달력

6

« 2025/6 »

  • 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
2011. 10. 20. 19:36

가상 파일시스템 OS이야기2011. 10. 20. 19:36

가상 파일시스템은 파일시스템 인터페이스르 ㄹ유저공간 프로그램에 제공하기 위해 구현된 커널의 서브시스템이다. 모든 파일 시스템은 공존하는 것 뿐만 아니라 상호 동작하기 위하여 VFS에 의존한다.

공통 파일시스템 인터페이스
 VFS open(), read() , write() 와 같은 시스템콜들이 파일시스템이나 물리적 매체와 묵관하게 동작할 수 있게 하는 역할을 한다.

파일시스템 추상화 레이어
 모든 탕비의 파일시스템에 대한 범용 인터페이스는 커널이 로우레벨 파일시스템 인터페이스와 같은 추상레이어에서 해당 인터페이스를 구현하기 때문에 가능하다. 이러한 추상레이어는 리눅스로 하여금 지원되는 속성이나 동작에 있어서 상이한 다른 파일시스템을 지워ㅓㄴ할 수 있게 해준다. 이것은 VFS가 가능한 모든 파일 시스템에 대한 일반적 속성이나 동작을 표현할 수 있는 모델을 제공하기 때문에 가능하다.

추상레이어(abstraction layer)
-
모든 파일시스템을 지운ㄴ하는 기초 추상 인터페이스와 자료구조를 정의하는 방식으로 동작한다.
- 파일시스템은 VFS의 요구에 부응하기 위하여 "이것이 내가 파일을 여는 방식이다"와 "이것이 나에게 있어서의 디렉터리이다"와 같은 개념을 모델링한다. 실제 파일시스템 코드는 구현에 관한 자세한 사항을 드러내지 않는다.  
 - 그러나 VFS 레이어와 커널의 나머지 부분에 있어서 모든 파일시스템은 동일하게 보이게 된다. 파일시스템들은 모두 파일과 디렉터리와 같은 개념을 지원하며 파일의 생성이나 삭제와 같은 연산도 모두 지원한다.
- 파일시스템은 VFS가 필요한 추상 인터페이스와 자료구조를 제공한다.
- 결과적으로 일반 추상레이어는 커널이 여러 타입의 파일 시스템을 쉽고 명확하게하게 지원하도록 해준다.
- 즉, 커널과 유저공간 인터페이스가 자연스럽게 모든 파일시스템을 사용하라 수 있게 해주는 것이다.

다음과 같은 간단한 유저공간 프로그램을 생각.
write(f , &buf, sizeof(buf));

시스템콜의 한쪽에는 유저 공간에 프론크엔드를 ㅔㅈ공하는 범용 VFS 인터페이스가 있고, 다른 쪽에는 실제 세부 기능을 담당하는 해당 파일시스템의 백엔드가 있다. VFS가 어떻게 이러한 추상화를 완성하며 또한 어떠한 인터페이스를 제공하는지 살펴보자.

write() - > sys_write() -> 파일시스템의 write함수 -> 물리적 미디어
 

'OS이야기' 카테고리의 다른 글

VFS객체와 그 자료구조  (2) 2011.10.20
유닉스 파일시스템  (0) 2011.10.20
영구적 매핑  (0) 2011.10.20
런타임에서의 CPU별 데이터  (0) 2011.10.20
슬랩 할당자 사용예제  (0) 2011.10.20
:
Posted by НooпeУ


Code Start Code End