UNIX에 대한 일부 문서를 읽고 있지만 다음 두 가지를 이해하지 못합니다.
- 커널이 실행 중인 프로세스의 현재 작업 디렉터리를 아는 것이 왜 중요한가요?
- inode 정보를 디렉토리에 보관하지 않는 이유는 무엇입니까?
답변1
시스템은 모든 프로세스의 현재 디렉터리를 추적해야 합니다. 그렇지 않으면 프로세스는 어떤 것(예: 파일 열기 또는 통계, 디렉터리 변경 포함)에 대해 상대 경로를 사용할 수 없기 때문입니다. chdir("..")
현재 프로세스를 추적하지 않으면 이는 무엇을 의미합니까? 좌석?).
또한 이 정보를 추적하지 않으면 커널이 프로세스가 지정된 마운트 지점 내에 있는지 여부를 확인할 수 없다는 문제도 있습니다. 따라서 실수로 프로세스에서 파일 시스템을 마운트 해제하여 일관성 없는 상태가 발생할 수 있습니다.
두 번째 질문은 하드 링크에 대해 생각해 보세요. inode 데이터가 디렉토리 "구조" 자체에 있으면 정확하고 안전하게 구현하기가 더 어려울 것입니다. 디렉토리 구조에서 inode에 대한 포인터를 갖는 것이 훨씬 쉽기 때문에 주어진 inode에 대한 링크를 매우 간단하게 추가하거나 제거할 수 있습니다.