[OS] Ch13-15 File System (1)

흐짜짜! 🫒 올리브·2020년 12월 12일
0

OS

목록 보기
7/9
post-thumbnail

File System

application은 process address space에 데이터를 저장할 수 있다.

  • virtual address space는 한정된 크기를 갖고 있다.

  • power 나가면 / program 종료하면 없어질 수도 있다.

  • 여러 process가 같은 데이터에 대해 접근하고 싶을 수 있다.

  • 아주 큰 정보를 담을 수 있는 사이즈

  • 정보 살아남아야

  • 동시에 여러 process에게 정보를 전달해야

  • disk에서 정보를 저장할 때 file을 사용한다.

  • OS에 의해 관리

File System = In Memory structure + on Device structure

1. File and File Structure

file

file은 secondary storage에 저장된 정보 묶음
이름으로 구분되고 가장 작은 단위이다.

File structure

  • Byte Sequence
  • Record sequence
  • Complex structure

File name

구분하기 위해서 사용한다. 사용자에게는 block/sector같은 system view의 정보는 필요 없다.
process가 파일을 만들면, 이름을 준다. 이 이름 주는 방식은 OS에 따라 각양각색이다.
이름은 고유하다.

File extenstion

File name은 2 부분 : name + extension (ex. a.doc)
UNIX에서 extension은 별로 중요하지 않다.(C file 같은 경우에는 extension갖고 있음)
Windows에서는 어떤 application과 연결될지 extension이 의미

Access Methods

Sequential Access 순차적

file 안의 정보가 순서대로 처리됨

Direct Access

대부분 sequential,
disk : direct (특정 위치 직접 access 가능)

File Attributes

파일은 여러 속성을 갖고 있다.

  • Name
  • Identifier
  • Type
  • Location
  • Size
  • Protection
  • Time, date, and user identification

2. Directory Structure

파일을 만들 때, 모든 attribute 정보를 갖고 있는 FCB가 만들어진다. (UNIX에서는 i-node)
FCB를 관리하는 구조를 directory

directory는 file 정보를 직접 가질 수도 / file pointer를 가질 수도
file 처리하려면 directory 정보가 있어야 한다.

directory --> FCB --> Files

directory structure, FCB, file은 disk에 있다.
성능 향상을 위해 in memory cache를 사용하기도 한다.

File/ Directory operations

OS는 file과 direcotry operation을 위해 다양한 system call을 가지고 있다.

file operation

  • create/delete/read/write
  • seek : 파일 내 읽는 위치 reposition (file random access 가능하게 해줌)
    [off_t lseek(int fildes, off_t offset, int whence)]
    • whence : SEEK_SET : to offset_byte
    • whence : SEEK_CUR : curr location + offset
    • whence : SEEK_END : file size + offset(<0)
  • truncate, ftruncate : open된 상태에서 가능, size change

directory operation

  • search, create, delete, list, rename
  • traverse the file system ; file 하나씩 return

How to Organize directory

issues

  • efficiency
  • nameing
  • grouping

logical structure

① single level directory

단 하나의 level : easy to support / understand

  • Naming Problem : 모든 파일 이름이 다 달라야 한다
  • Grouping Problem : 구분짓기 어렵다

② two level directory

각 user마다 directory 구분
user name / file name : path

  • user끼리 같은 이름 가질 수도 있다.
  • 검색 유용
  • grouping 불가 ; 한 사용자 안의 grouping 불가

③ tree structured directory

two-level directory의 일반화

각 user는 current directory 가진다 (working directory)
path name은 absolute(시작부터 path ex. spell/mail/prt/first) 또는 relative(current directory부터 path ex.mail/prt/first)

  • 모든 것은 current directory 안에서
  • 새로운 파일을 만드는 건 current directory 안에서
  • delete file /createing new subdirectory
  • 검색 용이
  • grouping 가능

④ Acyclic graph directory

shared subdirectory and file using link
사이클X

  • 같은 파일에 대해 다른 이름 생길 수도 : aliasing problem
  • original file 지워도 link는 안 지워짐, link는 살아있지만 내용이 없다 : dangling problem
    (soft link/symbolic link in UNIX, shortcut in Windows)

solution

  • back pointer를 유지한다
  • back pointer : daisy chain
  • Reference count solution
    (hard link/non-symbolic link in UNIX)

FCB에 reference counter를 두어서, 자신을 access하는 애가 몇 개인지 count한다.
delete할 때마다 FCB의 reference counter를 줄인다.
(--> refer counter가 0보다 크다면, 같은 file link하는 file이 존재한다는 의미니까 지운 애 link만 끊고 다른 file은 access가능하게)

Hard Link vs. Soft Link in UNIX

  • Hard link/non-symbolic link는 ln 명령어로 만들 수 있으며, link system call
    No dangling pointer problem
    두 directory entry가 같은 FCB를 공유한다면, file은 실제로 하나이며 이 FCB의 reference counter는 2이다.
    rm t.c하면 t.c 지우고 refer count--, 0보다 크면 FCB를 지우진 않는다.
    같은 파일 시스템의 파일에서만 가능하다. (window, linux cross link 불가능)
    NO hard link to directory

  • Soft link/symbolic link
    ln -s, symlink()
    다른 FCB(i-node)를 가지고 있다.
    다른 파일시스템 사이의 파일/디렉토리에 대해서도 가능하다 (linx --> window link 가능)
    dangling pointer problem!
    ex. 기존 t.c 파일을 soft link로 만들면 FCB를 따로 가지며, FCB가 가리키는 file 내용이 "file name"(path name)
    linketest.c --> FCB --> file name for linked file --> t.c --> FCB --> actual data on disk
    rm t.c FCB가 지워진다. linktest.c --> access 불가. (linktest.c 지워지는 건 문제 발생하지 않는다)

⑤ General graph directory

acyclic이 더 general
acyclic은 자신의 밑에 있는 directory로만 link한다
general graph directory는 cycle을 허용한다.
즉, 하위 디렉토리 파일이 상위를 가리킬 수 있다.

  • search algorithm이 무한 loop 걸릴 수도
  • reference count solution으로는 해결 불가 --> grabage collection (시간 걸림)

acyclic이 더 편하다

acyclic graph structure에서 cycle없게 하려면?
cycle없게 만들려면, link를 sub directory가 아닌 것만 가능하게 한다
새 link가 만들어질 때마다 cycle detection algorithm을 사용한다.

3. Protection

File owner/creator는 제어할 수 있어야 한다.
read/write/execute/append/delete/list

Access Control list (ACL)

다양한 user가 다양한 access방법을 필요로 할 것이다.
사용자마다 어떤 걸 access할 수 있는지 만들어 놓은 것. 세분화 control

Advantages

  • 복잡한 access 가능하게 한다
    Disadvantages
  • FCB안에 ACL 넣어두면 user가 몇 명인지 모르기 때문에 space 관리하기 좋지 않다.

Access Lists and Groups (UNIX)

mode of access
: read/write/execute

user class

  • owner
  • group access
  • public access

ex. chmod 755 game
ex. chgrp Group game : chagne group
ex. chown username filename

0개의 댓글