application은 process address space에 데이터를 저장할 수 있다.
virtual address space는 한정된 크기를 갖고 있다.
power 나가면 / program 종료하면 없어질 수도 있다.
여러 process가 같은 데이터에 대해 접근하고 싶을 수 있다.
아주 큰 정보를 담을 수 있는 사이즈
정보 살아남아야
동시에 여러 process에게 정보를 전달해야
disk에서 정보를 저장할 때 file을 사용한다.
OS에 의해 관리
File System = In Memory structure + on Device structure
file은 secondary storage에 저장된 정보 묶음
이름으로 구분되고 가장 작은 단위이다.
구분하기 위해서 사용한다. 사용자에게는 block/sector같은 system view의 정보는 필요 없다.
process가 파일을 만들면, 이름을 준다. 이 이름 주는 방식은 OS에 따라 각양각색이다.
이름은 고유하다.
File name은 2 부분 : name + extension (ex. a.doc)
UNIX에서 extension은 별로 중요하지 않다.(C file 같은 경우에는 extension갖고 있음)
Windows에서는 어떤 application과 연결될지 extension이 의미
file 안의 정보가 순서대로 처리됨
대부분 sequential,
disk : direct (특정 위치 직접 access 가능)
파일은 여러 속성을 갖고 있다.
파일을 만들 때, 모든 attribute 정보를 갖고 있는 FCB가 만들어진다. (UNIX에서는 i-node)
FCB를 관리하는 구조를 directory
directory는 file 정보를 직접 가질 수도 / file pointer를 가질 수도
file 처리하려면 directory 정보가 있어야 한다.
directory --> FCB --> Files
directory structure, FCB, file은 disk에 있다.
성능 향상을 위해 in memory cache를 사용하기도 한다.
OS는 file과 direcotry operation을 위해 다양한 system call을 가지고 있다.
file operation
directory operation
issues
단 하나의 level : easy to support / understand
각 user마다 directory 구분
user name / file name : path
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)
shared subdirectory and file using link
사이클X
dangling problem
solution
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 지워지는 건 문제 발생하지 않는다)
acyclic이 더 general
acyclic은 자신의 밑에 있는 directory로만 link한다
general graph directory는 cycle을 허용한다.
즉, 하위 디렉토리 파일이 상위를 가리킬 수 있다.
acyclic이 더 편하다
acyclic graph structure에서 cycle없게 하려면?
cycle없게 만들려면, link를 sub directory가 아닌 것만 가능하게 한다
새 link가 만들어질 때마다 cycle detection algorithm을 사용한다.
File owner/creator는 제어할 수 있어야 한다.
read/write/execute/append/delete/list
다양한 user가 다양한 access방법을 필요로 할 것이다.
사용자마다 어떤 걸 access할 수 있는지 만들어 놓은 것. 세분화 control
Advantages
mode of access
: read/write/execute
user class
ex. chmod 755 game
ex. chgrp Group game : chagne group
ex. chown username filename