Post

파일 디스크립터 File Descriptor

유닉스에서 프로세스가 파일에 접근할 때 쓰는 파일 디스크립터의 개념과, 커널이 이를 관리하는 방식을 정리했습니다.

파일 디스크립터 File Descriptor

호스팅으로 올려둔 이미지를 복구할 수가 없네요. 글이라도 도움되시길

파일 디스크립터 File Descriptor


파일 디스크립터 File Descriptor란 Unix/Linux 계열의 시스템에서 프로세스(Process)가 파일(File)을 다룰 때 사용하는 개념으로, 프로세스에서 특정 파일에 접근할 때 사용하는 추상적인 값이다.

특정 동작에 대한 수행 자격을 부여하는 핸들 또는 파일 객체를 가리키는 포인터라고 한다.

핸들: 객체나 자원을 가리키는 참조나 식별자

파일 디스크립터는 일반적으로 0이 아닌 정수 값을 가진다.

흔히 유닉스 시스템에서는 모든 것을 파일이라고 한다. 일반적인 정규 파일부터 디렉토리, 소켓, 파이프, I/O 등 모든 객체들을 파일로 관리한다.

유닉스 시스템에서 프로세스가 이 파일들을 접근할 때 파일 디스크립터라는 개념을 사용한다.


프로세스가 실행 중에 파일을 열면, 커널은 해당 프로세스의 파일 디스크립터 숫자 중 사용하지 않는 가장 작은 값을 할당해준다. 그 다음 프로세스가 열려있는 파일에 시스템 콜을 이용해서 접근할 때, 파일 디스크립터(FD) 값을 이용해 파일을 지칭할 수 있다.

기본적으로 할당되는 파일 디스크립터는 아래와 같다.

정수값이름
0표준 입력 (stdin)
1표준 출력 (stdout)
2표준 오류 (stderr)


운영체제는 이 파일 디스크립터를 프로세스 별로 관리하며, 파일 디스크립터는 오픈 파일 테이블을 가리킨다.

오픈 파일 테이블에는 디스크립터가 가리키는 파일현재 오프셋(얼마나 읽었는지), 읽기 쓰기 여부 등을 담고 있다.



참고

This post is licensed under CC BY 4.0 by the author.