• toc {:toc}

Basic Concept

  • OS는 저장된 정보에 대해 동일한 logical view를 제공한다.

    • 저장장치의 물리적 특징을 축약한다.
  • File : Logical storage unit (저장 장치에 저장하는 단위)

    • 사용자와 프로그램이 데이터를 저장하고 재사용할 수 있다.
    • Nonvolatile
    • 프로그램(source, objects)과 데이터(numeric, character, binary)를 나타낸다.
  • File 확장자에 의해 내용 정의된다.

File Attributes

AttributeDescription
name사람이 읽을 수 있는 형태 이름
identifier시스템이 구분할 수 있는 속성
type파일 타입
location장치의 파일 위치
size현재 파일 사이즈
protection누가 읽고 쓰고 실행할 수 있는지
timestamps and user identificationmonitoring, 보안에 대한 데이터

File Operations

  • Create

  • Open

  • Write - write pointer 위치에서 write

  • Read - read pointer 위치에서 read

  • Reposition within a file

  • Delete

  • Truncate : 파일 내용은 지우고 속성은 유지

  • Create, Open 제외한 모든 operation은 open을 먼저 진행해 file discripter를 얻어야 한다.

    • OS open-file table을 유지 (열려 있는 파일 추적 목적)
    • open count : 파일이 몇번 열렸는지 저장

File Locking

  • 파일에 대해 접근 얻지 못하도록 파일을 잠그는 것

  • reader-writer lock과 비슷하다.

  • Shared lock : reader lock과 비슷 여러 프로세스들이 동시에 lock 획득 가능

  • Exclusive lock : writer lock과 비슷 한 번에 한 프로세스만 획득 가능

  • Mandatory : OS가 locking 통합적으로 보장

  • Advisory : 개발자(사용주체)가 lock을 적절하게 직접 설정

    • int flock(int fd, int operation);
    • int fcntl(int fd, int cmd, …);

File Types

  • 파일 시스템의 이해를 위한 type

    • device, directory, symbolic link
  • OS, runtime library

    • executable, dll, source code, object code
  • 프로그램

    • jpg, mpg, avi, mp3, …
  • 인코딩 파일 타입

    • 윈도우는 이름 안에 타입이 있다.
      • .com, .exe, .bat, .dll, .jpg, …
    • 유닉스는 파일 내용 안에 있다.

Access Methods

image

  • Sequential access (순차 접근) : 다음 내용을 읽고 쓴다.
  • Direct access : number에 해당하는 부분을 직접 접근 (순서에 상관없이 빠르게 읽고 쓸 수 있다.)
  • Index access : 책의 목차처럼 사용해 접근

Directory Structure

  • 모든 파일에 대한 정보를 포함한 노드들의 집합

    • 디렉토리 구조와 파일 모두 디스크에 위치
  • Efficiency(효율성) : 빠르게 파일을 위치시키기 위해 사용

  • Naming(명칭) : 사용자의 편의성을 위해

    • 서로 다른 사용자의 경우 다양한 파일에 대해 같은 이름을 가질 수 있다.
    • 같은 파일에 대해 다양한 이름을 가질 수 있다.
  • Grouping : 파일 logical grouping

Single-Level Directory

  • 모든 파일이 한 폴더에 들어가 있는 경우
  • Naming problem(서로 유일한 이름 갖는다.), Grouping problem(나눌 수 없다.) 발생.

image

Two-Level Directory

  • 사용자 각각의 폴더가 다르게 분리한다.
  • Path name : user_name/file_name
  • 효율적 탐색
  • Grouping은 할 수 없다.

image

Tree-Structured Directory

  • 가장 흔한 directory 구조
  • Root directory를 갖는다.
  • 모든 파일이 고유한 경로를 갖는다.

image

Acyclic-Graph Directory

  • 상위 디렉토리가 하위 디렉토리와 파일을 공유할 수 있도록 허용한다.
  • 파일이 두 가지 다른 이름을 가질 수 있다.
  • 하지만 순환 구조가 생기면 안된다.
  • 유닉스 = Symbolic link, Pointer

image

General Graph Directory

  • 디렉토리와 파일에서 순환 구조가 발생해도 된다.
    • Reference count가 0이 되지 않는다.
    • root에서 해당 파일로 가능 경로가 없어도 reference count = 1이 된다. (순환 구조에서)
    • 접근 가능하려면 0이어야 하는데, 이를 확인할 수 없다.
    • Garbage collection을 사용하여 접근할 수 없으면 삭제한다.

image

Protection

  • 파일 제작자/소유자 누구에 의해 실행되었는지 알아야 한다.
  • 접근 권한 부여

Access List / Group in Unix

  • 3가지 모드 : read (R), write (W), execute (X)

image

  • chmod를 통해 해당 접근 권한을 부여할 수 있다.

Memory-Mapped Files

  • Virtual address의 한 부분이 파일들과 논리적으로 연결될 수 있도록 허용한다.
  • Disk Block을 Page와 연결한다.
void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);
  • addr = mmap() 이후 addr에 write를 할 경우 메모리에 써지는 것이 아닌 파일에 써지는 것

image

  • Memory-mapped 상황에서 3번 frame에 write 과정
  1. Write 입력
  2. 3번 frame addr에 접근
  3. Page fault 발생
  4. Disk에서 해당 file 부분을 3번 physical memory에 올려준다.
  5. Page가 physical memory에 올려진 disk block에 접근해 작업한다.