Shine's dev log
파일 시스템 (File System), 페이지 캐시 (Page cache) 본문
1. 파일시스템
파일시스템은 파일을 저장하고 읽는 시스템이다. 파일시스템을 통해 영상을 저장하고, 음악을 재생하고, 보고서를 저장하는 등 사용자는 파일 시스템을 항상 사용한다.
운영체제가 프로세스나 쓰레드를 processor가 abstract 해서 사용했고, Virtual Memory system이 메모리를 관리했다면, 파일 시스템은 storage를 abstract 해서 관리하는 것이다.
2. 파일(File)과 디렉토리(Directory)
컴퓨터 입장에서 파일이란, 관계있는 정보를 모아서 저장장치에 저장해놓고, 이름을 붙인 녀석이다.
운영체제는 또한, 컴퓨터의 상태를 보여줄때 pseudo file 로 보여주기도 하고, 메모리 외에 있는 대부분의 장치, 정보들은 모두 파일로 관리한다.
현재 시스템에서 열려있는 파일들을 관리하는 자료구조를 open-file table라고 하고, 각 프로세스마다 여는 파일을 관리하는 자료구조를 file descriptor table이라고 한다.
디렉토리(Directory)란 파일과 디렉토리의 집합이다.
하지만 디렉토리는 단순히 파일과 디렉토리를 nesting 하는데 그치지 않고, 자신이 가진 파일과 디렉토리의 metadata 또한 가지고 있다. metadata란, 특정 데이터를 설명해주는 데이터이다. 예를 들면 특정 파일의 생성시간, 파일이름 등을 담은 정보가 그 파일의 metadata 이다. 위의 그림에서 디렉토리들은 file ID를 가지고 있는데, file ID 또한 metadata의 일종이다.
따라서 디렉토리는 [파일]과 [그 파일의 metadata] 들의 리스트라고 생각하면 된다.
여기서 등장하는 것이 하드링크(hard link)와 소프트링크(soft link)라는 개념이다.
하드링크는 디렉토리 엔트리가 실제로 물리적인 파일이나 디렉토리의 id를 가리키도록 연결해주는 것이고
소프트링크는 디렉토리 엔트리가 특정 파일의 경로를 가지도록 해주는 것이다.
3. page cache
우리가 컴퓨터를 사용할 때, CPU는 사용을 적게 할수록 성능이 좋아진다.(발열관련 문제)
하지만, 메모리는 사용을 적게 하거나 빵빵하게 사용한다고 해서 컴퓨터 성능에 영향을 주지 않는다.
이런 특징을 이용해서 메인 메모리(램)의 남는 공간을 활용해 페이지 캐시(page cache)라는 메모리 공간을 마련해 놓는다. 이 공간은 파일 I/O의 성능을 향상시키기 위해 사용되는 것으로, 사용된 파일의 내용을 저장해 놓았다가 다음에 read나 open할 시에 page cache를 활용하여 컴퓨터의 성능을 극대화 시킨다.
간혹가다가 컴퓨터 청소하라고 해서 막 메모리 정리하고 그런 프로그램들이 있는데(~클린) 이 프로그램들이 지우는 대부분의 영역이 바로 page cache 영역이다. 즉, 운영체제가 정성스럽게 컴퓨터 성능을 빠르게 하기 위해 만들어놓은 메모리 영역을 지워놓고, 청소했다고 하는 것이다. 따라서 그런 프로그램들은 이용하지 않는 것이 좋다.
오늘 배운 내용을 정리해보면,
1. 운영체제는 storage를 파일 이라는 녀석으로 abstract하여 관리한다.
2. 파일은 관련된 정보들의 집합이고, 디렉토리는 파일들의 metadata들을 가지고 있는 파일이다.
3. 남는 메인메모리 공간을 이용해 사용된 파일들을 캐싱해놓는데, 이를 page cache라고 한다.
2020.8.4 운영체제 끝
위 내용은 공부하며 정리한 것으로, 오류가 있을 수 있습니다.
'운영체제' 카테고리의 다른 글
ext4 파일 시스템_2 (삭제된 파일 복구) (0) | 2020.11.29 |
---|---|
ext4 파일 시스템_1 (기본 구조) (0) | 2020.11.23 |
Page replacement policy (0) | 2020.08.03 |
가상 메모리 특징들 (Thrashing, buddy system allocator, Slab, prepaging, page pinning) (1) | 2020.07.26 |
Demand paging 의 개념 (0) | 2020.07.16 |