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