[OS] 가상메모리

2021. 12. 26. 23:03·OS
728x90

가상 메모리 정의

  • 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법
  • 메모리가 실제메모리보다 많아보이게 하는 기술

가상 메모리 배경

실행되는 코드의 전부를 물리 메모리에 존재시켜야 해서 메모리용량 보다 큰 프로그램을 실행시킬 수 없었음, 그리고 여러 프로그램을 동시에 메모리에 올리기에는 용량 문제, 페이지 교체등 성능 이슈가 발생하게 되며 사용하는 코드가 차지하는 메모리들을 확인 할 수 있다는 점에서 불필요하게 전체 프로그램이 메모리에 올라와 있어야 된다는게 아니라는 것을 알 수 있음


가상 메모리의 역할

  1. 가상 주소 공간 제공
  2. 프로세스간의 페이지 공유

가상 주소 공간 제공

  • 한 프로세스가 메모리에 저장되는 논리적인 모습을 가상메모리에 구현한 공간으로 프로세스가 요구하는 메모리 공간을 가상메모리에서 제공함으로 써 직접적으로 필요하지 않은 메모리 공간을 실제 물리 메모리에 올리지 않아 물리 메모리를 절약할 수 있음
  • 예를 들어, 한 프로그램이 실행되며 논리 메모리로 100KB가 요구 되었다는 전제하 실행까지 필요한 메모리공간 (Heap / Stack / Code / Data)의 합이 40KB 라면, 실제 물리 메모리에는 40KB만 올라가 있고, 나머지 60KB는 필요시 물리메모리에서 요구함
Stack  free (60KB) Heap Data Code

프로세스간의 페이지 공유

  • 시스템 라이브러리가 여러 프로세스들 사이에 공유될수 있도록 함
  • 프로세스들이 메모리를 공유하는 것을 가능하게 함, 프로세스들은 공유 메모리를 통해 통신할 수 있음
  • fork를 통한 프로세스 생성 과정에서 페이지들이 공유되는 것을 가능하게 함

요구 페이징 (Demand Paging)

  • 프로그램 실행 시작시 프로그램 전체를 디스크에서 물리 메모리에 적재하는 대신, 초기에 필요한 것들만 적재하는 전략
  • 가상 메모리는 페이지로 관리 되기 때문에 가상 메모리에서 많이 사용됨
  • 요구 페이징을 사용하는 가상 메모리에서는 실행 과정에서 필요해질 때 페이지들이 적재가 됨, 적재된 개별 페이지 들은 페이저에 의해 관리 (페이저 : 사용되지 않을 페이지를 가져오는 시간낭비와 메모리 낭비를 줄여줌)
저작자표시

'OS' 카테고리의 다른 글

[OS] 페이지 교체  (0) 2021.12.26
[OS] 캐시지역성  (0) 2021.12.26
[OS] CPU 스케쥴링  (0) 2021.11.13
[OS] 스케쥴러  (0) 2021.11.10
[OS] 메모리 관리 전략  (0) 2021.11.08
'OS' 카테고리의 다른 글
  • [OS] 페이지 교체
  • [OS] 캐시지역성
  • [OS] CPU 스케쥴링
  • [OS] 스케쥴러
집한구석
집한구석
  • 집한구석
    tgyun615.info
  • 전체
    오늘
    어제
    • 카테고리 (183)
      • JAVA (38)
      • SPRING (15)
      • KOTLIN (23)
      • NETTY (1)
      • DEVOPS (3)
      • DOCKER (7)
      • KUBERNETES (2)
      • JAVASCRIPT (1)
      • SPLUNK (3)
      • ELK (7)
      • KAFKA (2)
      • GO (4)
      • ALGORITHM & DATA STRUCTURE (9)
      • IDE (5)
      • OS (16)
      • NETWORK (14)
      • GCP (2)
      • AWS (2)
      • DATABASE (10)
      • CLEANCODE (7)
      • OTHER (12)
  • 최근 글

  • 태그

    cleancode
    Kafka
    Spring
    java
    AWS
    클린코드
    IntelliJ
    go
    JPA
    SQL
    docker
    splunk
    Elk
    엘라스틱서치
    코틀린
    이펙티브 코틀린
    자바
    이펙티브코틀린
    프로그래머스
    ElasticSearch
  • 링크

    • github
    • linkedin
    • resume
  • hELLO· Designed By 정상우. v4.10.3
집한구석
[OS] 가상메모리
상단으로

티스토리툴바