유닉스에서 파일을 여는 방법은 무엇입니까?

유닉스에서 파일을 여는 방법은 무엇입니까?

파일을 여는 내부 프로세스는 무엇입니까?

파일이 열리면 시스템은 경로 이름을 inode로 변환한 다음 inode에서 해당 드라이브 디스크 부분을 검색하여 파일의 내용을 찾습니다. 그렇습니까? 파일을 여는 과정에 대해서는 막연하게만 알 수 있는데, 좀 더 자세히 알고 싶습니다.

답변1

일반적으로 다음과 같은 책을 읽어야 합니다.이것커널에서 대부분의 세부사항에 대한 답변을 얻으세요. 그러나 일반적으로 프로세스는 다음과 같습니다.

  1. 절대 경로인 경우 프로세스의 루트 디렉터리( chroot알려진 시스템 FS 루트와 유사한 이유로 다를 수 있음) , 현재 프로세스 디렉터리 또는 지정된 디렉터리에서 지정된 경로를 사용하여 파일 시스템을 탐색합니다. (와 같은 호출에서) , 둘 다 상대 경로의 경우입니다. 지정된 경로는 일련의 경로 구성 요소("/"로 구분)로 분할되어 순서대로 처리됩니다. 이 프로세스("경로 조회", "namei 조회"라고 함) 중에 디렉터리 내용과 마운트 지점 교차가 분석되고, 각 경로 구성 요소는 개체에 대한 임시 참조 ( 이전 Unix, Linux)가 됩니다. 결과적으로 성공하면 최종 파일의 vnode가 발견되고(필요한 경우 생성됨) 유지됩니다(일반적으로 참조 카운팅을 사용하여 커널 RAM에서 활성 상태를 유지합니다).jailLXCopenatvnodesfileinode
  2. 이 vnode를 참조하는 '열린 파일' 개체를 생성하고 이를 file descriptor이 요청에 할당된 프로세스에 연결합니다.

이 디렉토리 검색에 대한 세부 사항은 특정 VFS에 따라 매우 다릅니다. 메모리 전용 디렉터리( tmpfs), 디스크 기반 디렉터리( 등) 를 포함하여 모든 유형이 될 수 있지만 ext4디렉터리 계층 구조의 일반적인 개념은 여전히 ​​적용됩니다.

관련 정보