맨위로가기

버퍼 캐시

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

버퍼 캐시는 메모리 사용 효율성을 높이고 디스크 쓰기 성능을 향상시키는 데 기여하는 기술이다. 운영체제는 페이지 캐시를 통해 메모리에 접근하며, 수정된 페이지는 "더티"로 표시되어 디스크에 플러시된다. 실행 파일 및 라이브러리는 페이지 캐시를 통해 공유되며, 2019년에는 페이지 캐시를 이용한 부채널 공격이 시연되어 보안 취약점이 발견되었다.

더 읽어볼만한 페이지

  • 운영체제 기술 - 프로세스
    프로세스는 컴퓨터에서 실행되는 프로그램의 인스턴스로, 운영 체제가 시스템 자원을 효율적으로 관리하며 멀티태스킹 환경에서 독립적인 실행 흐름을 유지한다.
  • 운영체제 기술 - 커널 (컴퓨팅)
    커널은 운영 체제의 핵심으로, 하드웨어와 소프트웨어 간 상호 작용을 관리하며 시스템 보안, 자원 관리, 하드웨어 추상화, 프로세스 스케줄링, 프로세스 간 통신, 다중 작업 환경 지원 등의 기능을 제공하고, 모놀리식, 마이크로, 혼합형 커널 등으로 구현되며 가상화 및 클라우드 컴퓨팅 환경에서 중요성이 커지고 있다.
버퍼 캐시
개요
유형소프트웨어 기반 블록 레벨 캐시
위치호스트 컴퓨터의 메인 메모리
설명드라이브 데이터의 캐시
기능
목적자주 액세스하는 데이터 저장
효과디스크 접근 시간 단축
시스템 성능 향상
작동 방식
데이터 저장 단위페이지
저장 위치주 메모리
관리 주체운영체제 (OS)
관련 용어페이지 캐시
가상 메모리
참고 자료

2. 메모리 보존

페이지 캐시는 이진 파일의 사용하지 않는 부분이 주 메모리에서 플러싱되도록 하여 메모리 보존에 기여한다. 캐시된 페이지는 쉽게 제거하고 재사용할 수 있으므로, 윈도우 NT를 비롯한 일부 운영 체제에서는 페이지 캐시 사용량을 "사용 가능" 메모리로 보고하기도 한다.[5]

2. 1. 더티 페이지

페이지 캐시에 들어온 후 수정된 페이지를 더티 페이지라고 한다.[5] 페이지 캐시의 더티하지 않은 페이지는 보조 기억 장치(예: 하드 디스크 드라이브 또는 솔리드 스테이트 드라이브)에 동일한 복사본이 있으므로, 해당 공간을 버리고 재사용하는 것은 애플리케이션 메모리를 페이징 아웃하는 것보다 훨씬 빠르며, 더티 페이지를 보조 기억 장치로 플러싱하고 해당 공간을 재사용하는 것보다 선호되는 경우가 많다. 응용 프로그램 및 라이브러리와 같은 실행 가능한 이진 파일도 일반적으로 페이지 캐시를 통해 접근되며 가상 메모리를 사용하여 개별 프로세스 공간에 매핑된다(이는 Unix 계열 운영 체제에서 mmap 시스템 호출을 통해 수행된다). 이는 이진 파일이 별도의 프로세스 간에 공유될 뿐만 아니라 이진 파일의 사용하지 않는 부분이 결국 주 메모리에서 플러싱되어 메모리 보존으로 이어진다는 것을 의미한다.

2. 2. 실행 파일 및 라이브러리

실행 가능한 이진 파일은 일반적으로 페이지 캐시를 통해 접근되며 가상 메모리를 사용하여 개별 프로세스 공간에 매핑된다.[5] 이는 이진 파일이 별도의 프로세스 간에 공유될 뿐만 아니라, 사용하지 않는 부분은 주 메모리에서 플러싱되어 메모리를 보존하는 결과로 이어진다.

2. 3. 윈도우 NT의 페이지 캐시

페이지 캐시에 들어온 후 수정된 페이지는 더티 페이지라고 한다.[5] 페이지 캐시의 더티하지 않은 페이지는 보조 기억 장치(예: 하드 디스크 드라이브 또는 솔리드 스테이트 드라이브)에 동일한 복사본이 있으므로, 해당 공간을 버리고 재사용하는 것은 애플리케이션 메모리를 페이징 아웃하는 것보다 훨씬 빠르며, 더티 페이지를 보조 기억 장치로 플러싱하고 해당 공간을 재사용하는 것보다 선호되는 경우가 많다. 응용 프로그램 및 라이브러리와 같은 실행 가능한 이진 파일도 일반적으로 페이지 캐시를 통해 접근되며 가상 메모리를 사용하여 개별 프로세스 공간에 매핑된다.

윈도우 NT와 같은 일부 운영 체제에서는 페이지 캐시 사용량을 "사용 가능" 메모리로 보고하기도 하는데, 이는 캐시된 페이지는 쉽게 제거하고 재사용할 수 있기 때문이다. 이는 메모리가 실제로 디스크 페이지에 할당되어 있는 경우에도 마찬가지이다. 이로 인해 윈도우에서 페이지 캐시 활용에 대한 혼란이 발생하기도 했다.

3. 디스크 쓰기

페이지 캐시는 디스크 쓰기 성능 향상에도 기여한다. 디스크에 데이터를 쓰는 동안 수정된 주 메모리의 페이지는 "더티"로 표시되며, 해제되기 전에 디스크로 플러시되어야 한다. 그러나 모든 캐시된 페이지에 쓸 수 있는 것은 아니며, 프로그램 코드는 종종 읽기 전용 또는 카피 온 라이트로 매핑된다.

3. 1. 더티 페이지 플러싱

페이지 캐시는 디스크 쓰기에도 도움을 준다. 디스크에 데이터를 쓰는 동안 수정된 주 메모리의 페이지는 "더티"로 표시되며, 해제되기 전에 디스크로 플러시되어야 한다.[1] 파일 쓰기가 발생하면 특정 블록에 대한 캐시된 페이지를 찾는다. 페이지 캐시에 이미 있는 경우 주 메모리의 해당 페이지에 쓰기가 수행된다. 페이지 캐시에 없는 경우, 쓰기가 페이지 크기 경계에 완벽하게 일치하면 해당 페이지는 디스크에서 읽히지 않고 할당되어 즉시 더티로 표시된다. 그렇지 않으면 디스크에서 페이지를 가져와 요청된 수정 사항이 수행된다. 페이지 캐시에서 생성되거나 열렸지만 쓰여지지 않은 파일은 나중에 읽을 때 영 바이트 파일이 될 수 있다.[1]

그러나 모든 캐시된 페이지에 쓸 수 있는 것은 아니다. 프로그램 코드는 종종 읽기 전용 또는 카피 온 라이트로 매핑되기 때문이다. 후자의 경우 코드 수정 사항은 프로세스 자체에서만 보이며 디스크에 쓰이지 않는다.[1]

3. 2. 쓰기 동작 방식

파일 쓰기가 발생하면 특정 블록에 대한 캐시된 페이지를 찾는다. 페이지 캐시에 이미 있는 경우 주 메모리의 해당 페이지에 쓰기가 수행된다. 페이지 캐시에 없는 경우, 쓰기가 페이지 크기 경계에 완벽하게 일치하면 해당 페이지는 디스크에서 읽히지 않고 할당되어 즉시 더티(dirty)로 표시된다. 그렇지 않으면 디스크에서 페이지를 가져와 요청된 수정 사항이 수행된다. 페이지 캐시에서 생성되거나 열렸지만 쓰여지지 않은 파일은 나중에 읽을 때 영 바이트 파일이 될 수 있다.

그러나 모든 캐시된 페이지에 쓸 수 있는 것은 아니다. 프로그램 코드는 종종 읽기 전용 또는 카피 온 라이트로 매핑되기 때문이다. 후자의 경우 코드 수정 사항은 프로세스 자체에서만 보이며 디스크에 쓰이지 않는다.

3. 3. 읽기 전용 및 카피 온 라이트

프로그램 코드는 종종 읽기 전용 또는 카피 온 라이트로 매핑된다. 카피 온 라이트로 매핑되는 경우, 코드를 수정해도 그 내용은 해당 프로세스에서만 보이며 디스크에는 쓰이지 않는다.[1]

4. 부채널 공격

페이지 캐시는 부채널 공격에 취약할 수 있다.[6]

4. 1. 부채널 공격의 원리

2019년, 보안 연구원들은 페이지 캐시에 대한 부채널 공격을 시연했다. 이는 실행 파일 또는 라이브러리 파일과 같은 몇몇 파일 페이지가 캐시에 있는지 여부를 체계적으로 모니터링하여 권한 분리를 우회하고 다른 프로세스의 데이터를 유출할 수 있음을 보여주었다.[6]

참조

[1] 웹사이트 Linux Kernel Development (Second Edition), Chapter 15. The Page Cache and Page Writeback http://www.makelinux[...] Sams Publishing 2005-01-12
[2] 웹사이트 Disk Cache https://www.webopedi[...] 1996-09-01
[3] 웹사이트 What to Look for in a Hard Drive http://compreviews.a[...] 2014-12-20
[4] 웹사이트 free(1) — procps — Debian bookworm — Debian Manpages https://manpages.deb[...]
[5] 웹사이트 Glossary - TechNet Library https://technet.micr[...] Microsoft 2010-01-28
[6] arXiv Page Cache Attacks 2019-01-04



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com