본문 바로가기
CS/OS(운영체제)

가상 메모리(Virtual Memory)와 디맨드 페이징

by 계범 2022. 1. 10.
운영체제 관련 글 순서

- 프로세스란
- 쓰레드
- CPU 스케줄링
- 동기화 툴
- 동시성 제어 예제
- 데드락
- 주 메모리
- 페이징과 스와핑
- 가상 메모리와 디맨드 페이징
- 페이지 교체 알고리즘(FIFO, OPT, LRU), 쓰레싱, working set

 

가상 메모리란

물리적 메모리의 한계를 극복하기 위한 기법.

 

가상메모리의 장점

  • 실제 메모리 크기에 제약받지 않음.
  • 파일,라이브러리 공유 및 프로세스 생성 시에도 유용하게 사용됨.
  • 응답 시간 유지, CPU 이용률, 처리율 상승
    • 동시에 많은 프로그램을 실행 시킬 수 있게 되고, 이에따라 위와 같은 장점이 나타남.
  • SWAP에 필요한 입출력이 줄어들어 실행이 빨라짐(context switch, kernel 개입 최소화)

 

가상 메모리 구조

  • 무한대의 virtual Memory 에서 각각의 프로세스를 동일한 크기로 할당
    • 리눅스의 경우 프로세스 당 4GB의 가상 메모리(0~3 사용자 영역, 3~4 커널 영역)
  • 각각 프로세스의 map(페이징기법에선 page table)을 통해 실제 메모리 사용
  • 사용하지않는 것은 backing store(HDD 등)로 swap out해두었다가 사용할때 swap in

 

가상 메모리 주소 공간

사용자 영역 그림

  • 프로세스가 메모리에 저장되는 가상 공간
  • 논리 주소(Logical address)를 사용하여 표현

 

 

가상 메모리의 공유

  • 2022.01.07 - [CS/OS(운영체제)] - 페이징과 스와핑 에서 얘기했던 Shared Pages
  • 가상공간을 통해 각각의 논리 주소로 실제 주소를 참조하여 같은 메모리(라이브러리 등)를 공유 가능
  • (같은 페이지를 공유한다고 설명하는데, 같은 프레임이라고 생각하면 이해하기 편할 듯 싶다)

 

 

Demand Paging

요청이 들어왔을때, 메모리에 데이터를 적재하는 것.(실제 메모리 적재)

페이징 관련 참조: 

  • Pasing된 가상 메모리에서 page table을 참조하여 물리 주소 사용
    • (리눅스 환경에선 4kb로 페이징되어 있음.)
  • page table엔 유효-무효비트(valid-invalid bit)를 통해 접근 가능 여부를 판단 가능
    • v(valid) : legal[각주:1]하면서 메모리에 있다.
    • i(invalid): not valid 이거나 secondary storage[각주:2]에 있다.
      • 두 상황을 분리할땐 dirty bit 사용

 

 

Demand paging은 요청이 들어왔을때 pasing하여 물리 주소를 참조하는데,

이때 fage fault[각주:3]가 일어나면 운영체제가 해당 페이지를 물리주소에 적재한다.

 

Page Fault 시 처리

 

  • Page 접근 시 valid-invalid부터 확인
  • valid 시 접근. invalid시 page fault 발생.(interrupt)
  • page fault 발생 시 실제 메모리에 적재하는 작업 시행(page in이라고 부름)
    • free frame list(링크드리스트구조)에서 free frame을 찾음.
    • 운영체제가 backing store에 있는 page를 읽어서 free frame에 할당
    • 그에 맞게 페이지 테이블을 수정(프레임번호 할당 및 i -> v)
    • 다시 명령어 수행

 

Pure Demand Paging

  • 처음엔 하나의 페이지도 메모리에 적재하지 않는 것. 말 그대로 요청이 들어올때만 적재.
  • 메모리를 최대한 효율적으로 사용 가능하지만, 처음에는 요청할때마다 page fault가 일어나서 시간적으로 느리다.

 

Prepaging

  • 프로그램 시행 시 필요할 것으로 판단되는 페이지를 미리 올리는 것.
  • Locality of Reference(참조 국부성== 참조 지역성)
    • 동일한 값 또는 해당 값과 관련된 저장소에 자주 접근된다는 특성
    • 공간,시간,순차 지역성이 있음.
      • 공간 지역성: 특정 기억 장소에 대한 접근이 집중적으로 이루어지는 경향이 있다.
        • 배열 순회, 함께 선언된 관련된 변수
      • 시간 지역성: 최근에 사용했던 기억 장소에 대한 접근이 집중적으로 이루어지는 경향이 있다.
        • 순환,서브루틴,스택, 계산과 집계에 사용되는 변수
      • 순차 지역성: 데이터가 순차적으로 엑세스되는 경향이 있다.(프로그램 내의 명령어가 순차적으로 구성되어 있음)

 

Demand Pasing의 성능 계산식

  • p: page fault 확률
  • ma: memory-access time
  • page fault time
    • 아래 3가지를 더한 시간
      • page fault 인터럽트
      • page read
      • process 재시작
  • 예시

 

Copy-on-Write

  • 공유 페이지가 있을때, write시에 copy하여 나누는 것.
  • 2개이상의 process가 읽고 있는건 상관 없음.
  • write시엔 문제가 되니 그때 copy로 나누어서 사용하는 메모리를 나눔(page table을 수정)

 

참조

 

주니온님의 인프런 운영체제강의(공룡책)

https://devlibrary00108.tistory.com/642

 

[OS] 가상 메모리(Virtual Memory)와 페이징

가상메모리(VM != Virtual Machine) 다중 프로그래밍 = 많은 프로세스를 동시에 메모리에 올려야함. 프로세스 전체가 메모리에 올라오지 않더라도 실행이 가능하도록 하는 기법. 물리 메모리보다 프로

devlibrary00108.tistory.com

https://velog.io/@gndan4/OS-%EA%B0%80%EC%83%81-%EB%A9%94%EB%AA%A8%EB%A6%AC

 

[OS] 가상 메모리

가상 메모리와 이를 활용하기 위한 페이징 시스템에 대해 알아보자

velog.io

https://www.fun-coding.org/virtualmemory.html

 

운영체제(OS) 부트캠프: 가상 메모리 (Virtual Memory) - 잔재미코딩

여기서 잠깐!¶ 가상 메모리도 굉장히 큰 부분 프로세스 관련 기술을 이해하면, 가상 메모리도 보다 쉽게 이해 가능 프로세스 이해가 조금 부족하더라도, 가상 메모리에 프로세스 관련 설명이 반

www.fun-coding.org

https://choijiuen.tistory.com/30

 

지역성의 원칙(Principle of Locality)

1. 시간적 지역성 : 한 번 참조 된 기억장소는 가까운 미래에 계속 참조될 가능성이 높음 예) 순환, 서브루틴, 스택, 계산과 집계에 사용되는 변수 2. 공간적 지역성 - 참조된 기억장소의 근처에 있

choijiuen.tistory.com

 

  1. 합법적인. 여기선 접근가능하다는 뜻 [본문으로]
  2. backing store랑 같은 뜻 [본문으로]
  3. 어떤 페이지가 실제 물리 메모리에 없을 때 일어나는 인터럽트 [본문으로]

댓글