메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

AVM: Application-Level Virtual Memory

noriwiki
Ahn9807 (토론 | 기여)님의 2025년 7월 28일 (월) 03:41 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)


AVM: Application-Level Virtual Memory
AuthorDawson R. Engler, Sandeep K. Gupta, M. Frans Kasshoek
ConferenceACM HotOS
Year1995



개요

Virtual memory management를 User-level에 구현하였다.

Motvation & Importance

과거와는 다르게 점점 다양해지는 (ㅋㅋ) Application trend에 맞추어서, Static한 VM은 Application의 Cutomization에 문제가 되고 있다. 예를 들어서 다음과 같은 예시에서 AVM을 활용할 수 있다.

  1. Fine-grained monitoring
  2. Accurate "in core" information
  3. Page replacement policy
  4. Specific page allocation
  5. Control of page-size (huge page)
  6. DMA
  7. Fine-grained control over virtual memory attributes
  8. Fast exception propagation
  9. Better static fualt-isolation techniques
  10. More efficient dynamic fault-isolation

Main Idea

VM관리를 User-level library로 옮긴다. 커널에는 최소한의 기능만 남겨둔채, 유저레벨에 거의 모든 커널 기능을 옮긴 Exokernel아키텍쳐를 사용하여서 구현하였다.

Design

AVM을 디자인 하기 위해선 다음의 요소를 고려해야 한다.

  1. Allocation of physical memory
  2. Bootstraping of virtual memory machinery (TLB miss code나 page-table 처리)
  3. Efficient exception propagation
  4. Secure modification of the mapping hardware (e.g., TLB)
  5. Revocation of physical memory

AVM은 위의 요소를 다음과 같이 처리하였다.

  1. Allocation: Kernel은 현재 사용 가능한 physical frame에 대한 가용 정보를 bitmap 형태로 user-level과 공유한다. 할당된 frame은 해당 process에 종속되며, 그 process는 해당 capability를 update하거나 free할 권한을 가진다.
  2. Page fault 처리: Page fault 처리는 userfaultfd와 유사한 방식으로 동작한다. 즉, fault가 발생하면 user-level로 제어가 위임되어, application이 적절한 frame을 매핑하도록 한다.
  3. Revocation: Revocation은 swaptions(사용자 수준 스왑 제어)을 위한 로직을 따르며, kernel은 user-level로 revocation fault를 전송한다. 이때, application이 특정 frame들을 반환하면 해당 페이지들은 free되는 방식으로 처리된다.