728x90
파일 디스크립터란 리눅스 혹은 유닉스 계열 시스템에서 프로세스가 파일을 다룰 때 사용하는 개념이다. 즉, 프로세스에서 특정 파일에 접근할 때 사용하는 추상적인 값이다. 이러한 파일 디스크립터는 일반적으로 0이 아닌 정수값을 가진다.
흔히 유닉스 시스템에서 모든 것을 파일이라고 한다. 일반적인 정규파일을 포함해 디렉토리, 소켓, 파이프, 블록 디바이스, 케릭터 디바이스 등 모든 객체들을 파일로 관리한다. 따라서 유닉스 시스템에서 프로세스가 이 파일들을 접근할 때 파일 디스크립터라는 개념을 사용한다.
과정은 다음과 같다.
- 프로세스가 실행중에 파일을 Open하면 커널은 해당 프로세스의 파일 디스크립터 숫자 중 사용하지 않는 가장 작은 값을 할당해준다.
- 그 다음 프로세스가 열려있는 파일에 시스템 콜을 이용해서 접근할 때, 파일 디스크립터 값을 이용해서 파일을 지칭할 수 있다.
마지막으로 프로그램이 프로세스로 메모리에서 실행될 때, 기본적으로 할당되는 파일 디스크립터에는 std input, std output, std error가 있고, 각각 0, 1, 2라는 정수가 할당된다.
파일 디스크립터 확인 방법
우선 실행중인 프로세스 PID를 다음과 같이 확인할 수 있다.
$ ps -ef | grep sshd
그리고 다음과 같이 PID로 핻아 프로세스의 파일 디스크립터 정보를 확인할 수 있다.
$ sudo ls -trn /proc/[PID]/fd
인용
https://twofootdog.tistory.com/51
728x90
'컴퓨터 사이언스 > 운영체제' 카테고리의 다른 글
Explicit Allocator - Segregated Free List (0) | 2023.11.15 |
---|---|
Explicit Allocator - Explicit Free List (0) | 2023.11.15 |
인터럽트와 시스템 콜 (0) | 2023.11.15 |
demand-zero memory (0) | 2023.11.15 |
DMA (0) | 2023.11.14 |