파일

파일(File)은 보조기억장치에 저장된 데이터의 논리적 단위를 의미합니다.

일반적으로 다음과 같은 요소로 구성됩니다.

  • 이름(Name): 파일을 구분하는 식별자
  • 실행하기 위한 정보: 실행 파일이라면 실행 가능한 코드 및 관련 메타데이터
  • 부가 정보
    • 속성(Attribute): 읽기/쓰기 권한, 소유자, 접근 권한 등
    • 메타데이터(Metadata): 생성/수정 시간, 크기, 위치 등
    • 형식, 위치, 크기 등

이러한 정보로 인해 운영체제는 파일을 단순한 바이트 집합이 아닌 관리 가능한 객체로 다룰 수 있습니다.

하나의 파일은 보조기억장치에서 여러 개의 섹터로 구성되어 있습니다.

시스템 콜

응용 프로그램은 임의로 보조기억장치에 직접 접근하여 파일을 조작할 수 없습니다.
모든 파일 입출력 작업은 운영체제가 제공하는 시스템 콜(System Call)을 통해 이루어집니다.

예를 들어, 파일을 열고, 읽고, 쓰고, 닫는 과정은 모두 운영체제의 개입이 필요합니다.
이는 보안과 안정성을 보장하기 위함이며, 파일 자원에 대한 접근을 운영체제가 중앙에서 통제하는 구조라고 볼 수 있습니다.

파일 디스크립터

운영체제는 프로세스가 열어둔 파일을 구분하기 위해 파일 디스크립터(FD, File Descriptor)라는 정수형 식별자를 부여합니다.

파일 디스크립터는 일반적으로 0 이상의 정수 값으로 표현됩니다.

프로세스가 새로운 파일을 열면 운영체제는 해당 파일을 가리키는 새로운 FD를 할당합니다.

리눅스/유닉스 계열에서 표준으로 사용되는 기본 FD는 다음과 같습니다.

  • 0: 표준 입력(Standard Input)
  • 1: 표준 출력(Standard Output)
  • 2: 표준 오류(Standard Error)

윈도우 운영체제에서는 이와 유사한 개념을 파일 핸들(File Handle)이라고 부릅니다.
핸들은 FD와 동일한 역할을 수행하지만, 내부적으로는 단순한 정수 값 이상의 자료구조를 포함할 수 있습니다.

파일 디스크립터는 파일뿐만 아니라 다음과 같은 자원도 식별합니다.

  • 일반 파일: 텍스트 파일, 실행 파일 등
  • 입출력 장치(Device): 키보드, 모니터, 프린터 등
  • 파이프(Pipe): 프로세스 간 통신을 위한 IPC 수단
  • 소켓(Socket): 네트워크 통신의 종단점

ComputerScience 카테고리 내 다른 글 보러가기

댓글남기기