저장 장치의 가상화

<aside> 💡 CPU를 가상화한 것은 프로세스이고 메모리를 가상화한 것은 주소 공간이다. 그렇다면 저장 장치를 가상화한 것은 무엇일까?

</aside>

File system component

저장 장치는 HDD, SSD, CD-ROM, USB 등등, 그리고 마그네틱, 광학, 반도체 등 종류가 여러가지이다. 이렇게 다양한 저장 장치들에 정보를 저장하기 위해서는 정보를 읽고 쓸 수 있는 방법이 정리되어 있어야 한다. 이를 파일 시스템이라고 한다.

특히 파일과 디렉토리라는 두 개의 개념으로 저장 장치를 추상화할 수 있다. 즉, 저장 장치에 접근하기 위해 파일과 디렉토리라는 개념을 이용한다.

file

<aside> 💡 읽거나 쓸 수 있는 순차적인 바이트의 배열이다.

</aside>

각각의 고유한 저수준 이름(inode)을 갖고 있다.

운영체제는 파일이 어떻게 생겼는지 알지 못한다. 이 파일이 그림 파일인지 C언어 소스 파일인지 알 수 없다.

<aside> 💡 파일 시스템은 이러한 데이터들을 디스크에 안전하게 저장하고, 데이터가 요청되면 이 저장되었던 데이터를 돌려주는 일을 한다.

</aside>

directory

각 디렉터리 안에는 .과 .. 디렉터리가 늘 포함되고 있다. 이 두 디렉터리는 각각 현재 디렉터리와 부모 디렉터리를 의미한다.

.과 ..디렉터리는 하드 링크인가?(참고)

디렉터리는 하드 링크할 수 없다. 하지만 현재 디렉토리에서 ..의 아이노드를 확인하고 다시 부모 디렉터리로 가서 아이노드 번호를 찍어보면 같다. 하드 링크와 모든 면에서 유사하나, 하드 링크는 디렉터리를 링크할 수 없기에 하드 링크는 아니다.

이 두 디렉터리는 파일 시스템 자체에서 만들어주는데 이때 사용하는 것이 name-inode map이다.