Computer/서버 & 네트워크

파일 식별자File Descriptor(FD)

에린_1 2024. 2. 25. 20:19
728x90

File Descriptor(FD)

  • 정의
    • 운영체제가 파일, 소켓, 파이프등의 입출력 리소스를 관리하기 위해 생성해내는 비음수의 값이다.
    • 프로세스가 각 리소스에 접근하려고 할 때 리소스에 대한 인덱스로 사용된다. 덕분에 프로세스는 리소스의 실제 물리적 위치를 몰라도, 인덱스를 통해 접근이 가능하다.
  • 프로세스의 FD 활용
    • 리소스 열기
      • 프로세스가 open, socket 등의 system call을 사용해 리소스를 열면 운영체제는 해당 리소스에 대한 핸들을 생성하고, 이를 가리키는 파일 디스크립터를 프로세스에 반환한다.
    • 리소스 조작
      • 프로세스가 read, write, send, recv 등의 system call로 리소스를 조작할 때, fd값을 인자로 운영체제에 제공해야 한다.
      • 운영체제는 이 fd를 통해서 해당 프로세스의 fd table에서 리소스를 찾아 요청된 리소스 조작을 수행한다.
    • 리소스 닫기
      • 프로세스가 close system call로 리소스를 닫아달라 요청할 때, fd 값을 인자로 운영체제에 제공해야 한다.
      • 운영체제는 fd table에서 해당 엔트리를 제거하고, 리소스를 해제한다.

File Descriptor talbe

  • 정의
    • 운영체제의 커널 내부에 각 프로세스별로 fd table이 생성된다.
    • 각 프로세스가 열어놓고 있는 모든 파일, 리소스에 대한 fd를 인덱스로 하는 배열이다.
  • 각 entry의 구성
    • 인덱스
      • 리소스별 file descriptor
    • 리소스 타입
      • 파일, 소켓 ,파이프 중 어떤 것인지 표시
    • 리소스 상태 정보
      • 읽기/쓰기 가능 여부
      • 블록킹/논블록킹 모드
      • 열린 파일의 현재 위치
    • 리소스에 대한 참조
      • 실제 리소스에 대한 포인터

Defalut File Descriptor

  • 정의
    • 프로세스가 시작될 때 자동으로 할당되는 기본 fd의 값이다.
    • 프로세스가 실행되고 있는 동안은 항상 열려있는 것으로 표시된다.
    • 다른 파일이나 리소스는 이 default fd 인덱스 이후 숫자부터 할당된다.
    • 이렇게 입출력기가 file descriptor로 관리되는 이유는 OS에서 입출력기도 파일로 인식하여 관리하기 때문이다.
  • 종류
    • 0 : 표준 입력(stdin)
    • 1 : 표준 출력(stdout)
    • 2 : 표준 에러(stderr)
728x90

'Computer > 서버 & 네트워크' 카테고리의 다른 글

HTTP(Hyper Text Transfer Protocol)  (0) 2024.02.25
웹 서버  (0) 2024.02.25
소켓/소켓 API  (0) 2024.02.25
클라이언트 - 서버 모델  (0) 2024.02.24
OSI 7계층 & TCP/IP 4계층  (0) 2024.02.23