[운영체제] 가상 메모리 - (1)

Yeongsan Son·2021년 7월 2일
0
post-custom-banner

가상 메모리(Virtual Memory System)

  • 메모리가 실제 물리 메모리보다 많아 보이게 하는 기술
    • 실제 사용하는 물리 메모리 크기가 작다는 점에 착안해 고안
    • 프로세스간 공간 분리로, 프로세스 이슈가 전체 시스템에 영향을 주지 않음

기본 아이디어

  • 프로세스는 가상 주소를 사용
  • 실제 해당 주소에서 데이터를 읽고 쓸때만 물리 주소로 변경
  • virtual address (가상 주소): 프로세스가 참조하는 주소
  • physical address (물리 주소): 실제 메모리 주소
  • MMU(Memory Management Unit)
    • CPU에 코드 실행 시, 가상 주소 메모리 접근이 필요할 때, 해당 주소(일부)를 물리 주소값으로 변환해주는 하드웨어 장치

가상 메모리와 MMU

  • CPU는 가상 메모리를 다루고, 실제 해당 주소 접근시 MMU 하드웨어 장치를 통해 물리 메모리 접근
    • 하드웨어 장치를 이용해야 주소 변환이 빠르기 때문에 별도 장치를 둠

실제 각 프로세스마다 충분한 메모리를 할당하기에는 메모리 크기가 한계가 있음

폰 노이만 구조 기반이므로, 응용프로그램의 코드는 메모리에 있어야 함

  • 예: 리눅스는 하나의 프로세스가 4GB
  • 일반적인 물리 메모리 크기는 8GB, 16GB, 32GB ...

  • 프로세스 A : 4GB 메모리 차지
  • 프로세스 B : 4GB 메모리 차지
  • 프로세스 C : 4GB 메모리 차지
  • 물리 메모리 : 8GB
    • CPU가 실행시키는 프로세스 가상 메모리의 크기만큼만 물리 메모리에 저장

가상 메모리가 필요한 이유

  • 배치 처리 시스템과 같이 하나의 프로세스만 실행 가능한 시스템에서는 필요하지 않음
    • 프로그램을 메모리로 로드
    • 프로세스 실행
    • 프로세스 종료
  • 여러 프로세스 동시 실행 시스템
    • 메모리 용량 부족
    • 프로세스 메모리 영역 간 침범
profile
매몰되지 않는 개발자가 되자
post-custom-banner

0개의 댓글