반효경 교수님의 운영체제 강의와 개인적으로 찾아본 내용을 정리한 글입니다.
파일 시스템 (File System)
파일에 대한 관리는 비휘발성 보조기억장치에 접근해야되기 때문에 운영체제에서 관리하는데 이를 파일 시스템이라고 한다. 파일은 파일 자체에 대한 정보인 메타 데이터 (meta data) 와 데이터를 가진다. 메타데이터는 파일 이름, 유형, 저장된 위치, 파일 사이즈, 접근권한, 시간, 소유자 등이 해당된다. 파일시스템에서 파일, 메타데이터, 디렉토리 정보 모두 관리한다.
물리 디스크
물리 디스크는 여러 개의 논리적인 파티션을 둔다. 각각의 파티션에는 file system를 깔 수도 있고 swapping 영역으로도 활용 가능하다.
프로세스 A가 fd = open("a/b") 를 할 때 일어나는 일
파일을 open() 한다는 것은 물리 디스크에 있는 파일의 메타데이터를 메모리에 올린다는 뜻이다. 이때 일어나는 과정은 다음과 같다.
1. 파일 시스템은 트리 구조로 파일을 관리하기 때문에 먼저 root를 접근해야한다. 커널 메모리 영역에는 전역으로 open file table를 관리한다. root의 메타데이터를 커널 영역 메모리의 open file table에 먼저 올린다.
2. root의 메타데이터에서 root의 데이터 저장 위치를 확인한다. root의 데이터에는 a의 메타데이터를 저장하고 있다. a의 메타 데이터를 커널 메모리 영역에 올린다.
3. a의 메타데이터를 통해 a의 데이터 저장 위치를 확인한다. a의 데이터로 b의 메타 데이터가 저장되어 있는데 똑같이 b의메타데이터를 메모리에 올린다.
4. b의 메타데이터를 통해 b의 데이터 저장 위치를 확인한다. 우리가 찾던 b의 데이터를 찾았다. 이는 커널 메모리 영역의 한 부분으로 저장이 된다. (이것이 Buffer Cache 로 쓰이는데 자세한 설명은 나중에)
5. 커널에 저장되었던 데이터가 복사되어 프로세스 A의 데이터로 저장된다.
6. open() 의 결과로 b의 파일 디스크립터 (fd) 가 반환된다. 파일 디스크립터는 b의 메타데이터 위치를 가리키는 포인터로 프로세스 A의 PCB에 파일 디스크립터가 저장된다.
❗페이지 캐싱은 cache hit 일때는 운영체제가 관여하지 않기 때문에 LRU, LFU 알고리즘을 쓰지 못했다. 그러나 파일 시스템의 경우 언제나 운영체제가 관여하기 때문에 LRU, LFU 알고리즘 사용이 가능하다.
파일 접근 방식
1. 순차 접근
- 카세트 테이프를 사용하는 방식처럼 접근
- 읽거나 쓰면 offset 은 자동적으로 증가
2. 직접 접근
- LP 레코드 판과 같이 접근하도록 함
- 파일을 구성하는 레코드를 임의의 순서로 접근할 수 있음
Page Cache vs Buffer Cache
Page Cache 는 paging system 에서 나타나는 캐시이다. 즉 물리 디스크에서 이미 메모리에 올려져 있는 경우이다. Memory mapped IO 를 쓰는 경우에도 파일의 입출력을 위해 page cache를 사용하기도 한다.
그에 반해 Buffer Cache는 파일 시스템을 통한 IO 에서 나타나는 캐시이다. 이전에 read 되어 커널 메모리 영역에 올려진 경우 이후에는 다시 디스크에 접근하지 않아도 메모리 영역에 올려져 있다.
현재 OS에서는 Buffer Cache 와 Page Cache 가 통합되었다.
'💻Computer Science > Operating System' 카테고리의 다른 글
[OS] 프로세스 동기화 (0) | 2023.07.25 |
---|---|
[OS] CPU 스케줄링 (0) | 2023.07.25 |
[OS] 프로그램의 구조와 실행 (0) | 2023.07.25 |
[OS] 컴퓨터 시스템의 동작 원리 (0) | 2023.07.25 |
[OS] 디스크 관리 (0) | 2023.07.08 |