OS_15_Files and Directories

saewoohan·2023년 7월 28일
0

OS

목록 보기
18/19
post-thumbnail

OS_15_Files and Directories

1. File Concept

1) File System

  • 파일 시스템은 OS의 측면에서 가장 눈에 띄는 부분이다.
  • 파일 시스템은 file과 directory 구조 두 가지로 구성된다.
    • Files
      • 관련된 정보를 저장
    • A directory structure
      • 파일을 조직화하고 관련 정보를 제공하는 역할
  • File: logical stroage unit (사용자의 관점으로)
    • physical storage device에 매핑된다.
    • 보통은 비휘발성
      • 파일 내용은 전원 장애나 시스템 재부팅을 겪어도 지속된다.
  • File은 data와 program을 나타낸다.
    • Data: numeric, character, or binary data
    • Program: executables

2) File Attributes

  • Name: 파일의 심볼릭한 이름으로, 인간이 읽을 수 있는 유일한 정보
  • Identifier: unique tag (number)
  • Type: 다양한 유형을 지원하는 시스템에서 필요한 파일의 유형 정보
  • Location: 파일이 저장 위치에서의 위치를 나타내는 포인터.
  • Size: 현재 파일의 크기
  • Protection:
    • 읽기, 쓰기, 실행을 수행할 수 있는 사용자를 제어하는 정보
  • Time, date, and user identification
    • 보호, 보안 및 사용량 모니터링에 유용한 정보
    • Creation, last modification and last use
  • 기타 정보들은 파일의 디렉토리 구조에 유지되며, 이 디렉토리 구조는 디스크에 유지된다.

file control block

3) File Types

  • 파일 시스템에 대한 OS설계 시 고려해야할 점.
    • Should OS recognize and support file types?
    • e.g.)
      • user는 text file을 실행하려고 할 것이다.
      • OS는 이러한 시도를 방지 할 수 있다.
  • 파일 유형 규현을 위한 일반적인 기술
    • file name의 일부로 type를 표현
      • Two parts: name + extension
    • Extension은 application에 대한 힌트일 뿐이다.
      • .com, .exe, .bat
    • Unix는 magic number를 사용하여 파일의 유형을 대략적으로 나타낸다.
      • 이를 통해 파일을 유효한 실행 파일로 식별하고 형식에 대한 추가정보를 제공

4) File Operations

  • File은 Abstract Data Type이다.
  • OS는 파일에 대해서 수행할 수 있는 일반적인 작업을 위해 system call을 제공한다.
  • file operation을 위한 최소한의 작업 세트
    • Open (create), close, read, write
      • Resposition within file, delete, truncate
    • Copy = create + read + write

a) Open and Close Operations

  • Open system call
    • 지속적인 검색을 피하기 위해서 사용
    • file의 metadata를 memory로 이동시킨다. (open file tables)
      • 실제 데이터를 제외한 파일에 대한 모든 정보가 이 메모리에 저장된다.
  • Close system call
    • memory에서 해당 entry를 제거한다 (open file tables)
  • OS는 두개의 file table을 사용한다.
    • Per-process open-file table
    • System-wide open-file table

b) Access Methods - Sequential Access

  • Sequential access
    • 가장 간단하고 자주 쓰이는 방법이다.
    • 파일내의 정보를 순서대로, 한 레코드를 다음 레코드로 처리한다.
    • Editors와 compiler가 주로 이런 방법으로 파일에 접근한다.
    • read나 write는 자동적으로 file pointer를 전진시킨다.

5) Views on Files and Disk Allocation

  • Logical record unit (사용자 관점)
    • file은 logical record unit이다.
    • UNIX에서는 파일의 구조나 내용에 관계 없이 bytes의 stream으로 정의한다.
  • Physical recored unit (Kernel 관점)
    • disk I/O는 1 block 단위로 수행된다.
    • 512 bytes per block
  • A file of 1,949 bytes
    • 4개의 block 할당 (2,048 bytes)
    • 마지막 99 bytes는 버려진다.
      • internal fragmentation

Different Views

6) Mapping of File Data

  • 다른 층계 사이에서의 file data mappings

2. Directory Structure

1) Directory Structure

  • To manage millions of files
  • Disk는 한 개 이상의 partition으로 구분 될 수 있다.
    • Minidisks in the IBM World
    • Volumes in PC and Macintosh arena
    • 한 디스크는 여러 개의 분리된 파티션을 제공한다.
    • 여러개의 디스크가 하나의 파티션을 제공 할 수도 있다.
    • Partitions(virtual disk)는 여러 운영체제를 저장하고 시스템 부팅을 가능하게 할 수 있다.
  • 각 partition은 file에 대한 정보가 저장된다.
    • Device directory of volume table of contents
    • Directory는 name, location, size, and type을 저장한다.
    • Directory는 symbol table로 보여 질 수 있다.

a) Single-Level Directory

  • 모든 file들은 같은 디렉토리에 포함되어 있다.
    • All files는 unique name을 가져야 한다.
    • 많은 파일들을 추적하는 것은 어려운 작업이다.

b) Two-Level Directory

  • 유저마다 분리된 directory를 제공한다.
    • MFD (master file directory)
    • UFD (user file directory)

c) Tree-Structured Directories

  • two-level directory의 일반화
    • directory는 file이나 하위 Directory의 집합을 포함한다.
  • Directory는 기본적으로 파일의 한 형태이지만 특별하게 취급된다.
    • 디렉토리 항목중 하나의 bit는 파일인지 디렉토리인지 정의한다.
      • As a file (0) or as a directory (1)
    • directory를 생성하고 삭제하기 위한 특별한 시스템 콜이 필요하다.
  • Path name
    • Absolute path nam: root/spell/mail
    • Relative path name: prt/first = root/spell/mail/prt/first

d) Acyclic-Graph Directoried

  • tree structure는 file과 directory의 공유를 허용하지 않는다.
  • acyclic graph는 디렉토리와 파일의 공유를 허용한다.
    • 파일에 대한 여러 본사본을 작업하지 않아도 된다.
    • 여러 사용자가 같은 파일을 수정하면, 다른 사용자가 즉시 볼 수 있다.
  • acyclic directory를 구현하는 Common way
    • link라고 불리는 새로운 directory 항목을 만든다.
    • link는 기본적으로 다른 directory나 file을 가리키는 pointer로 작동한다.

  • Soft link: $ ln -s original.txt new.txt
    • Soft link는 “name”을 사용하여서 file을 redirecting 한다.
    • 즉, original file의 이름이 변경되면 soft link는 pointing을 멈춘다.
    • 만약 원래 파일 이름으로 새 파일을 만들면, soft link는 해당 새 파일을 가리킨다.
    • soft link는 file systems 간에 작동 할 수 있다.
  • Hard link: $ ln exist.txt new.txt
    • 이름이 바뀌어도 영향을 받지 않는다, inode(file control block)을 참조하기 때문에
    • 원본을 삭제해도 실제로 삭제되지 않고 여전히 접근이 가능하다.
    • 그러나 서로 다른 file system에서는 사용 할 수 없다.

f) Some Issues with acyclic-graph directories

  • Two different names (aliasing)
    • 공유된 structures를 한번 이상 탐색하지 않으려 할때 중요하다.
  • Deletion problem (dangling pointer)
    • Dangling pointer는 존재하지 않는 파일이나 다른 파일을 가르킬 수 있다.
  • Solutions to deletion problem
    • link를 dangling으로 두는 것이다.
      • 이 dangling link를 사용하려는 시도는 다른 illegal file name에 대한 접근과 동일하게 처리된다.
    • 모든 references가 삭제될 때까지 파일을 유지한다.
      • 이 방법에서는 모든 참조목록을 유지해야한다.
      • file reference는 크기가 가변적이고 potentially large size이다.
      • 실제로는 참조 수만 유지하면 된다. (UNIX hard link for nonsymbolic links, inode)

g) General Graph Directory

  • acyclic graph의 주된 장점은 그래프를 순회하는 알고리즘의 상대적 단순성이다.
    • 우리는 성능상의 이유로 하위 디렉토리를 다시 검색하는 것을 피하려고 한다.
  • General graph는 cycle의 존재를 허용한다.
    • 잘못 설계된 algorithm이 무한 루프에 빠질 수 있다는 문제점을 가지고 있다.
    • 이를 간단히 해결하는 방법은 디렉토리 순회 도중에 링크를 우회하는 것이다.

h) File System Mounting

  • file이 사용되기 전에 파일을 열어야 하듯이
  • file system도 사용하기 전에 mounted되야 한다.
    • 별도의 disk나 partition에 위치한 file을 가져오기 위해서는, 해당 file system을 mount해야한다.
    • mount [-t filesystemtype][-o options] devicename mountpoint
    • mount -t iso9660 /dev/hdc /mnt
  • unmounted file system은 mount point에서 mount된다.

0개의 댓글