파일을 여는 내부 프로세스는 무엇입니까?
파일이 열리면 시스템은 경로 이름을 inode로 변환한 다음 inode에서 해당 드라이브 디스크 부분을 검색하여 파일의 내용을 찾습니다. 그렇습니까? 파일을 여는 과정에 대해서는 막연하게만 알 수 있는데, 좀 더 자세히 알고 싶습니다.
답변1
일반적으로 다음과 같은 책을 읽어야 합니다.이것커널에서 대부분의 세부사항에 대한 답변을 얻으세요. 그러나 일반적으로 프로세스는 다음과 같습니다.
- 절대 경로인 경우 프로세스의 루트 디렉터리(
chroot
알려진 시스템 FS 루트와 유사한 이유로 다를 수 있음) , 현재 프로세스 디렉터리 또는 지정된 디렉터리에서 지정된 경로를 사용하여 파일 시스템을 탐색합니다. (와 같은 호출에서) , 둘 다 상대 경로의 경우입니다. 지정된 경로는 일련의 경로 구성 요소("/"로 구분)로 분할되어 순서대로 처리됩니다. 이 프로세스("경로 조회", "namei 조회"라고 함) 중에 디렉터리 내용과 마운트 지점 교차가 분석되고, 각 경로 구성 요소는 개체에 대한 임시 참조 ( 이전 Unix, Linux)가 됩니다. 결과적으로 성공하면 최종 파일의 vnode가 발견되고(필요한 경우 생성됨) 유지됩니다(일반적으로 참조 카운팅을 사용하여 커널 RAM에서 활성 상태를 유지합니다).jail
LXC
openat
vnode
sfile
inode
- 이 vnode를 참조하는 '열린 파일' 개체를 생성하고 이를
file descriptor
이 요청에 할당된 프로세스에 연결합니다.
이 디렉토리 검색에 대한 세부 사항은 특정 VFS에 따라 매우 다릅니다. 메모리 전용 디렉터리( tmpfs
), 디스크 기반 디렉터리( 등) 를 포함하여 모든 유형이 될 수 있지만 ext4
디렉터리 계층 구조의 일반적인 개념은 여전히 적용됩니다.