본 내용은 [Operating Systems : Three Easy Pieces] 및 부산대학교 안성용 교수님의 운영체제 수업을 참고하였습니다.
power가 꺼진 후에도 data를 보관할 수 있도록 하는 것이 Persisten Storage의 개념이며 대표적으로
- Hard disk drive(HDD)
- Solid-state storage device(SSD)
가 있다.
CPU와 Memory에 했던 것처럼 이 storage에도 가상화가 필요하다.
Storage virtualization의 두 가지 중요한 abstraction은
- File
- Directory
이다.
파일과 디렉토리는 익숙한 개념이라 거부감은 들지 않지만 과연 이러한 파일시스템이 어떻게 구현되고, 추상화되는지 한번 알아보자.
Abstractions for Storage
1. 파일(File) 이란
- Persisten storage에 기록되어있는 name 이 있는 관련된 정보들의 집합이다.
- 각 file은 inode number를 가지고 있다.
- Inode는 해당 file system에서 unique하다.
2. 디렉토리(Directory)란
- 파일들을 구조화하게 해준다.
- 디렉토리도 일종의 파일(특별한)이며 <file name, inode number>의 쌍으로 이루어진 데이터를 가지고 있다. (디렉터리에 속한 파일들의 이름과 inode number)
- 계층적인 directory tree 로 디렉터리간의 계층 구조를 표현할 수 있다.
File System Basics
각각의 파일들은 file contents와 file attributes를 가지고 있다.
- File contents : 파일의 data라고 볼 수 있으며, 파일 시스템은 이 content가 어떤지 신경쓰지 않는다.(내용에는 관심이 없음)
- File attributes : metadata 혹은 inode 등의 정보를 일컫는다. File size, Owner, Access control lists, Timestamps, Block location 등의 정보를 가지고 있다.
파일 시스템은 아래 세 가지 측면을 고려해서 구현을 해야한다.
1. Perfomance
2. Reliability
3. Scalability
Hard vs Soft link
- Hard link : 먼저 하드링크를 하는 명령어를 보자.
$ ln old.txt new.txt
위의 경우에서 old.txt를 new.txt에 하드 링크했다.
new.txt란 파일이 만들어졌으며 old.txt와 new.txt 모두 같은 inode number를 가진다.
예를 들어 old.txt 파일이 100이라는 inode number를 가지고 있었다면, new.txt도 100이란 inode number를 갖게 되는 것.
이 경우에는 old.txt파일을 지운다 하더라도 new.txt 파일은 여전히 남아있고 100이라는 inode number의 파일도 유지된다.
Directory에는 하드링크를 생성할 수 없다.
- Soft link : symbolic link라고도 부르는 소프트링크의 명령어를 먼저 살펴보자.
$ ln -s old.txt new.txt
-s 옵션을 통해 링크를 생성했는데, 소프트링크는 쉽게 생각하면 윈도우의 바로가기 기능과 비슷하다.
위의 경우로 예를 들면, new.txt는 old.txt의 경로를 갖고있다고 생각하면 된다.
따라서, 원본인 old.txt를 지우면 new.txt는 함께 사라진다.
File System Mounting
파일 시스템을 사용하기 위해서는 반드시 해당 파일 시스템이 mount 되어야 한다.
존재하는 어떤 directory를 mount point로 잡고 그 point에 새로운 file system을 붙이는 것이다.
//문제제기 및 피드백 언제든지 감사히 받겠습니다.
'Computer Science > Operating System' 카테고리의 다른 글
[운영체제] File System Implementation (0) | 2022.06.12 |
---|---|
[운영체제] Thread(쓰레드) (0) | 2022.05.15 |
[운영체제] Swapping (0) | 2022.05.08 |
[운영체제] Project #1 (3) | 2022.04.24 |
[운영체제] Smaller Tables -Page Directory (0) | 2022.04.24 |