본문 바로가기

Cloud/ETC

File Descriptors 이해하기

 FD라는 단어를 처음 들었을 때 나는 심각한 고민을 하였다. FD가 뭐지? F는 대부분 File이고... D는 Directory인가? 파일 디렉터리...? 모르는 건 물어보는 게 답이다. 구글에 fd linux라고 치니 나왔다.

 추측이 반은 맞고 반은 틀렸는데 File Descriptor이라고 한다. 개념이 도통 이해가지 않으니 문서 하나를 번역해가면서 정리해보겠다. 읽은 문서는 이 것이다. - 문서에 틀린 내용이 있을 수 있으며 100프로 신뢰 금지다 ㅠㅠ 물론 내 것도!!

http://www.bottomupcs.com/file_descriptors.xhtml

 

File Descriptors

File descriptors are an index into a file descriptor table stored by the kernel. The kernel creates a file descriptor in response to an open call and associates the file descriptor with some abstraction of an underlying file-like object, be that an actual

www.bottomupcs.com

File Descriptors

 유닉스 프로그래머는 실행 중인 모든 프로그램이 이미 오픈되어 있는 3개의 파일로 시작된다는 것을 가장 먼저 배운다고 한다. 이 3개의 파일은 아래 표에 정리된다.

Descriptive Name Short Name File Number Description
Standard In stdin 0 Input from the keyboard
Standard Out stdout 1 Output to the console
Standard Error stderr 2 Error output to the console

 이 파일들을 유닉스가 제공하는 Standard File(표준 스트림)이라고 부른다. 파일들은 프로그램이 시작되면 본인들도 열려 사용할 준비가 된다. 아래 그림을 보면 더 이해할 수 있을 것 같다. 프로세스는 키보드를 통해 입력받고 (stdin) 입력의 결과로 출력(stdout) 또는 에러(stderr)를 나타낸다.

다른 이야기는 잘 모르겠고 이 같은 시스템의 장점은 입출력 장치의 추상화 및 자동 연결이라고 한다. 입출력 장치를 연결하기 위해 고생하지 않아도 되고 연결된 장치가 어떤 것인지 몰라도 된다. 

 File Descriptors는 커널에 의해 저장된 파일 디스크립터 테이블에 대한 인덱스이다. 0-2는 선점되어있으므로 3부터 파일을 지정해준다. 위의 그림을 살펴보면 (1) 디바이스에서 파일을 넘겨주고 (2) 파일을 열어서 위치를 알아낸다. 제대로 이해했는지 모르겠지만 Descriptor는 파일이 항상 어디 있는지 확인하면 문제가 생기니 편하게 하려고 만든 인덱스 같다. 일단 이렇게 이해해보고 추후 다시 생각해보자.

'Cloud > ETC' 카테고리의 다른 글

HTTP Header  (0) 2021.07.14
Ubuntu 18.04에서 NIC Bonding 하기  (0) 2020.02.05
set -o vi  (0) 2019.12.18
서버실에 서버 설치한거 목격한 후기  (0) 2019.12.05