• os
  • file-system

File Descriptor와 File System, I-Node

프로세스가 파일을 가리키는 File Descriptor, 파일 시스템의 역할, 파일의 속성과 블록 주소를 담는 I-Node를 정리한다.

시리즈 · 운영체제17 / 18
  1. 운영체제의 유형
  2. System Call과 Dual Mode
  3. 인터럽트와 폴링
  4. 프로세스와 PCB, 프로세스의 상태 변화
  5. 프로세스 주소 공간과 Stack이 높은 주소부터 할당되는 이유
  6. 스레드: 사용자·커널 수준 스레드와 Thread Pool, Fork-Join
  7. Context Switching
  8. 프로세스 스케줄링: 단계와 알고리즘
  9. Thread Scheduling: 경합 범위 PCS와 SCS
  10. 경쟁 상태와 상호 배제: Thread Safe, 데커·피터슨 알고리즘
  11. 뮤텍스와 세마포, 모니터
  12. 교착 상태: 발생 조건과 해결 방법
  13. 메모리 계층 구조와 캐시 메모리
  14. 메모리 관리: 주소 바인딩과 연속 메모리 할당
  15. 가상 메모리: Paging과 Segmentation, TLB
  16. 요구 페이징과 페이지 교체 알고리즘, Thrashing
  17. File Descriptor와 File System, I-Node
  18. 동기/비동기와 블로킹/논블로킹, I/O Multiplexing

File Descriptor

File Descriptor(파일 디스크립터)는 리눅스나 유닉스 계열에서 프로세스가 파일을 다룰 때 사용하는 개념으로, 특정 파일에 접근할 때 쓰는 추상적인 값이다.

  • 음이 아닌 정수 값을 가진다.
  • 파일을 열면, 사용되고 있지 않은 정수 중 가장 작은 값이 할당된다.
  • 이후 파일에 접근할 때는 이 번호로 파일을 지칭한다.

open(), read(), write(), close() 같은 파일 관련 시스템 콜이 이 번호를 주고받는다.

File System

파일 시스템은 컴퓨터에서 파일이나 자료를 쉽게 발견하고 접근할 수 있도록 보관하고 조직하는 체제다.

  • 통상 하드 디스크나 CD-ROM 같은 실제 저장 장치를 사용해 파일의 물리적 위치를 관리하는 것을 가리킨다.
  • 네트워크 프로토콜(NFS, SMB, 9P 등)을 수행하는 클라이언트를 통해 파일 서버의 자료에 접근하게 해 주는 방식도 파일 시스템에 포함된다.
  • 실제 저장 장치 없이 접근 수단만 가상으로 존재하는 방식(procfs 등)도 포함될 수 있다.

I-Node

파일은 파일 데이터와 파일 속성으로 구성된다. I-Node는 이 가운데 파일의 속성을 담는 자료구조다.

  • 파일 크기, 접근 모드, I-Node 번호, 소유자와 그룹 같은 정보를 가진다.
  • 파일의 데이터가 저장된 블록의 주소도 저장한다. 파일이나 디렉터리는 여러 개의 블록으로 구성되며, I-Node가 이 블록들의 주소를 가리킨다.

파일 시스템은 I-Node를 통해 파일의 내용이 저장된 위치를 찾고, 파일과 디렉터리에 대한 정보를 관리한다.