[시스템 소프트웨어] 07-1 가상메모리

yesman·2022년 1월 10일
0

시스템 소프트웨어

목록 보기
18/23

가상메모리

가상메모리: 컴퓨터 프로그래머가 무한의 메모리가 있는 것처럼 생각하게 하여, 메모리 제약에 대한 걱정 없이 프로그래밍할 수 있도록 하는 메모리 시스템 구성 개념

일반적으로, 임의의 프로그램이 얼마나 많은 메모리를 필요로 하는지 예측할 수 없다. 특히 multi-user multi-program, multi-task 시스템에서는 더욱 그러하다. 초기 컴퓨터 시스템에서 가장 비싼 경비를 차지했던 것이 메모리였으며, 그러한 비싼 경비 때문에 많은 제약을 받았고 이를 해결하고자 하여 제안된 개념이다. 그러므로 초기 컴퓨터 시스템에서는 대규모 프로그램의 경우 overlay기술을 사용하여 프로그램을 구성하였다.

overlay: 더이상 필요없는 프로그램 모듈을 현재 수행될 프로그램 모듈로 덮어 씌워 수행시키는것. 프로그램이 끝나면 다음 프로그램으로 덮어 씌움.

가상메모리 사용의 3가지 핵심이유?

  1. 서로 다른 사용자 간에 메모리 공간의 효율적 공유를 위해, 또 프로그래머들이 스토리지 할당에 대한 제약을 받지 않도록 하기 위해서이다.
  2. 프로그램 수행 중에 사용되는 메모리 시스템의 양과 배치 등에 대해 의존적이지 않도록 하기 위해서이다.
  3. 계층 메모리 구조에서 높은 access rate와 낮은 비트 당 경비를 위해서이다.

cpu가 생성하는 주소는 논리 주소이고 N-bit이다. 논리 주소를 MMU가 물리 주소로 변환한다.

가상 메모리는 n+1개의 page로 구성되어있고, 논리주소로 page table(memory map)에 접근한다. page table의 물리 주소로 physical memory에 접근하는데 disk의 전체가 physical memory에 올라와 있지 않아서 그 주소에 데이터가 있을 수도 있고 없을 수도 있다. 없는 경우는 disk에서 스와핑으로 가져와서 참조한다.

3가지 주요 결정 사항 (block swapping)

  • Fetch policy(when) - 언제 블록 스와핑을 할 것인지
  • Placement policy(where) - 어디에 할당할 것인지
    memory 할당 알고리즘을 사용한다. 빈공간에 할당.
  • Replacement policy(what) - 어떤 프로세스를 스와핑할 것인지
    빈공간이 없으면 골라서 swap out하고 요청한 것을 swap in 한다.

Fetch policy

demand paging: 해당 페이지가 필요할 때 그 페이지를 메모리로 swap한다. 그러므로 필요로 하지 않으면 결코 메모리로 올라오지 않는다. 요청할 때까지 메모리로 올라오지 않는다. 따라서 I/O가 적고 메모리를 적게 사용한다. 응답이 빠르고 많은 사용자들을 수용한다. segmentation을 사용한다.

anticipatory swapping: 현재 필요하지 않더라도 미리 적당량의 page 혹은 segment를 메모리 상에 가져다 놓는다. 단기 예측은 참조 지역성이 있다. 특정 위치의 가까운 부분을 다음에 접근할 확률이 놓다. (특정한 영역의 주소를 많이 접근하는 경우가 많다.) 장기 예측은 매우 어려우며 사용하지 않는다.

요청 page가 메모리 상에 존재하는지, 아니면 디스크 상에 존재하는지 판별하는 하드웨어의 지원을 필요로 한다. valid/invalid bit 기법을 이용할 수 있다.

valid/invalid bit: page table의 각 항목에 1-bit씩 연관된다. 1은 메모리에 있다는 것이고 0은 메모리에 없다는 것이다. page table은 각 항목의 valid/invalid bit는 처음에 모두 0으로 초기화된다.

만약 메모리에 페이지가 없다면


1. 논리 공간의 1번째 페이지에 있는 B를 참조하려고 하는데 page table에 없어서 page fault가 발생한다.
2. disk로 이동하여 B를 찾는다.
3. disk에 있는 B를 물리 공간으로 swap in한다. (2에 할당)
4. page fault가 발생했던 page table의 1에는 2가 들어간다.

profile
유니티

0개의 댓글