DongDD's IT

File System - File, File System, Attributes, Operation, Directory, Directory Structure, Link, Mounting 본문

운영체제

File System - File, File System, Attributes, Operation, Directory, Directory Structure, Link, Mounting

DongDD 2017. 11. 19. 17:13

File System


File abstraction


1) User's view : Byte sequence의 이름

2) File System's view : Disk Block들의 집합


File System 역할

1) 이름과 offset을 가지고 disk block으로 변환해줌

2) File operation management :  File 관련 operation을 관리함(open, read, write, close ...)

3) Directory management


File


Definition : 보조기억장치에 저장된 연관된 정보들의 집합

- data는 파일에 기록되지 않으면 보조기억장치에 저장될 수 없다.


Attributes

1) Name : 사람이 읽을 수 있는 형태의 정보로 되어있다.

2) Identifier : 파일 시스템 내에 file들을 구분하기 위한 number(inode)

3) Type : 다른 type을 지원하기 위한 system이 필요하다. executable file, document file등 여러 가지 type이 있음

4) Location : 기기내에 있는 파일의 위치를 가리키는 pointer

5) Size : File의 size를 나타낸다.

6) Protection : File에 대한 read, write, execute에 관한 권한을 제어한다.

7) Time, data, user identification : data를 보호하기 위한 정보등을 나타낸다.


Operation : File에 대한 모든 Operation은 System call이다.

1) Create : 파일을 생성하기 위한 공간을 찾고 새로운 파일을 생성하여 directory내에 file에 대한 entry를 생성한다.

2) Write : 현재 파일 위치를 가리키는 파일에 포함된 내용을 수정한다.

3) Read : 현재 파일 포인터가 가리키는 곳의 data를 읽어온다.

4) Repostion(seek,lseek) : 현재 위치하고 있는 파일 포인터 값을 변경해준다.

5) Delete : File을 삭제한다.

6) Truncate : Attributes를 남겨둔 채로 파일에 담겨있는 내용을 제거한다.

7) Open : Entry(Meta data)를 가져와 Memory에 올리고 Open된 파일에 대한 정보를 담고 있는 Open-file table을 생성한다.

-> Open은 File 이름을 통해 directory에서 찾고 directory entry를 open-file table에 복사한다. 그리고 open-file table에 있는 entry에 대한 pointer를 리턴한다.


Open file magage information

1) File pointer : 파일을 open한 프로세스별로 read/write operation을 하기 위한 pointer를 나타낸다.

2) File-open count : Open된 파일의 수를 나타낸다.

3) Disk location of the file : Data 접근 정보를 위한 cache를 나타낸다.

4) Access rights : 프로세스 별로 파일에 대한 access mode 정보를 나타낸다.


Directory


Definition : 파일들의 metadata를 가지고 있는 파일을 의미한다.


Operation : File에 대한 모든 Operation은 System call이다.

1) Search : 파일에 대한 탐색을 한다.

2) Create : 파일을 생성한다.

3) Delete : 파일을 삭제한다.

4) List : 디렉토리를 나열해 보여준다.

5) Rename : 파일을 이름을 수정한다.

6) Traverse : 파일 시스템을 순회한다.


Directory Structure


1) Single-Level Directory

- 하나의 Directory만 존재한다.

- 모든 파일의 하나의 directory에 포함되어 있다.

- 이름의 중복이 허용되지 않기 때문에 많은 양의 파일에 Naming하기 어렵다.

하나의 Root directory에 모든 파일이 존재한다. 그렇기 때문에 각 File은 Unique한 이름을 가져야한다.


2) Two-Level Directory

- Root directory에서 각각의 user directory를 사용하는 두 개의 Directory level을 사용한다.

- Single-Level에서 발생한 Naming문제를 해결할 수 있다.

- 2개의 level을 사용하여 directory를 형성했기 때문에 파일 공유에 문제가 생길 수 있다.

-> shared directory로 해결 가능.

Root Directory밑에 User directory를 두어 Two-Level directory를 형성한다.

위와 같이 다른 Directory에 존재하는 File의 이름은 중복되어도 상관이 없어진다.


3) Tree-Structured Directory(Hierarchy Structure)

- Tree구조를 가지는 Directory를 사용한다.

- 임의의 깊이를 가지는 Tree를 만들 수 있다.

- User들이 소유할 수 있는 개인의 Directory를 생성할 수 있다.

- Absolute Path(절대경로)와 Relative Path(상대경로)의 개념을 사용한다.

 ① Absolute Path : Root Directory부터의 파일의 경로

 ② Relative Path : 현재 Directory를 기준으로 한 파일의 경로

위와 같은 형태로 Tree구조를 가진다. 각 User directory에 또 다른 Subdirectory 생성이 가능하다.



4) Acyclic-graph Directory

- Tree-Structured Directory와 같은 형태를 가지지만 Link를 허용한다.

- Link를 통해 File 공유가 가능하다.

위와 같이 파일을 공유할 수 있다. 그러나 두 가지의 문제가 발생할 수 있다. 같은 파일이 두 개의 이름을 가질 수 있게 되고, 링크를 하고 있던 원래의 파일이 삭제될 경우 문제가 생긴다.


5) General Graph Directory

- Acyclic-graph Directory에서 Cycle이 허용된 Directory 구조이다.

- File Search에 있어 무한 루프가 발생할 수 있기 때문에 잘 사용하지 않는다.


위와 같이 파일간의 링크를 통해 cycle이 생길 수 있다. cycle을 허용하게 되면 무한 루프 등 문제점을 야기시킬 수 있다.


Hard Link vs Soft Link


Link : File 및 Subdirectory에 대한 Pointer

-> 파일을 공유하는 데에 효율적으로 사용된다.


1) Hard Link

- 존재하는 파일에 대해 File Pointer를 생성해준다.

- Reference count를 이용하여 원래의 파일이 삭제되더라도 이 값이 0이 아니라면 이 파일을 가리키는 Link가 존재한다고 판단하여 파일을 삭제하지 않고 Count값을 1 감소시킨다.

- 같은 파일이기 때문에 inode의 값이 같다.

- Hard Link를 생성할때마다 Reference count값이 1 증가한다.

2) Soft Link

- 원본 파일에 대한 Pointer를 생성해준다.

- Link가 유지되는 동안 원래의 파일이 삭제되는 경우 Dangling Pointer라는 문제점이 발생한다.

- 원본 파일과 Link File의 inode 값이 다르다.



위와 같이 aa라는 파일에 hard_link와 soft_link를 각각의 link 방법을 사용하여 생성했을 때의 모습이다. soft link의 경우 inode값이 다른 것을 볼 수 있고 size 또한 다르다. 하지만 hard link로 생성된 파일은 size와 inode number가 원본파일과 일치한다. 이 상태에서 원본파일인 aa를 삭제시켜보면 다음과 같다.



원본 파일을 삭제한 경우 soft link로 생성한 soft_link 파일은 dangling pointer가 되어 실행시킬 수 없게 된다. 하지만 hard link로 생성한 hard_link파일은 reference count=1의 값을 가지고 있기 때문에 삭제되어도 그대로 사용할 수 있다.


Dangling Pointer

- 원본 파일을 가리키고 있던 Soft Link가 원본 파일이 삭제되면서 가리킬 곳을 잃어버린 상태를 의미한다.



File System Mounting


Mounting : 파일 시스템을 사용하기 위한 과정


- 파일 시스템을 사용하기 위해 Mounting은 반드시 필요하다.

- Mount되지 않은 파일 시스템은 Mounting Point에 Mount된다.

- 임의의 Directory에 Mounting하는 경우 상위 Directory는 File System에 의해 경로가 감춰진다.

초기에는 Directory 2가 Root Directory에 연결되어 있지 않다. 이 것을 연결해주는 것을 Mounting이라고 볼 수 있다.


Comments