소켓 관련해서 자료를 보고 있다가 문득 파일 디스크립터는
어떻게 파일테이블을 가리키는가 생각이 들어서 검색해본 내용을 정리했습니다.
파일 디스크립터의 동작 원리
일반적으로, 파일 디스크립터는 정수 값을 반환합니다.
이 정수 값만으로 파일 디스크립터를 알아볼 수 있는지 고민했지만, 이는 우문이었습니다.
메모리 영역의 차이
- 우리가 흔히 사용하는 변수는 사용자 공간 메모리에 저장됩니다.
- 그러나 파일 디스크립터는 커널 공간의 자료 구조를 참조하기 위한 인덱스 역할을 합니다.
사용자 공간에서는 단순히 정수 값으로 표현될 뿐입니다 (예: stdin, stdout, stderr에 해당하는 0, 1, 2).
파일 디스크립터와 파일 테이블
파일 디스크립터는 커널 내부의 파일 디스크립터 테이블에서 파일 테이블의 엔트리를 가리킵니다.
이를 직관적으로 이해하면, 파일 디스크립터는 커널 공간에 있는 파일 테이블의 구조체를 참조하기 위한 "인덱스"라고 볼 수 있습니다.
정수 값은 사용자 공간에서 관리되며, 이 값을 통해 커널의 파일 테이블에 접근하여 실제 리소스(파일, 소켓 등)를 처리하게 됩니다.
'Computer Science > Computer Network' 카테고리의 다른 글
SMTP, IMAP, POP3 (0) | 2024.07.24 |
---|---|
VirtualBox, ubuntu ssh 원격 접속 (0) | 2024.05.19 |
Computer Networks (1) - 3, Packet-Delay & Protocol Layers (0) | 2023.09.26 |
Computer Networks (1) - 2, Packet-Switching, Circuit-Switching (0) | 2023.09.14 |
Computer Networks (1) - 1, What is Internet? (0) | 2023.09.06 |