가상 메모리

2025. 6. 9. 12:18·Programming/기타
반응형

가상 메모리

무엇인가?

보조 기억장치(SSD, HDD등등...)의 일부를 주 기억장치처럼 사용하여 용량이 큰 프로그램을 실행할 수 있도록 하는 기술을 말한다.

프로그램을 여러 개의 작은 블록단위로 나눠서 가상 메모리에 보관하고, 프로그램 실행시 요구되는 블록만 주 기억장치에 할당하여 처리한다.

개념

가상 메모리는 주 기억장치(RAM)의 용량이 부족한 상황에서도 대용량 프로그램을 실행할 수 있도록 보조 기억장치의 일부를 마치 램의 일부인것처럼 사용하는 방식이다. 프로그램을 여러개의 블록(논리 단위)로 분할하여, 실행에 필요한 블록만 램에 올리고 나머지는 보조기억장치에 남겨두게 된다.

 

이 방식은 과거의 스와핑 기법(실행중인 프로그램을 통째로 교체하는 방식)에서 발전한것으로, 연속된 기억장치 할당에서 발생하는 단편화 문제를 줄일 수 있다.

 

가상 기억장치는 블록 관리 방식에 따라 크게 두 가지 기법으로 나뉜다.

 

페이징(Paging)

페이징은 프로그램과 램을 동일한 크기의 블록으로 나누는것에서 시작된다.

프로그램의 블록은 페이지(Page), 램의 대응하는 영역은 페이지 프레임(Page Frame)이라고 한다.

페이지 단위로 적재되기 때문에 외부 단편화는 발생하지 않지만, 남는 공간으로 인해 내부 단편화가 일어날 수 있다.

페이지 위치를 추적하기 위해 페이지 맵 테이블이 필요하며 이로 인해 메모리 접근 시간이 늘고 시스템 자원이 더 많이 소모될 수 있다.

 

세그먼테이션(Segmentation)

프로그램을 논리적인 단위인 세그먼트(Segment)로 나눈다. 각 세그먼트는 고유한 이름과 크기를 갖게 된다.

사용자 관점에서 기억장치를 관리하는 방식으로, 함수, 데이터, 스택 등 논리적 구조에 따라 구분된다.

내부 단편화는 발생하지 않지만, 서로 다른 크기의 세그먼트들이 불연속적으로 배치되면서 외부 단편화가 발생할 수 있다.

 

요약

가상 메모리는 보조기억장치를 확장된 주 기억장치처럼 활용하는 기술이다.

페이징은 동일한 크기의 블록으로 나누는 방식, 세그먼테이션은 논리 단위를 기반으로 나누는 방식이다.

각각 장단점이 있으며 실제 운영체제는 이 두 방식을 혼합하여 사용하기도 한다.

반응형

'Programming > 기타' 카테고리의 다른 글

비트 연산  (0) 2025.01.08
UTF - 8 / 16  (1) 2025.01.05
구조체 패딩  (1) 2024.12.30
워치독 타이머(Watchdog Timer)  (0) 2024.12.15
소프트웨어의 정의와 특성  (1) 2024.12.08
'Programming/기타' 카테고리의 다른 글
  • 비트 연산
  • UTF - 8 / 16
  • 구조체 패딩
  • 워치독 타이머(Watchdog Timer)
skajalf
skajalf
skajalf 님의 블로그 입니다.
  • skajalf
    skajalf 님의 블로그
    skajalf
  • 전체
    오늘
    어제
    • 분류 전체보기 (156) N
      • UNITY (6)
        • FanGame (6)
        • Portfolio (0)
      • UnReal (0)
      • DirectX (0)
      • 코딩테스트 (116) N
      • Programming (34)
        • C C# C++ (9)
        • 디자인 패턴 (0)
        • 자료구조 & 알고리즘 (3)
        • 기타 (22)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    다들 아는거 굳이 적을 이유가 있을까..?
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
skajalf
가상 메모리
상단으로

티스토리툴바