가상기억장치가 무엇일까?

박승우·2024년 6월 14일
post-thumbnail

대망의 오십 번째 키워드인 '가상기억장치'를 알아보았다.

벌써 50개의 키워드를 공부했다라는게 믿기지 않지만, 힘내서 이론을 알아보았다.

가상기억장치가 뭐에요?

가상 메모리는 컴퓨터 시스템의 메모리 관리에서 중요한 역할을 하는 기술이다. 이를 통해 컴퓨터 시스템은 물리적 메모리의 한계를 극복하고, 프로그램이 필요로 하는 것보다 더 많은 메모리를 사용할 수 있도록 한다. 가상 메모리는 복잡한 구조와 다양한 기법을 통해 이러한 기능을 구현한다.

가상 메모리의 구조와 개념

1. 가상 주소 공간 (Virtual Address Space)

가상 주소 공간은 각 프로세스가 가지는 독립적인 주소 공간이다. 프로세스마다 고유한 가상 주소 공간이 할당되므로, 하나의 프로세스가 다른 프로세스의 메모리에 접근할 수 없다. 가상 주소 공간은 논리적인 메모리 레이아웃을 제공하며, 실제 물리적 메모리와는 독립적으로 관리된다.

2. 페이지 테이블 (Page Table)

페이지 테이블은 가상 주소를 물리적 주소로 변환하는 데 사용된다. 각 프로세스는 자신의 페이지 테이블을 가지고 있으며, 이는 가상 페이지 번호를 물리적 프레임 번호로 매핑한다. 페이지 테이블은 다음과 같은 정보를 포함할 수 있다.

  • 프레임 번호: 해당 가상 페이지가 매핑된 물리적 프레임 번호.
  • 유효 비트 (Valid Bit): 해당 페이지가 물리적 메모리에 있는지 여부를 나타냄.
  • 참조 비트 (Reference Bit): 페이지가 최근에 사용되었는지 여부를 나타냄.
  • 수정 비트 (Modified Bit): 페이지가 수정되었는지 여부를 나타냄.

3. 페이지 폴트 (Page Fault)

페이지 폴트는 프로세스가 참조하려는 가상 페이지가 물리적 메모리에 없는 경우 발생한다. 페이지 폴트가 발생하면 운영체제는 다음과 같은 과정을 통해 페이지 폴트를 처리한다.

  1. 페이지 폴트를 일으킨 프로세스의 실행을 일시 중단
  2. 필요한 페이지가 디스크에 있는지 확인
  3. 디스크에서 필요한 페이지를 물리적 메모리로 로드
  4. 페이지 테이블을 업데이트하여 새로운 프레임 번호를 설정
  5. 프로세스의 실행을 재개

4. 스왑 공간 (Swap Space)

스왑 공간은 디스크의 일부분으로, 물리적 메모리가 부족할 때 사용되지 않는 페이지를 저장하는 데 사용된다. 이를 통해 실제 물리적 메모리를 효율적으로 사용할 수 있다. 페이지가 물리적 메모리에서 스왑 공간으로 이동되는 과정을 스왑아웃(Swap Out)이라고 하며, 반대로 스왑 공간에서 물리적 메모리로 이동되는 과정을 스왑인(Swap In)이라고 한다.

가상 메모리의 구현 기법

1. 페이지화 (Paging)

페이지화는 가상 메모리를 고정 크기의 페이지로 나누는 방식이다. 이는 가상 메모리와 물리적 메모리를 동일한 크기의 블록으로 나누어, 페이지 테이블을 통해 매핑한다. 페이지화의 주요 특징은 다음과 같다.

  • 고정 크기: 모든 페이지와 프레임의 크기가 동일하다.
  • 단순한 관리: 페이지 테이블을 통해 간단히 매핑할 수 있다.
  • 내부 단편화: 페이지가 고정 크기이므로, 마지막 페이지의 일부 공간이 사용되지 않을 경우 내부 단편화가 발생할 수 있다.

2. 세그멘테이션 (Segmentation)

세그멘테이션은 가상 메모리를 논리적인 단위인 세그먼트로 나누는 방식이다. 세그멘테이션의 주요 특징은 다음과 같다.

  • 가변 크기: 세그먼트는 서로 다른 크기를 가질 수 있다.
  • 논리적 구조: 프로그램의 논리적 구조에 따라 메모리를 나눌 수 있다.
  • 외부 단편화: 세그먼트가 가변 크기이므로, 메모리 사용 중 빈 공간이 생길 수 있다.

3. 페이지화된 세그멘테이션 (Paged Segmentation)

페이지화와 세그멘테이션을 결합한 방식으로, 세그먼트를 다시 페이지로 나누어 관리한다. 이를 통해 두 기법의 장점을 모두 취할 수 있다. 이 방식에서는 세그먼트 테이블과 페이지 테이블을 함께 사용한다.

가상 메모리의 성능 최적화

1. 페이지 교체 알고리즘 (Page Replacement Algorithms)

페이지 폴트가 발생했을 때, 물리적 메모리가 가득 차 있으면 기존 페이지를 교체해야 한다. 이를 위해 다양한 페이지 교체 알고리즘이 사용된다.

  • FIFO (First-In, First-Out): 가장 먼저 들어온 페이지를 교체한다.
  • LRU (Least Recently Used): 가장 오랫동안 사용되지 않은 페이지를 교체한다.
  • LFU (Least Frequently Used): 사용 빈도가 가장 낮은 페이지를 교체힌다.
  • Clock: LRU의 근사 알고리즘으로, 참조 비트를 사용하여 페이지 교체를 결정한다.

2. 페이지 크기 선택

페이지 크기는 가상 메모리의 성능에 영향을 미치는 중요한 요소이다. 작은 페이지 크기는 내부 단편화를 줄일 수 있지만, 페이지 테이블의 크기가 커질 수 있다. 반면, 큰 페이지 크기는 페이지 테이블의 크기를 줄일 수 있지만,
내부 단편화가 증가할 수 있다.

가상 메모리의 장점과 단점

장점

  1. 메모리 확장: 물리적 메모리의 한계를 넘어서 메모리를 사용할 수 있다.

  2. 프로세스 보호: 각 프로세스가 독립적인 주소 공간을 가지므로, 프로세스 간의 간섭을 방지다.

  3. 효율적인 메모리 사용: 사용되지 않는 페이지를 스왑 공간으로 이동하여 메모리를 효율적으로 사용한다.

  4. 다중 작업 지원: 여러 프로세스가 동시에 실행될 수 있다.

단점

  1. 성능 저하: 페이지 폴트가 자주 발생하면 디스크 접근이 늘어나 성능이 저하될 수 있다.

  2. 복잡성: 가상 메모리를 구현하고 관리하는 것이 복잡하다.

  3. 오버헤드: 페이지 테이블과 같은 추가적인 데이터 구조를 유지하는 데 오버헤드가 발생할 수 있다.

결론 - 느낀 점

가상화 키워드를 공부할 때 같이 알아본 것이 이번 키워드에 도움이 되었다.
확실히 이해가 좀 잘 되는 편이긴 한데 새로운 단어들이 이제 혼동을 줘서 순탄치많은 않았다.

가상메모리는 우선 한정적인 자원(RAM)을 더욱 늘려서 쓰기 위해 저장장치에서 만들어 쓰는 개념으로 이해했다.

profile
게임을 좋아하는 사람 입니다!

0개의 댓글