Computer Science/운영체제

[운영체제] 13. File System Interface

lumana 2024. 6. 19. 01:29

File System

  • 파일 시스템
    • File system
    • 저장 장치에 데이터를 조직화하는 소프트웨어.

User's viewpoint (사용자의 관점)

Storage management's viewpoint (저장 관리의 관점)


사용자의 관점에서의 파일 시스템

  • File system interface (파일 시스템 인터페이스)
  • How to show the file system to user? (사용자에게 파일 시스템을 표시하는 방법)
  • 파일, 디렉터리, 속성, 그리고 작업
  • 트리 구조

저장 관리 관점에서의 파일 시스템

  • File system implementation (파일 시스템 구현)
  • How to map the logical file system to the storage device? (논리적 파일 시스템을 저장 장치에 매핑하는 방법)
  • 레이아웃, 데이터 구조, 그리고 알고리즘
  • 저장 내부 구조를 이해해야 합니다.

파일 시스템의 목표


File Concept

  • 파일 (File)
    • A named collection of related information. (관련 정보의 명명된 모음)
    • It is just a sequence of bytes. (바이트의 연속)
    • It is stored on secondary storage. (2차 저장장치에 저장됨)
    • It is divided into data files and program files. (데이터 파일과 프로그램 파일로 나뉨)
  • 파일을 유지관리하기 위한 파일 속성 (File attributes for maintaning files) 
    • 이름 (Name)
      • 사람이 읽을 수 있는 형태로 유지되는 유일한 정보.
    • 식별자 (Identifier)
      • 파일 시스템 내에서 파일을 식별하는 고유 태그(번호).
    • 유형 (Type)
      • 정규 파일, 디렉토리, 심볼릭 링크, 명명된 파이프 등.
    • 위치 (Location)
      • 장치 내 파일 위치를 가리키는 포인터.
    • 크기 (Size)
      • 현재 파일 크기.
    • 보호 (Protection)
      • 읽기, 쓰기, 실행.
    • 시간, 날짜 및 사용자 식별 (Time, date, and user identification)
  • 파일 작업 (File operations)
    • 만들기 (Create)
    • 삭제 (Delete)
    • 열기 (Open)
    • 닫기 (Close)
    • 읽기 (Read)
    • 쓰기 (Write)
    • 잘라내기 (Truncate)
    • 파일 탐색 내 재배치 (Reposition within file-seek)
  • 파일 유형 (File types)
    • Is recognized with file extension. (파일 확장자로 인식됨)
      File type Usual extension Function
      executable exe, com, bin, or none read-to-run machine-language program
      object obj, o compiled, machine language, not linked
      source code c, cc, java, pas, asm, a source code in various languages
      batch bat, sh commands to the command interpreter
      text txt, doc textual data, documents
      word processor wp, tex, rtf, doc various word-processor formats
      library lib, a, so, dll libraries of routines for programmers
      print or view ps, pdf, jpg ASCII or binary file in a format for printing or viewing
      archive arc, zip, tar related files grouped into one file, sometimes compressed, for archiving or storage
      multimedia mpeg, mov, rm, mp3, avi binary file containing audio or A/V information
    • Magic number (in UNIX)
      • 파일 시작 부분에 저장되어 파일 유형을 대략적으로 나타냄.
      • 예: 실행 파일, 배치 파일(또는 셸 스크립트), 포스트스크립트 파일 등.

Access methods

  • Sequential access (순차 접근)
    • 파일은 순서대로 접근되며, 한 레코드씩 차례대로 처리.
    • 파일의 다음 부분을 읽거나 쓰며 파일 포인터를 자동으로 이동시킴.
    • 예: 편집기, 컴파일러
  • Random access (Direct access) (랜덤 접근)
    • 파일은 무작위 순서로 접근됨.
    • 파일 읽기/쓰기 순서에 제한이 없음.
    • 예: DBMS

Directory

  • 디렉토리 (Directory)
    • 파일과 다른 디렉토리 그룹을 포함하는 가상 컨테이너.
    • 예: 트리 구조의 디렉토리

    •  
  • 유닉스 디렉토리 구조 (Unix's directory structure)
    • 디렉토리 엔트리는 (파일 이름, inode 번호)로 저장됨
    • inode는 (attributes, 파일 데이터 포인터)를 포함한다

  • 디렉토리에서 수행되는 작업
    • 파일 검색 (Search for a file)
      • 특정 파일 또는 유사한 이름의 파일 항목 찾기
    • 파일 생성 (Create a file)
      • 새 파일을 생성하고 디렉토리에 추가
    • 파일 삭제 (Delete a file)
      • 디렉토리에서 파일 제거
    • 디렉토리 목록 (List a directory)
      • 디렉토리의 파일 목록 나열
    • 파일 이름 변경 (Rename a file)
      • 파일의 이름 변경
    • 파일 시스템 탐색 (Traverse the file system)
      • 모든 디렉토리 및 디렉토리 구조 내의 모든 파일에 접근

Tree-Structured Directory

  • 트리 구조 디렉토리 (Tree-Structured Directory)

Acyclic-Graph Directories

  • 비순환 그래프 디렉토리 (Acyclic-Graph Directories)
    • 공유 하위 디렉토리 및 파일 (Shared subdirectories and files)을 가지고 있다.

 

  • 동일한 파일(또는 하위 디렉토리)이 두 개의 다른 디렉토리에 있을 수 있음
    • 탐색 문제와 삭제 문제 (Traverse problem and delete problem) 
      • 시나리오 (A scenario)
        • Kim에게 파일 X가 있음. Lee는 그의 디렉토리 아래에 동일한 X를 가져야 함.
        • UNIX에서는, Lee의 디렉토리에 “링크 (link)”를 생성함.
      • 하드 링크 (Hard link)
        • X의 메타데이터를 Lee의 디렉토리에 복사.
        • X를 삭제하면?
          • 참조 카운트(reference count) 사용
          • (X가 삭제되더라도 다른 링크가 남아 있는 한 데이터는 유지됩니다.)
      • 심볼릭 링크 (Symbolic link)
        • Lee의 디렉토리에 대한 X의 경로명(pathname)을 생성.
        • X를 삭제하면?
          • 덩글링 참조 (dangling reference)
          • (원본 파일이 삭제되면, 남아있는 링크가 가리키는 경로가 유효하지 않게 됩니다.)

File System Mounting

파일 시스템 마운트 (File system mount)

  • 파일 시스템 마운트 (File system mount)
    • 운영 체제에 ㅌ파일 시스템이 사용 준비가 되었음을 지시하고 시스템의 파일 시스템 계층 구조에서 특정 지점(mount point)에 연결

  • 루트 파일 시스템 (root file system) : 모든 파일에 접근 가능
  • 디스크 2 및 디스크 3의 파일에 접근하는 방법?

 

위 예시는 disk 3에 있는 stdio.h 파일에 접근하는 예시이다

디스크 2와 디스크 3에 있는 파일에 접근하기 위해서는 다음과 같은 단계를 거쳐야 한다.

  • 디스크 확인: 시스템에서 사용 가능한 디스크를 확인한다. 디스크 2와 디스크 3가 시스템에 연결되어 있는지 확인해야 한다.
  • 파티션 확인: 각 디스크에는 하나 이상의 파티션이 있을 수 있다. 디스크의 파티션 구성을 확인하여 원하는 파티션을 식별한다.
  • 파일 시스템 마운트: 선택한 파티션에 포함된 파일 시스템을 마운트한다. 이를 위해 마운트 지점(예: /mnt/disk2, /mnt/disk3)을 생성하고 해당 지점에 파일 시스템을 연결한다.
  • 파일 접근: 마운트된 파일 시스템의 마운트 지점을 통해 해당 디스크에 있는 파일에 접근할 수 있다. 마운트 지점을 통해 파일을 읽거나 쓰는 등의 작업을 수행할 수 있다.

참고) https://jinger.tistory.com/entry/OS-13-File-System-Interface

File Protection

파일 보호 (File protection)

  • 파일 소유자는 누가 무엇을 할 수 있는지 제어할 수 있어야 함
    • 무엇 (what) - 권한 (읽기, 쓰기, 실행, 추가, 삭제, 목록 등)
    • 누구 (whom) - 사용자 (수퍼유저, foo, kim, park, jane 등)
  • 그룹화가 필요함 (Grouping is required)
    • 접근 권한
      • 읽기, 쓰기, 실행
    • 세 가지 사용자 클래스
      • 소유자, 그룹, 기타
  • 예시 (Example)
    • drwxrwxr-x 2 foo staff 4096 Oct 30 23:25 examples
    • -rw-rw-r-- 1 foo student 62 Oct 30 23:25 hello.c
      • foo는 R/W 할 수 있고, student 도 R/W 할 수 있다. 나머지는 only read만 가능하다.
    • drwxrwxr-x 2 foo staff 4096 Oct 30 23:24 programming_test
    • -rw-rw-r-- 1 foo student 32 Oct 30 23:25 test.txt