i-node: 파일의 속성과 데이터 위치
i-node는 파일의 속성과 데이터 블록 위치를 담는 UNIX 자료구조다. 파일 이름은 i-node에 없고 디렉터리 엔트리가 이름과 i-node 번호를 함께 담는다. 이름과 속성이 분리되어 있어 같은 파일에 이름을 여러 개 붙일 수 있다. 디렉터리 엔트리는 파일 이름…
주요 장면
대본
정의
i-node는 파일의 속성과 데이터 블록 위치를 담는 UNIX 자료구조다.
파일 이름은 i-node에 없고 디렉터리 엔트리가 이름과 i-node 번호를 함께 담는다.
이름과 속성이 분리되어 있어 같은 파일에 이름을 여러 개 붙일 수 있다.
디렉터리 엔트리와 i-node
디렉터리 엔트리는 파일 이름과 i-node 번호의 쌍이다.
i-node 번호로 i-node 테이블에서 해당 i-node를 찾는다.
속성과 블록 포인터는 i-node가 가지므로 디렉터리는 이름과 번호만 있으면 된다.
블록 포인터 계층
i-node는 블록 포인터로 데이터 블록의 위치를 가리킨다.
직접 포인터 12개는 데이터 블록을 바로 가리켜 약 48KB까지 닿는다.
간접 블록 하나가 포인터 1,024개를 담으므로 단계가 늘수록 크기가 커진다.
하드 링크
하드 링크는 같은 i-node 번호를 가리키는 디렉터리 엔트리를 하나 더 만든다.
그래서 두 이름은 같은 속성과 데이터 블록을 한 벌만 공유한다.
링크 수는 i-node에 기록되며, 0이 되어야 데이터 블록이 해제된다.
하드 링크와 심볼릭 링크
하드 링크와 심볼릭 링크는 둘 다 이름을 가리키지만 원본에 닿는 방식이 다르다.
하드 링크는 i-node를 직접 공유하므로 다른 파일 시스템에서는 만들 수 없다.
답안에 이 차이를 분명히 쓰면 감점이 줄어든다.
정리
정리하면 i-node는 파일의 속성과 데이터 위치를 담는다.
파일 이름은 디렉터리 엔트리에 있고, 링크 수가 0이어야 데이터 블록이 해제된다.
작은 파일은 직접 포인터로, 큰 파일은 간접 포인터로 접근한다.