Transcript Document

ULKML 가상 파일 시스템(VFS) - 2
장보길
한국 외국어대학교 디지털정보공학과
System Software LAB
[email protected]
• dentry?
– 저번 시간에 고건 교수님 강의 자료에 의하면
– 사용자의 디렉토리 이동 경로를 캐싱 하는
용도.
2
디렉토리 엔트리의 관리 구조
• dentry 구조체 (include/linux/dcache.h)
3
디렉토리 엔트리의 관리 구조
4
디렉토리 엔트리의 목적
1. 경로명 탐색 처리 고속화 지원
2. 디렉토리의 계층 구조 관리
+ 접근 했던 경로 캐싱
5
목적 1.경로명 탐색 처리 고속화 지원
• dentry 구조체 내에 이름을 저장 하는
d_name (struct qstr)
dentry
struct qstr d_name;
• 이름, 길이, hash 값 저장
빠른 경로 검색을 위해
6
dentry_hashtable
dentry_hashtable
헤드
어느 헤드로 연결될지는 부모 디
렉토리 dentry 주소, 파일명의 해
시 값으로 결정
dentry
d_hash
d_lru
…
…
…
…
dentry
d_hash
d_lru
dentry
d_hash
d_lru
dentry
d_hash
d_lru
dentry
d_hash
d_lru
dentry
d_hash
d_lru
dentry_unused
7
경로 탐색 처리 과정
dentry_hashtable
헤드
dentry
d_hash
d_lru
헤드를 먼저 찾는다. ( 앞장의 헤드 결정 방법으로)
헤드부터 연결된 dentry를 찾아 나간다.
일일이 문자열 비교로 찾는 것 보다 빠르다.
…
…
…
…
dentry
d_hash
d_lru
dentry
d_hash
d_lru
dentry
d_hash
d_lru
dentry
d_hash
d_lru
dentry
d_hash
d_lru
dentry_unused
8
목적2. 디렉토리의 계층 구조 관리
• 사용중인 파일에 대해선 반드시 상위 계층
구조가 존재한다.
• /foo/bar/baz 가 오픈 되어 있다면?
– /foo/bar, /foo에 대한 dentry 구조체도 함께
관리
9
디렉토리의 계층 구조 관리
1
10
디렉토리의 계층 구조 관리
/foo
d_subdir
/foo/bar
d_child
/foo
/foo/car
d_child
/foo/dar
d_child
d_subdir : 자식 리스트의 헤더
d_child : 같은 계층끼리 리스트로 묶임
/foo/bar
/foo/car
/foo/dar
d_parent
d_parent
d_parent
d_parent : 상위 계층의 entry 구조체
를 가리킴
11
디렉토리의 계층 구조 관리
• /foo/bar/baz 가 오픈 되었다면 윗 장의 그림
처럼 denry 구조체가 상위 계층부터 하위
계층까지 구조적으로 메모리에 올라가게
된다.
• 파일이 close 되더라도 dentry 구조체가
바로 사라지지 않는다.
– 사용한 파일은 가까운 시간 내에 접근할
가능성이 높기 때문에 캐시로 남겨둔다.
12
inode 구조체와 dentry 구조체의 연결 관계
• dentry 구조체는 inode 구조체를 가리킴.
• inode 구조체 또한 dentry 구조체를 가리킴.
하나의 inode에 두개의 dentry?
같은 파일이라도 이름이 다르면 따로따로 만들어 진다?
심볼릭 링크를 의미 하는 것일까요?
13
File System…….
14