VFS 의 인덱스 노드
struct inode
{
/********** ****************/
struct list_head i_hash; /* */
struct list_head i_list; /* */
struct list_head i_dentry;/* */
struct list_head i_dirty_buffers;
struct list_head i_dirty_data_buffers;
/********** ****************/
unsigned long i_ino; /* */
kdev_t i_dev; /* */
umode_t i_mode; /* */
nlink_t i_nlink; /* */
uid_t i_uid; /* */
gid_t i_gid; /* */
kdev_t i_rdev; /* */
off_t i_size; /* ( )*/
unsigned long i_blksize; /* */
unsigned long i_blocks; /* */
time_t i_atime; /* */
time_t i_mtime; /* */
time_t i_ctime; /* */
unsigned long i_version; /* */
struct semaphore i_zombie; /* */
/*********** *****************/
struct inode_operations *i_op; /* */
struct super_block *i_sb; /* */
atomic_t i_count; /* 。 0,
*/
struct file_operations *i_fop; /* */
unsigned char i_lock; /* , */
struct semaphore i_sem; /* */
wait_queue_head_t *i_wait; /* */
unsigned char i_dirt; /* , ,
*/
struct file_lock *i_flock; /* */
struct dquot *i_dquot[MAXQUOTAS]; /* */
/************ **********************************/
struct address_space *i_mapping; /* */
struct address_space i_data;
/********** ****************************************/
struct list_head i_devices; /* */
struct pipe_inode_info i_pipe; /* */
struct block_device *i_bdev; /* */
struct char_device *i_cdev; /* */
/************************* ***************************************/
unsigned long i_dnotify_mask; /* Directory notify events */
struct dnotify_struct *i_dnotify; /* for directory notifications */
unsigned long i_state; /* */
unsigned int i_flags; /* */
unsigned char i_sock; /* */
atomic_t i_writecount; /* */
unsigned int i_attr_flags; /* */
__u32 i_generation /* */
/************************* ********************/
union; /* , fsname_inode_info */
}
inode 데이터 구조 에 대한 추가 설명
· 파일 마다 inode 가 있 습 니 다. inode 마다 색인 절 포인트 i 가 있 습 니 다.ino。같은 파일 시스템 에서 모든 색인 절 점 호 는 유일 하 며, 커 널 은 색인 절 점 호의 해시 값 에 따라 inode 구 조 를 찾 을 때 도 있 습 니 다.
· 모든 파일 에는 파일 주인 이 있 습 니 다. 최초의 파일 주 는 이 파일 을 만 든 사용자 이지 만 나중에 바 꿀 수 있 습 니 다.모든 사용 자 는 하나의 사용자 그룹 이 있 고 특정한 사용자 그룹 에 속 하기 때문에 inode 구조 에 해당 하 는 i 가 있 습 니 다.uid,i_gid, 파일 주인의 신분 을 가리 키 기.
· inode 장치 번호 가 두 개 있 습 니 다. idev 와 irdev。우선, 특수 파일 을 제외 하고 모든 노드 가 특정한 장치 에 저장 되 어 있 습 니 다. 이것 이 바로 i 입 니 다.dev。그 다음 에 색인 노드 가 대표 하 는 것 이 일반적인 파일 이 아니 라 특정한 장치 라면 장치 번호 가 있어 야 합 니 다. 이것 이 바로 i 입 니 다.rdev。
· 파일 이 접근 할 때마다 시스템 은 이 파일 의 inode 에 시간 표 시 를 기록 해 야 합 니 다. 이것 이 바로 inode 에서 시간 과 관련 된 몇 개의 도 메 인 입 니 다.
· 모든 색인 노드 는 파일 이 사용 하 는 디스크 블록 과 같은 디스크 색인 노드 에 포 함 된 데 이 터 를 복사 합 니 다.하면, 만약, 만약...stat e 역 의 값 은 IDIRTY, 이 색인 노드 는 '더러 운' 것 입 니 다. 즉, 해당 하 는 디스크 색인 노드 는 반드시 업데이트 되 어야 합 니 다.i_stat e 역 의 기타 값 은 ILOCK (이 색인 노드 대상 에 잠 금 이 추가 되 었 음 을 의미 합 니 다), IFREENG (이 색인 노드 대상 이 풀 려 나 고 있 음 을 의미 합 니 다).모든 색인 노드 대상 은 다음 순환 양 방향 링크 의 특정한 링크 에 나타 납 니 다.
(1) 색인 노드 링크 를 사용 하지 않 았 습 니 다.변수 inodeunused next 도 메 인 prev 필드 는 각각 이 링크 의 첫 번 째 요소 와 끝 요 소 를 가리 키 고 있 습 니 다.이 링크 는 메모리 캐 시 로 사용 된다.
(2) 색인 노드 링크 를 사용 하고 있 습 니 다.변수 inodein_use 는 이 링크 의 첫 번 째 요소 와 끝 요 소 를 가리킨다.
(3) 더러 운 색인 노드 링크.해당 슈퍼 블록 의 sdirty 도 메 인 은 이 링크 의 첫 번 째 요소 와 끝 요 소 를 가리 키 고 있 습 니 다.
이 세 개의 링크 는 모두 색인 노드 를 통과 하 는 i 이다.list 도 메 인 이 연결 되 어 있 습 니 다.
· '사용 중' 또는 '더러 운' 링크 에 속 하 는 색인 노드 대상 도 inode 라 고 합 니 다.hashtable 링크 중.해시 표 는 색인 노드 대상 에 대한 검색 을 가속 화 시 켰 다. 전 제 는 시스템 커 널 이 색인 절 번호 와 해당 하 는 파일 시스템 의 슈퍼 블록 대상 의 주 소 를 알 아야 한 다 는 것 이다.해시 기술 이 충돌 을 일 으 킬 수 있 기 때문에 색인 노드 대상 은 i 를 설정 합 니 다.hash 도 메 인 은 앞 과 뒤로 두 개의 지침 을 포함 하고 같은 주소 로 흩 어 진 앞의 색인 노드 와 뒤의 색인 노드 를 가리킨다.이 도 메 인 은 이 색인 노드 로 구 성 된 양 방향 링크 를 만 들 었 습 니 다.
색인 노드 와 관련 된 방법 도 색인 노드 조작 이 라 고 하 는데 inodeoperations 구조 로 설명 합 니 다. 이 구조의 주 소 는 i 에 저 장 됩 니 다.p 도 메 인 에서 이 구 조 는 파일 작업 방법 을 가리 키 는 지침 도 포함 되 어 있 습 니 다 (다음 절 '파일 대상' 참조).
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.