파일 설명자와 프로세스 테이블 간의 관계는 무엇입니까?

파일 설명자와 프로세스 테이블 간의 관계는 무엇입니까?

나는 운영체제에 관심이 있다. 그래서 운영체제에 대해 배우기 위해 xv6 책을 읽고 있어요. 이 주제에 관한 나의 첫 번째 책입니다. 이해할 수 없는 한 줄을 읽었습니다.

내부적으로 xv6 커널은 파일 설명자를 각 프로세스 테이블에 대한 인덱스로 사용하므로 각 프로세스는 0부터 시작하는 파일 설명자의 전용 공간을 갖습니다.

파일 설명자는 쓰거나 읽을 수 있는 데이터 스트림을 나타낸다고 생각합니다. 프로세스 테이블과 어떤 관련이 있습니까? 파일 설명자 테이블은 열린 파일 리소스를 나타내는 프로세스 메모리의 일부가 아닌가요?

미리 감사드립니다!

답변1

당신의 이해가 정확합니다. 파일 설명자 테이블은 단일 프로세스 메모리의 일부입니다(물론 테이블에 대한 인덱스는 프로세스에서 사용할 수 있지만 테이블 자체는 커널 구조이므로 사용자 공간 프로세스에서 직접 액세스할 수 없습니다. 테이블이지만 여전히 프로세스에 따라 다릅니다.

기사에는 이렇게도 나와 있습니다.

[...] 파일 설명자를 인덱스로 사용프로세스당테이블[...]

이는 "파일 설명자를 프로세스별 테이블에 대한 인덱스로 사용"하는 또 다른 방법입니다.

관련 정보