-
VFS(Virtual FileSystem)는 시스템콜이 파일시스템이나 물리적 매체 종류에 상관없이 공통적으로 동작할 수 있도록 해주는 인터페이스다.
-
파일시스템 추상화 계층은 모든 파일시스템이 지원하는 기본 인터페이스와 자료구조를 선언한 것이다.
-
VFS는 슈퍼블록(superblock), 아이노드(inode), 덴트리(dentry), 파일(file) 4가지 객체로 구성돼있다.
- 슈퍼블록: 파일시스템을 기술하는 정보(+ file_system_type, vfsmount 구조체)를 저장한다.
- 아이노드: 파일이나 디렉토리를 관리하는 데 필요한 모든 정보를 저장한다.
- 덴트리: 디렉토리 경로명 속 각 항목의 유효성 정보 등을 저장한다.
- 파일: 메모리 상에 로드 된 열려있는 파일에 대한 정보를 저장한다. 한 파일은 여러 프로세스에서 동시에 열고 사용할 수 있기 때문에, 같은 파일에 대해 여러 개의 파일 객체가 있을 수 있다.
-
각 객체들에는 여러 함수들이 들어있는 동작(operation) 객체가 멤버변수로 들어있다.
- super_operation 객체에는
write_inode()
,sync_fs()
같이 특정 파일시스템에 대한 함수가 들어있다. - inode_operation 객체에는
create()
,link()
같이 특정 파일에 대한 함수가 들어있다. - dentry_operation 객체에는
d_compare()
,d_delete()
같이 디렉토리에 대한 함수가 들어있다. - file_operation 객체에는
read()
,write()
같이 열린 파일(프로세스)에 대한 함수가 들어있다. 표준 유닉스 시스템콜의 기초가 되는 익숙한 함수들이 들어있다.
- super_operation 객체에는
-
**프로세스 관련 자료구조 **
- 프로세스는
task_struct
구조체로 관리한다. task_struct
는files_struct
구조체를 멤버변수로 가지고 있는데, 여기에 열려 있는 파일(프로세스)에 대한 세부 정보가 저장된다.files_struct
는<linux/fdtable.h>
에 정의되어있다.
- 프로세스는
참고