가상 메모리 개념

sungho·2024년 11월 30일
0

가상 메모리

목록 보기
1/11

가상 메모리는 물리적 메모리의 한계를 극복하고 여러 프로세스가 동시에 실행될 수 있도록 돕습니다. 메모리 가상화의 필요성은 프로세스 간의 메모리 보호와 효율적인 자원 관리를 목표로 합니다.

1. 가상 메모리의 배경

  • 메모리 가상화의 필요성
    • 자원 낭비 방지
      • 메모리 낭비를 줄이기 위해 여러 프로세스가 동시에 실행
    • 메모리 보호
      • 프로세스가 자신의 메모리 공간만을 접근할 수 있도록 보호
  • 멀티프로그래밍의 목표
    • 여러 프로세스가 동시에 실행되어 프로세스는 서로의 메모리 공간에 접근할 수 없도록 보호

2. 동적 메모리 할당

  • 프로그램 실행 중에 필요한 만큼 메모리를 할당
  • 재귀적 함수 호출이나 동적 데이터 구조에 유용

동적 메모리 할당 방법

  • 스택
    • 함수 호출 시 지역 변수가 스택에 할당되고 함수가 종료되면 메모리가 해제
    • 스택은 메모리 할당과 해제가 빠르지만 크기가 고정되어 있어 제한적
    • 임의의 시점에 임의의 크기의 메모리를 할당이 가능
    • malloc() 또는 new()를 통해 관리
    • 힙은 유연한 메모리 관리가 가능
      • 동적 배열이나 복잡한 데이터 구조를 사용할 때 유용

3. 메모리 가상화 방법

  • 가상 메모리는 여러 프로세스가 동시에 실행이 가능
  • 운영체제는 페이징과 세그멘테이션을 조합하여 사용

페이징

  • 가상 메모리를 동일한 크기의 페이지로 나누고 물리 메모리도 동일한 크기의 프레임으로 나누어 관리
  • 페이지 테이블을 통해 가상 주소를 물리 주소로 변환
  • 페이지 크기는 일반적으로 4KB에서 16KB 사이로 설정

세그멘테이션

  • 프로그램을 논리적 단위인 세그먼트로 나누어 관리하는 기법
  • 세그먼트는 코드, 데이터, 스택 등으로 구분되며 각 세그먼트는 가변 크기를 가질 수 있음
  • 세그멘테이션은 프로그래머가 프로그램의 구조를 더 잘 반영할 수 있도록 도와주며 각 세그먼트에 대한 접근 권한을 설정 가능

4. 가상 메모리 가상화 기술

공유 메모리 (Shared Memory)

  • 정의
    • 프로세스들 사이에 공유 메모리를 통해 데이터 공유가 가능
  • 방법
    • 프로세스의 페이지 테이블 엔트리에 동일한 물리 프레임을 저장하여 접근 권한을 설정

Memory-Mapped Files

  • 기능
    • 파일 API를 사용하지 않고도 메모리를 통해 디스크 파일에 접근
  • 방법
    • mmap() 시스템 호출을 통해 파일을 가상 메모리에 연결하며 페이지 폴트가 발생하면 해당 데이터를 물리 프레임에 적재

Copy-on-Write

  • 기능
    • 쓰기 발생 시에만 데이터를 복사하여 효율성을 높이는 기법
  • 방법
    • 프로세스 간 물리 프레임을 공유하면서 쓰기 권한을 제한하고 쓰기 발생 시 새로운 프레임을 할당하여 복사

5. 결론

가상 메모리는 운영 체제가 물리적 메모리의 한계를 극복하고 여러 프로세스가 효율적으로 실행될 수 있도록 돕는 중요한 기술입니다. 이를 통해 각 프로세스는 자신만의 메모리 공간을 가지며 메모리 자원의 효율적인 사용과 보호가 가능해집니다. CPU 아키텍처는 페이징 기반의 가상 메모리를 지원하여 메모리 관리의 용이성을 높이고 있습니다.

0개의 댓글