[운영체제] 13. File-System Interface

jungizz_·2025년 5월 25일

Operating Systems

목록 보기
13/15
post-thumbnail

💡13장 목표

사용자 입장에서 파일 시스템에 어떻게 접근하는지

  • 파일 시스템 기능
  • 파일 시스템 인터페이스
  • 파일 시스템의 다양한 방법

파일은 연속적인 공간(논리 주소 공간)을 제공한다.
데이터 파일(숫자, 문자, 이진)과 프로그램 파일 유형으로 나눠진다.
텍스트 파일, 소스 파일, 실행 파일 등이 있다.

Attributes

  • 파일 자원 관리를 위해 file table이 존재하고, 그 안에는 다음과 같은 속성(정보)를 가진다.
  • 이러한 파일 정보들은 보통 디스크에 있는 트리 구조의 디렉토리 밑에 파일에 저장된다.

Operations

  • 파일 operation은 OS의 file system에서 system call로 지원된다. 이를 통해 application이 파일 operation을 사용한다.
  • pointer는 읽거나 쓸 위치(포지션)으로, seek으로 이 포지션을 지정한다.
  • 파일을 먼저 열어서 빠른 접근을 할 수 있도록 준비를 한 다음, 읽기 또는 쓰기가 완료되면 준비 작업들을 종료한다.

Open files

OS는 열린 파일들을 open file table과 file pointer, locking 등으로 관리한다.

  • Open-file table: 각 열린 파일에 대한 정보를 가진다. 상태, 위치, 접근 권한 등
    • File pointer:각 프로세스가 열린 파일의 마지막 읽기/쓰기 위치를 가리키는 포인터
  • File-open count: 파일이 열린 횟수 카운트, 마지막 프로세스가 파일을 닫을 때 file table에서 데이터 제거 (이걸 알아야 한 프로세스가 파일 작업을 끝내도 접근 프로세스가 남아있으면 파일이 종료되지 않도록 할 수 있음)
  • Open-file Locking: 여러 프로세스가 파일에 접근할 떄의 충돌을 방지하기 위한 잠금 기능
    • Shared lock: 여러 프로세스가 동시 접근 가능 (reader)
    • Exclusive lock: 독점권, 한 wrtier가 들어오면 다른 reader, writer 들어올 수 없음
    • Mandatory lock: 이미 잠겨있으면 접근 거부, 다시 lock 막는 것
    • Advisorty lock: 잠금 상태를 확인
    • lock example - java API

File Structure

  • None: 단순히 단어 또는 바이트의 연속으로 구성 → 이게 근본이고, 이걸 활용해서 다른 구조도 만드는 것
  • Record: record 단위로 구성
  • complex: 파일마다 형식이 정해져 있거나, 재배치 가능한 로드 파일 등

🔹Access Methods

파일에 접근하는 다양한 방법

  • Sequential access: 순차적으로 접근
  • Direct access: 읽거나 쓸 위치를 지정
    direct access를 아래와 같이 적용하면 sequential access를 할 수 있다.
  • Index access: 파일에 대한 인덱스를 메모리에 저장하여 데이터 위치를 빠르게 찾을 수 있도록
    • 인덱스가 너무 크면 인덱스의 인덱스를 디스크에 저장하는 방법도 있음 → multi Index level
    • ex) ISAM: 작은 master index와 디스크 블록에 저장된 secondary index로 구성
    • ex) VMS에서는 index file과 relative file을 제공

🔹Directory Structure

파일에 대한 정보를 포함하는 노드 집합

  • Directory: 파일들이 저장되는 곳으로, 파일에 대한 정보를 포함 (계층적, 트리 구조)
  • 트리 구조로 구성
    • 효율적 관리, 파일 빠르게 찾을 수 있음
    • 사용자가 쉽게 사용할 수 있도록 네이밍 가능
    • 파일 속상에 따라 그룹화

Operation

  • 파일 검색, 생성, 삭제
  • 디렉토리 목록 나열, 파일 서치
  • 파일 이름 변경
  • 파일 시스템 탐색 (traverse, 트리구조 탐색)

Disk structure

디렉토리와 파일은 모두 디스크에 저장된다.

  • Partition: 디스크를 쪼개서 여러개의 파티션, 각 파티션은 별도의 파일 시스템을 가질 수 있음
    • 디스크나 파티션은 RAID를 통해 에러 처리 및 성능 향상
    • 파일 시스템 없이 raw하게 직접 사용하거나, 파일 시스템으로 format하여 사용
  • 한 파일 시스템의 크기가 커서 여러개의 파티션을 차지하게 될 수 있으니까 Volume을 사용해서 이를 방지한다.
    • ‘파일시스템-볼륨-디스크’ 구조로, 파일 시스템과 볼륨은 1:1로, 볼륨과 디스크는 1:n으로 연결
    • volume table 존재

File system 종류

  • general-purpose file system: 일반적으로 알고있는 다양한 데이터를 파일에 저장하는 시스템
    • ufs, zfs
  • special-purpose file system: 디바이스, 프로세스, 메모리 등의 리소스를 파일 처럼 쉽게 접근할 수 있는 환경을 제공하는 시스템
    • tmpfs, objfs, ctfs, lofs, procfc

Structure

디렉토리 구조는 tree가 일반적이지만 다양하다. single, two level은 거의 사용 안함

  • single level directory: 모든 사용자가 동일한 디렉토리에 저장
  • two level directory: 사용자마다 디렉토리 제공
  • Tree-structured directories: 그룹화해서 원하는 만큼 트리 레벨 생성
    • 절대 경로: 루트 디렉토리에서 시작하는 경로
    • 상대 경로: 현재 디렉토리 기준 경로
  • Acyclic-graph directories: 여러 디렉토리가 같은 파일을 공유할 수 있다. → link
    • link때문에 동일한 파일이 디렉토리마다 이름이 다를 수 있음, 그래도 cycle은 없음
    • 디렉토리가 끊어지면 밑으로 접근 불가능해서 삭제된다. (dangling pointer 삭제)
  • General-graph directories: cycle도 존재
    • 위에서는 reference count를 사용해서 현재 자신의 파일을 참고한 것이 0개 이면 연결이 끊어졌다고 보고 삭제할 수 있었는데, cycle이 생기면 연결이 끊어졌더라도 cycle에서는 서로를 참고하기 때문에 reference count가 0이 되지 않는다. 그래서 root부터 서치해서 닿지 않은 부분에 대한 삭제를 하는 garbage collection이 필요하다.

🔹File System Mounting

파일 시스템을 특정 디렉토리 구조에 연결하여 접근하는 것

예를 들어, 한 파일 시스템이 있는데, 루트에 연결되어있지 않아 접근이 불가능한 상태 → 루트와 연결된 파일 디렉토리 구조에 연결하여 접근 가능하도록 함
(mount할 때, 파일 시스템은 consistency check를 한다)

  • 왼쪽은 마운팅이 끝난 상태, 오른쪽은 마운팅 전
  • User를 마운팅 포인트로 잡아 마운팅

🔹File Sharing

멀티 유저 시스템에서 중요한 기능

  • 여러 사용자가 동시에 파일에 접근하고 수정할 수 있는 환경 제공
  • 사용자 및 그룹에 대한 접근 권한 설정 → 보안 유지
    - User ID, Groun ID를 누군지 구별하고 권한 설정 및 파악

Remote file system

네트워크를 통해 파일 시스템에 접근하는 방법

  • 접근 단계
    • manually: 수동적 접근, FTP(파일 접근 프로토콜)과 같은 프로그램을 사용하여
    • automatically: distributed file system/을 통해 자동 접근, 사용자 입장세어 local인지 remote인지 모름
    • semi automatically: world wide web을 통해 반자동 접근
  • 서버-클라이언트 모델
    • 서버에서 파일 시스템을 제공하고, 클라이언트들은 그 파일 시스템에 접근해서 local에 있는 것처럼 사용하는 것 (remote mount)
  • UNIX 기반 표준 파일 공유 프로토콜 NFS (15장)
  • 분산 정보 시스템 LDPA, DNS 등은 원격 컴퓨팅을 위한 정보에 대한 통합 접근 도와줌

파일 공유 모드

  • State information: 파일에 접근하는 클라이언트 상태 정보를 유지, open-r/w-close를 따르며, 이 과정에서 발생하는 모든 정보 기록
  • Stateless protocol: 상태 정보 포함 안함, 바로 r/w함 → 에러 복구가 쉽지만 보안성이 낮다.

Consistency Semantics

여러 프로세스가 파일에 접근할 때, 데이터의 일관성을 어떻게 유지할 것인가 (일관성이란 프로세스 순서가 달려져도 항상 같은 결과)

  • Unix 파일 시스템 (UFS)에서는 한 사용자가 파일을 수정하면 다른 사용자가 실시간으로 변경 사항을 확인할 수 있다. local기반이라서

  • 하지만 Andrew 파일 시스템 (AFS)는 remot 기반이기 때문에 실시간 변경 사항을 확인하기 어렵다(네트워크 오버헤드), close해야 변경 사항을 확인할 수 있다.


🔹Protection

파일 소유자는 아래 사항을 제어할 수 있다

  • 파일에 누가 접근할 수 있는지
  • 파일에 무엇을 할 수 있는지
    • 읽기 쓰기 실행 추가 삭제 리스트 등

Unix/Linux

  • 소유자/그룹/공용 접근 권한 설정
  • RWX(읽기, 쓰기, 수행)의 각 비트로 접근 권한 설정

Window는 더 복잡한 접근 모드를 가진다.

profile
( •̀ .̫ •́ )✧

0개의 댓글