[운영체제] 10. 파일 시스템 : 페이지 캐시 & 버퍼 캐시 (File System Implementations 2)

2024. 2. 4. 00:06· CS/운영체제
목차
  1. 1. Page Cache와 Buffer Cache
  2. (1) Page Cache (페이지 캐시) 
  3. (2) Buffer Cache (버퍼 캐시)
  4. 2. Read/Write System Call vs. Memory-Mapped I/O
  5. (1) Read/Write System Call
  6. (2) Memory-Mapped I/O
  7. 3. Unified Buffer Cache (통합 버퍼 캐시)
  8. 참고자료

1. Page Cache와 Buffer Cache

 컴퓨터 시스템에서 데이터의 빠른 접근과 관리를 위해 Cache라는 개념을 사용합니다. 가상 메모리 시스템과 파일 시스템에서 데이터를 캐싱하는 방법에는 각각 Page Cache와 Buffer Cache라는 캐싱 매커니즘이 사용됩니다.

 

(1) Page Cache (페이지 캐시) 

 가상 메모리 시스템에서는 Page Cache가 사용됩니다. Page Cache는 물리적 메모리의 페이지 프레임을 관리하며, 주로 가상 메모리의 페이지 프레임을 캐싱합니다. 이 페이지 프레임은 Swap 영역보다 빠른 메모리에 위치하여 데이터의 빠른 접근을 가능하게 합니다. 

 

 Page Cache는 운영체제가 페이지 캐시에서 데이터를 찾을 때 하드웨어 주소 변환만 수행하므로 접근 시간에 대한 정보를 알 수 없습니다.

그래서 Page Cache는 주로 간단한 대체 알고리즘인 Clock 알고리즘과 같은 방식으로 관리됩니다. 관련 포스팅 바로가기

 

 

 

(2) Buffer Cache (버퍼 캐시)

 반면에 파일 시스템에서는 Buffer Cache를 사용합니다. Buffer Cache는 디스크에서 읽은 파일 데이터를 운영체제의 메모리 영역에 임시로 저장합니다. 이후 동일한 데이터 요청이 발생하면 디스크로부터 읽어오는 대신 캐시된 데이터를 바로 전달합니다. 이런 방법으로 파일에 대한 요청 시 빠른 응답을 가능하게 합니다.

 

 Buffer Cache는 파일에 대한 요청이 언제 발생했는지 추적할 수 있습니다. CPU 제어권이 운영체제에게 있기 때문에 파일 데이터에 대한 정보를 알 수 있습니다. 그래서 LRU(Least Recently Used)나 LFU(Least Frequently Used) 등의 더 복잡한 대체 알고리즘을 사용할 수 있습니다. 

 

 

 

 

 

2. Read/Write System Call vs. Memory-Mapped I/O

파일의 데이터를 읽고 쓰는 방법은 두 가지가 있습니다. Read/Write System Call과 Memory-mapped I/O입니다.

 

(1) Read/Write System Call

 Read/Write System Call을 사용하는 경우엔, 파일을 열고 Read / Write System Call을 호출하여 운영체제가 해당 파일의 내용을 확인합니다.

 

 운영체제는 먼저 Buffer Cache에 해당 데이터가 존재하는지 확인하고, 존재한다면 해당 데이터를 바로 전달합니다. 만약에 Buffer Cache에 없다면, 디스크 파일 시스템에서 데이터를 Buffer Cache로 읽어온 후 전달합니다.

 

 이후 사용자 프로그램은 받은 데이터를 자신의 주소 영역에 있는 페이지에 복사하여 사용합니다.

 

 

(2) Memory-Mapped I/O

 파일의 일부를 프로세스의 가상 주소 공간에 매핑하여 사용하는 방식입니다. 이를 통해 프로세스는 직접 메모리에 접근하여 파일을 읽고 쓸 수 있습니다.

 

 Memory-mapped I/O를 사용하는 경우에도 처음엔 System Call을 요청하여 파일을 메모리에 매핑합니다. 이후에는 운영체제의 개입 없이 사용자 프로그램의 주소 공간에 페이지 캐시가 매핑하기 때문에 파일 입출력을 직접 할 수 있습니다.

 

 만약 매핑된 데이터가 메모리에 없는 경우에는 Page Fault가 발생하고, Page Fault Handler가 호출되어 데이터를 읽고 사용자 프로그램의 주소 공간에 복사합니다.

 

 

 두 방법의 차이점은 Read/Write System Call을 사용할 때에는 운영체제에게 요청을 하여 데이터를 받아와야 하지만, Memory-mapped I/O를 사용할 때는 운영체제의 개입 없이 직접 파일 데이터에 접근할 수 있다는 것입니다.

 

 

3. Unified Buffer Cache (통합 버퍼 캐시)

최근의 OS에서는 기존의 buffer cache가 page cache에 통합되어 캐쉬 관리가 간소화 된 Unified Buffer Cache를 사용합니다.

I/O without a unified buffer cache   (출처 :Operating System Concepts  - Abraham Silberschatz)

기존 Buffer Cache 환경에서는 위 그림처럼 파일 입출력이 모두 Buffer Cache를 통과해야 했습니다. 

I/O using a unified buffer cache  (출처 :Operating System Concepts  - Abraham Silberschatz)

 

하지만 Unified Buffer Cache를 사용하면 위 그림 처럼 Page Cache와 Buffer Cache가 공유되어 단순한 경로로 통하게 됩니다.

 

 메모리 활용면에서도 페이지 캐시와 버퍼 캐시가 공유되므로 메모리 사용에 효율적입니다.

 

 

 

 

 

참고자료

[KOCW 이화여대 반효경 교수님 - File Systems Implementation 2]

https://core.ewha.ac.kr/publicview/C0101020140523142954456205?vmode=f

 

반효경 [운영체제] 26. File System Implementations 2

설명이 없습니다.

core.ewha.ac.kr

 

 

[ Operating System Concepts - Abraham Silberschatz ]

https://www.yes24.com/Product/Goods/89496122

 

운영체제 - 예스24

운영체제

www.yes24.com

'CS > 운영체제' 카테고리의 다른 글

[운영체제] 11. 디스크 관리 : 디스크 스케줄링 (Disk Management & Scheduling 1, 2)  (0) 2024.02.06
[운영체제] 11. 디스크 관리 : 디스크 구조, Access Time (Disk Management and Scheduling 1)  (0) 2024.02.05
[운영체제] 10. 파일 시스템 : VFS와 NFS (File System Implementations 1)  (0) 2024.02.01
[운영체제] 10. 파일시스템 : 디렉터리 구현 방법과 메타 데이터 보관 위치 (File System Implementations 1)  (0) 2024.02.01
[운영체제] 10. 파일 시스템 : UNIX 파일 시스템, FAT File System (File Systems Implementation 1)  (0) 2024.01.30
  1. 1. Page Cache와 Buffer Cache
  2. (1) Page Cache (페이지 캐시) 
  3. (2) Buffer Cache (버퍼 캐시)
  4. 2. Read/Write System Call vs. Memory-Mapped I/O
  5. (1) Read/Write System Call
  6. (2) Memory-Mapped I/O
  7. 3. Unified Buffer Cache (통합 버퍼 캐시)
  8. 참고자료
'CS/운영체제' 카테고리의 다른 글
  • [운영체제] 11. 디스크 관리 : 디스크 스케줄링 (Disk Management & Scheduling 1, 2)
  • [운영체제] 11. 디스크 관리 : 디스크 구조, Access Time (Disk Management and Scheduling 1)
  • [운영체제] 10. 파일 시스템 : VFS와 NFS (File System Implementations 1)
  • [운영체제] 10. 파일시스템 : 디렉터리 구현 방법과 메타 데이터 보관 위치 (File System Implementations 1)
동구름이
동구름이
동구름이
동구름
동구름이
전체
오늘
어제
  • 분류 전체보기 (177)
    • Java (63)
      • Java 를 파헤쳐보자 (13)
      • BOJ (45)
      • 프로그래머스 (3)
      • SWEA (1)
      • Java GUI (1)
    • JavaScript (17)
      • JS를 파헤쳐보자 (7)
      • 프로그래머스 (7)
      • JS 학습 정리 (1)
    • Backend (32)
      • Spring (3)
      • HTTP (7)
      • 프로젝트 (10)
      • MySQL (5)
      • Redis (3)
      • Elastic Search (1)
      • 인증, 인가 (3)
    • CS (57)
      • 운영체제 (35)
      • Network (22)
    • Git (2)
    • 개발 관련 이것저것 (2)
    • etc (1)
    • 독서 (0)
    • 사설 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 자바
  • 모든 개발자를 위한 HTTP 웹 기본 지식
  • 이석복
  • 자바스크립트
  • 백준
  • Java
  • 반효경
  • BOJ
  • 네트워크
  • 스택
  • 김영한
  • 레디스
  • 한양대
  • OS
  • JCF
  • 구현
  • 큐
  • 운영체제
  • 인프런
  • 프로그래머스

최근 글

hELLO · Designed By 정상우.v4.2.2
동구름이
[운영체제] 10. 파일 시스템 : 페이지 캐시 & 버퍼 캐시 (File System Implementations 2)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.