본문 바로가기

운영체제(OS)

가상 메모리 개요

가상 메모리 개요

가상 메모리 정의

  • 가상 메모리(Virtual Memory System)
  • 가상 메모리는 실제 메모리보다 많아 보이게 하는 기술로, 어떤 프로세스가 실행될 때 메모리에 해당 프로세스 전체가 올라가지 않더라도 실행이 가능하다는 점에 착안하여 고안함
  • 물리적 메모리 용량의 한계를 극복하기 위한 기술
  • 프로세스를 실행할 때 실행에 필요한 메모리만 로드하고 나머지는 디스크에 두는것
    • 프로세스 전체가 물리적 메모리에 있는것 처럼 수행됨
    • 메모리에 작은양의 주소공간만 있으면 충분히 프로세스를 수행가능하고 더많은 프로그램을 동시에 실행할수있어짐
    • 물리메모리 == 메인메모리

가상 메모리 구성

  • 가상 메모리는 크게 프로세스가 바라보는 메모리 영역과 관리자가 바라보는 메모리 영역으로 나뉜다

가상 메모리 시스템에서는 물리 메모리의 내용 중 일부를 하드디스크의 일부 공간, 즉 스왑 영역으로 옮긴다. 스왑 영역은 하드디스크에 존재하지만 메모리 관리자가 관리하는 영역으로 메모리의 일부이며, 가상 메모리의 구성 요소 중 하나이다. 메모리 관리자는 물리 메모리의 부족한 부분을 스왑 영역으로 보충한다. 즉, 물리 메모리가 곽 찼을 때 일부 프로세스를 스왑 영역으로 보내고(스왑 아웃), 몇 개의 프로세스가 작업을 마치면 스왑 영역에 있는 프로세스를 메모리로 가져온다(스왑인)
따라서 가상 메모리에서 메모리 관리자가 사용할 수 있는 메모리의 전체 크기는 물리 메모리(실제 메모리)와 스왑 영역을 합한 크기이다.
페이징 기법

  • 컴퓨터가 메인 메모리에서 사용하기 위해 데이터를 저장하고 검색하는 메모리 관리 기법.
  • 페이징 기법을 통해 컴퓨터의 물리적 메모리는 연속적으로 할당되어 존재할 필요가 없으며, 반대로 연속적으로 존재 하지 않는 물리적 메모리라도 페이징 기법을 통해 연속적으로 존재하는것 처럼 이용될 수 있다.
  • 프로세스를 고정 분할 기법을 사용하여 일정 크기의 페이지로 잘라 메모리에 적재하는 방식

    image
  • 페이징 방식에서는 가상메모리상의 주소 공간을 일정한 크기로 분할한다.(고정분할 방식)
  • 주소 공간은 페이지 단위, 실제 기억공간은 페이지 크기와 같은 프레임으로 나누어 사용
    • Frame : 물리 메모리를 일정된 한 크기로 나눈 블록
    • Page : 가상 메모리를 일정된 한 크기로 나눈 블록

image

  • 페이지와 프레임은 프로세스 페이지 테이블을 사용하여 매핑한다
    • 각 프로세스는 자신만의 페이지 테이블을 갖고있다.
    • 페이지 테이블은 배열과 같은데, 배열처럼 인덱스가 페이지 번호를 가르키고 그 배열에 담고 있는 숫자가 매핑할 프레임의 번호
  • 페이징 기법은 프로세스가 프레임의 정수배보다 살짝 작다면 할당된 마지막 프레임은 전부 사용되지 않고 남아버리는 내부 단편화가 발생할 수 있다.(페이지가 클수록 내부 단편화가 커짐)

세그먼테이션 기법

image

  • 세크먼트는 가상 메모리를 서로 크기가 다른 논리적 단위로 분할한것을 의미(가변분할 방식)
  • 세그먼테이션은 프로세스를 물리적 단위인 페이지가 아닌, 논리적 단위인 세그먼트로 분할해서 메모리에 적재하는 방식
  • 세그먼트들의 크기가 다르므로 메모리를 미리 분할해 둘수 없고, 메모리에 적재될 때 빈 공간을 찾아 할당하는 사용자 관점의 가상메모리 관리 기법이다.
  • 세그먼트 테이블을 사용
    • index : 세그먼트 번호
    • base : 시작 주소
    • limit : 세그먼트 크기
  • 세그먼트는 내부 단편화 문제를 해소할 수 있지만, 외부 단편화 문제가 생길수 있다.
  • 보호와 공유 기능을 수행할수있고, 프로그램의 중요한 부분과 중요하지 않은 부분을 분리하여 저장할수있으며, 같은 코드 영역은 한번에 저장이 가능하다.
    • 코드, 데이터, 스택 영역을 나눌 때 각 영역에 알맞게 나누기 때문에 영역끼리 석이지 않는다.

페이징 Vs 세그먼테이션

  페이징 세그먼테이션
분할방식 고정분할 가변분할
외부단편화 X O
내부단편화 O X

'운영체제(OS)' 카테고리의 다른 글

가상메모리관리  (0) 2023.02.17
메모리관리  (0) 2023.02.15
교착상태(Deadlock)  (0) 2023.02.15
동기화 문제  (0) 2023.02.15
인터럽트  (0) 2023.02.09