Tanenbaum의 최신 운영 체제에서 Linux의 ext2 파일 시스템에 있는 파일에 액세스한 다음 파일의 상위 디렉터리에 도달하려고 하면,
파일이 존재하면 시스템은 inode 번호를 추출하여 인덱스로 사용합니다.i 노드 테이블해당 i-노드(디스크에서)를 찾아 메모리에 넣습니다. i 노드가 i 노드 테이블, 현재 열려 있는 파일과 디렉터리의 모든 i-노드를 보유하는 커널 데이터 구조입니다.
두 개의 다른 inode 테이블을 언급했나요?
첫 번째 inode 테이블이 디스크 어딘가에 저장되어 있습니까? 어디에 저장되어 있나요? 같은 책의 아래 디스크, 파티션 및 파일 시스템의 레이아웃을 참조하세요.
inode 번호에서 inode 주소로의 매핑입니까?
두 번째 inode 테이블이 주 메모리에 저장되어 있습니까?
무언가에서 인덱스 노드로의 매핑입니까?
답변1
당신이 인용한 텍스트는 아마도 엉성하게 표현된 것 같습니다. 파일 시스템의 기본 권한 있는 inode는 파일 시스템에 저장됩니다. 따라서 디스크(디스크 파티션)에 있는 파일 시스템의 경우 inode는 디스크에 있습니다. 그러나 효율성을 위해 커널은 활성 inode의 로컬 복사본을 메모리에 저장(캐시)합니다.
반복하자면, "첫 번째 inode 테이블"은 디스크에 저장됩니다(파일 시스템이 디스크에 있다고 가정). 그래서 당신은 무엇을 묻고 있습니까? 질문에 복사한 두 숫자 모두 "I-노드"라고 표시된 영역을 표시합니다. 인덱스 노드가 있는 곳입니다. 구체적인 세부 사항은 파일 시스템 유형에 따라 다릅니다.
- inode 번호에서 inode 주소로의 매핑입니까?
아니요. inode는 배열(또는 일부 파일 시스템에서는 여러 배열)에 저장되므로 inode 주소는 다음과 같이 계산할 수 있습니다.inode 주소 = (inode 배열의 기본 주소) + (inode 번호) × (inode 크기)
해당 인덱스 노드를 이미 알고 계시기를 바랍니다.포함하다파일의 메타데이터 및가리키는파일의 데이터 블록입니다.
- inode 번호에서 inode 주소로의 매핑입니까?
예, "두 번째 inode 테이블"은 메모리에 저장됩니다. 이는 inode에 대한 맵이 아닙니다. inode에 대한 맵입니다. 그것은복사선택한 inode(및 시스템의 inode 상태에 대한 일부 추가 메타데이터).