[운영체제] 파일 시스템

2025. 5. 7. 00:29·⚙️ CS/운영체제
반응형

✅ 파일

:  운영체제에서 저장장치의 데이터를 관리하기 위한 논리적 단위

 

  • 일반적으로 프로그램, 데이터 등을 의미
  • 이름, 크기, 위치, 생성 시간, 접근 권한 등 다양한 메타데이터를 가짐
  • 운영체제는 이러한 속성을 바탕으로 파일을 효율적으로 관리

 


 

✅ 파일 디스크립터 (File Descriptor)

: 유닉스 계열 시스템에서 프로세스가 파일을 다룰 때 사용하는 정수값

 

  • 유닉스/리눅스 시스템에서는 디바이스, 디렉터리, 소켓, 파이프 등을 모두 파일로 취급
  • 프로세스가 파일을 열면, 가장 작은 미사용 정수값이 파일 디스크립터로 할당됨
  • 이 정수값은 커널의 Open File Descriptor Table을 통해 실제 파일과 연결됨
    • 테이블에는 다음과 같은 정보가 저장:
      • 현재 읽기/쓰기 위치를 나타내는 파일 오프셋
      • 파일 접근 권한과 플래그
      • 파일을 참조하는 inode 정보
  • ex) `read()` 와 같은 system call에서 `fd`가 바로 파일 디스크립터

 


✅ I-Node

: 유닉스 파일 시스템에서 파일의 메타데이터와 실제 데이터를 가리키는 포인터 정보를 저장하는 구조체

 

아래 그림에서 회색 박스가 inode이다.

INode
출처: "Operating System Concepts ", Abraham Silberschatz

 

  • 각 파일은 고유한 inode 번호를 가짐
  • 파일 이름을 제외한 거의 모든 정보(크기, 권한, 생성/수정 시간 등)가 inode에 저장
  • inode에는 데이터 블록을 직접 가리키는 포인터(direct pointer)뿐 아니라 간접 포인터(single/double/triple indirect)도 포함되어, 파일 크기에 따라 유연하게 확장 가능

 


✅ 고급 언어에서의 파일 처리 방식

프로그래밍 언어에서는 OS의 시스템 콜과 파일 디스크립터를 직접 다루지 않고, 이를 추상화한 파일 처리 API를 제공한다.

 

📍 Python의 open() 함수

  • 내부적으로 open() 시스템 콜을 호출하여 파일 디스크립터를 획득
  • 이후 read(), write() 등 고수준 함수로 파일 작업을 처리
  • ex) `with open('file.txt', 'r') as f:`-> f는 내부적으로 파일 디스크립터를 가짐

 


 

📍 Java의 BufferedReader/Writer

  • FileReader, FileWriter와 같은 스트림을 기반으로 버퍼링 처리
  • 내부적으로 OS의 파일 시스템과 연결된 파일 디스크립터를 이용해 I/O 수행
  • ex) `BufferedReader br = new BufferedReader(new FileReader("file.txt"));`

 

=> 대부분의 언어는 내부적으로 시스템 콜을 통해 파일 디스크립터를 획득하고, 이를 바탕으로 파일 입출력을 수행한다.

반응형

'⚙️ CS > 운영체제' 카테고리의 다른 글

[운영체제] 동기/비동기 & 블로킹/논블로킹  (0) 2025.05.07
[운영체제] 페이지 교체 알고리즘  (0) 2025.05.06
[운영체제] 가상 메모리 & 페이징 & 세그멘테이션  (1) 2025.05.06
[운영체제] 메모리 할당 방식  (1) 2025.04.30
'⚙️ CS/운영체제' 카테고리의 다른 글
  • [운영체제] 동기/비동기 & 블로킹/논블로킹
  • [운영체제] 페이지 교체 알고리즘
  • [운영체제] 가상 메모리 & 페이징 & 세그멘테이션
  • [운영체제] 메모리 할당 방식
dev-heyjin
dev-heyjin
  • dev-heyjin
    개발 기록
    dev-heyjin
  • 전체
    오늘
    어제
    • 분류 전체보기 (56)
      • 🎯 Programming (8)
      • 💪 Algorithm (16)
      • ⚙️ CS (31)
        • 네트워크 (15)
        • 운영체제 (15)
        • 데이터베이스 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    RDS
    데이터베이스
    해킹
    DB
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dev-heyjin
[운영체제] 파일 시스템
상단으로

티스토리툴바