본문 바로가기
42seoul/circle-1

[ GNL ] 02. 선행지식_파일 디스크립터

by saniii 2021. 10. 31.

# 파일 디스크립터 (fd, file descriptor)

+ Unix OS 계열의 시스템에서 프로세스가 파일을 다룰 때 사용하는 개념.

+ 특정 파일에 접근할 때 사용하는 추상적인 값

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

 

+ 유닉스 시스템에서는 정규파일, 디렉토리, 소켓, 파이프, 블록 디바이스, 캐릭터 디바이스 등 모든 객체를 파일로 관리한다. 프로세스가 실행 중에 파일을 open하면 커널은 해당 프로세스의 파일 디스크립터 숫자 중 사용하지 않는 가장 작은 값을 할당. 그 다음 프로세스가 열려있는 파일에 시스템 콜을 이용해서 접근할 때, 파일 디스크립터(FD)값을 이용해서 파일을 지칭할 수 있다. 

 

+ 프로세스에서 열린 파일의 목록을 관리하는 (FD)테이블의 인덱스

   - FD테이블의 각 항목은 FD플래그와 파일 테이블을 가리키는 포인터를 가지고 있음.

   - fd는 해당 프로세스의 open file 을 관리하는 구조체 배열의 index

 

+ 프로그램이 프로세스로 메모리에서 실행될 때, 기본적으로 할당되는 파일 디스크립터는 표준 입력(Standard Input) - 0, 표준 출력(Standard Output) - 1, 표준 에러(Standard Error) - 2 이다.

+ 0이 아닌 정수로 표현되는 파일 디스크립터는 0 ~ OPEN_MAX까지의 값을 가질 수 있고 OPEN_MAX값은 플랫폼마다 다르다.

 

# 커널

운영체제의 다른 부분 및 응용 프로그램 수행에 필요한 여러가지 서비스를 제공

 

# 시스템 콜 (System Calls, 시스템 호출)

+ 사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것

 

# OPEN_MAX

+ 단일 프로그램에 허용되는 최대 열린 파일의 갯수를 정의하는 상수

 

# 소켓

 

#

 

'42seoul > circle-1' 카테고리의 다른 글

[ ft_printf ] 1. printf  (0) 2021.12.29
[ printf ] 0. 문제 이해하기  (0) 2021.12.23
[ GNL ] 04. 선행지식_read() 함수  (0) 2021.11.03
[ GNL ] 03. 선행지식_정적변수(Static)  (0) 2021.11.03
[ GNL ] 01. 과제 이해하기  (0) 2021.10.31

댓글