[운영체제] File Descriptor와 File System

지니🧸·2023년 4월 7일
0

CS 저장소

목록 보기
22/48

🎮 File Descriptor

File Descriptor, FD: 프로세스에서 특정 파일에 접근할 때 사용하는 추상적인 값

  • 리눅스/유닉스 계열의 시스템에서 프로세스가 파일을 다룰 때 사용하는 개념
  • 일반적으로 0이 아닌 정수값을 가짐

동작 과정

  1. 프로세스가 실행 중에 파일을 열면 커널은 해당 프로세스의 file descriptor 숫자 중에 사용하지 않는 가장 작은 값을 할당해줌
  2. 그 다음 프로세스가 열려있는 파일에 시스템 콜을 이용해 접근할 때, file descriptor 값을 이용해 파일을 지칭할 수 있음

기본적으로 할당되는 FD

  • 0 - 표준 입력, standard input
  • 1 - 표준 출력, standard output
  • 2 - 표준 에러, standard error

File Descriptor 확인 방법

  1. 실행중인 프로세스 pid 확인
    ps -ef | grep sshd
  2. PID로 해당 프로세스의 파일 디스크립터 정보 확인
    sudo ls -trn /proc/[PID]/fd

🎮 File System

File System: 컴퓨터에서 파일/자료를 쉽게 찾을수 있도록 유지/관리하는 방법

  • 커널 영역에서 동작
  • 계층적 디렉터리 구조

메타영역과 데이터영역으로 나뉨

  • 메타 영역: 파일 데이터의 데이터가 저장된 영역
    • 파일 이름, 위치, 크기, 유형 등
  • 데이터 영역: 실제 데이터가 기록된 영역

🎮 I-Node

리눅스에서 파일 시스템을 관리하기 위해 사용되는 개체의 일종으로 파일의 정보를 가짐

파일은 실제 파일의 데이터와 파일의 속성으로 구성

  • 아이노드는 파일 속성을 가르키는 값
  • 모든 파일은 각자 1개의 아이노드를 갖고 있음
    • 디렉토리도 아이노드를 가짐
  • 아이노드가 가르키는 파일속성에는 다음과 같은 정보가 있음
    • i-node number: 파일시스템 내에서 해당 파일을 식별하기 위한 고유식별자
    • 파일 타입: 파일 유형 (예) 일반파일, 디렉토리, 장치파일 등
    • 접근권한: 파일에 대한 접근권한
    • link count: 해당 i-node를 참조하는 링크 개수
    • 소유자
    • 소유 그룹
    • 파일 크기
    • MAC Time: last modification time, last access time, last change time (속성 정보에 관해)
    • block index: 데이터 블록에 저장되어 있는 파일내용에 대한 색인 정보

파일 처리 방식

  1. 파일이 생성되자마자 inode 번호가 부여됨
  2. inode 블록이 생성되어 상세정보 (meta data)가 기입됨
  3. 이를 기반으로 파일 접근

파일 접근 방식

  1. cat 명령어로 대상 파일의 내용 출력
    예) cat file.txt
  2. inode 블록에 접근하여 파일의 정보 읽음
  3. Direct block에 접근해 내부 데이터를 읽어옴

inode의 크기보다 큰 파일의 경우

  • 그 파일을 수용하기 위해 inode는 또 다른 inode를 가르키게 됨 > indirect pointer
  • 디스크의 inode의 개수는 한정적이기 때문에 파일이 많아지면 디스크 공간보다 inode가 먼저 부족해질 수 있음
    • 이 경우에는 inode의 개수를 늘려 파일 시스템을 다시 구성해야 함

inode가 부족해지면:

  • 모든 새로운 파일/폴더가 거부됨
  • 사용 가능한 inode가 없으면: 데이터 손실, 애플리케이션 크래쉬, 운영체제 재시작 등 문제 발생

참고:

profile
우당탕탕

0개의 댓글