*nix 시스템 디렉토리의 실제 내용

*nix 시스템 디렉토리의 실제 내용

*nix 파일 시스템에 대해 배우고 있습니다. 특히, 나는 이 튜토리얼을 따라왔습니다.https://www.grymoire.com/Unix/Inodes.html일부 Google 검색 등이 산재되어 있습니다. Unix 디렉토리의 실제 형태는 본질적으로 (열 1) inode 번호와 (열 2) 해당 inode 번호에 해당하는 파일/디렉토리의 이름을 나타내는 문자열로 구성된 파일입니까? 그렇다면 "이 디렉토리에 포함된 파일/기타 디렉토리"로 표시되는 것은 실제로 사용자가 이 작업을 수행 $ ls하거나 특정 디렉토리를 탐색할 때 운영 체제가 테이블의 항목 목록을 인쇄한다는 사실에 불과합니까 ?

예를 들어, 이것이 카탈로그 파일의 실제 형식입니까?

여기에 이미지 설명을 입력하세요.

이 작업이 C에서 수행되었다면 파일에는 하나의 int inode열과 하나의 char * filename열이 있게 됩니다.

답변1

Unix 디렉토리의 실제 형태는 본질적으로 (열 1) inode 번호와 (열 2) 해당 inode 번호에 해당하는 파일/디렉토리의 이름을 나타내는 문자열로 구성된 파일입니까?

적어도 개념적으로는 그렇습니다. 그러나 실제 디스크 형식은 다를 수 있습니다.

ext4와 같은 많은 파일 시스템은 디렉토리를 파일로 취급하고 저장 영역을 동일한 방식으로 예약합니다. (ext4 디렉터리의 크기를 줄일 수 없다는 점을 제외하고) 디렉터리에는 수정 날짜, 권한 등을 저장하기 위해 자체 inode도 필요합니다. 그러나 디렉토리의 데이터 영역 내의 내용은 다릅니다. "클래식" 형식은 단지 {name, inode} 항목의 목록(이름을 위해 예약된 공간 길이와 같은 일부 사소한 기록 포함)이지만 더 높은 수준의 데이터 구조(트리)도 사용합니다. ext4의 경우 다음을 참조하세요.https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout#Directory_Entries

또한 파일 시스템에 따라 디렉토리 항목이할 수 있는또한 포함유형inode가 가리켰습니다. 이는 최적화에 유용합니다. 유형만 필요한 경우 stat()해당 항목에 대해 별도의 시스템 호출을 만들 필요가 없습니다 . 또한 inode 유형은 inode 수명 동안 변경되지 않으므로 변경 가능한 inode 데이터가 디렉터리로 오프로드되는 경우처럼 여러 디렉터리 항목을 동기화 상태로 유지해야 하는 문제가 없습니다.

관련 정보