/proc/self는 Linux에서 어떻게 구현됩니까?

/proc/self는 Linux에서 어떻게 구현됩니까?

/procLinux에서 파일 시스템을 수정할 때 /proc/self현재 프로세스의 프로세스 디렉터리를 가리키는 심볼릭 링크인 을 발견했습니다. 어떻게 구현되는지 알고 싶습니다. 한 가지 해결책은 심볼릭 링크를 변경하는 것입니다모든 컨텍스트 전환, 그러나 이는 디스크 액세스와 관련되므로 비용이 매우 많이 듭니다.

답변1

http://lxr.linux.no/linux+v3.2.9/fs/proc/base.c#L2482현재 구현입니다.

파일 시스템은 proc완전히 가상이며 readlink특수 심볼릭 링크의 올바른 위치에 대한 내부 VFS 대리자로 구현됩니다. 따라서 self모든 컨텍스트 전환이 아닌 읽기/순회 시 가리키는 내용을 계산합니다 .

답변2

파일은 /proc디스크에 저장되지 않고 커널에 의해 동적으로 생성됩니다. 바라보다/proc를 열고 읽으면 어떻게 되나요?

/proc프로그래밍에 관심이 있다면 다음에서 구현에 대해 읽을 수 있습니다.커널 소스 코드. 콘텐츠/proc/self심볼릭 링크는 다음과 같이 만들어집니다.기능호출 프로세스의 pid로 버퍼를 채웁니다.

관련 정보