CS/컴퓨터 구조

[컴퓨터 구조](25)[가상 메모리]

황올뱀 2025. 3. 4. 18:41

가상 메모리: 가상 주소 공간을 사용
마치 한 프로그램 혼자서 메모리를 사용하는 것 같게 함.

  • 메인 메모리를 효율적으로 사용: 필요한 내용만 하드디스크에서 불러옴.
  • 메모리 관리 간소화: 프로그램은 각자 일정 크기의 연속적인 메모리 공간을 사용한다 알고 있음.
    실제 물리적 관리는 운영체제가 하고 프로그램은 신경 안씀.
  • 주소 공간 격리: 메모리에 간접 접근, 프로그램마다 메모리 분리 -> 보안성 좋음
    한 프로세스는 다른 메모리에 끼어들 수 없음. 필요할 때만 서로 공유
    사용자 프로그램이 권한있는 커널 정보나 코드에 엑세스 불가

메모리 관리를 위한 가상 메모리: 메모리를 단순한 선형 배열로 볼 수 있다.

  • 메모리 할당 단순화: 단순 선형 배열의 메모리 구조, 독립적이고 정해진 크기의 공간이라 단순함.
  • 프로세스 간 코드 및 데이터 공유: 한 물리적 주소를 여러 가상 주소가 가리켜 데이터 공유 가능
    예) (가상주소: 0x00) -> (물리적 주소: 0x2313)
    (가상주소: 0x23) -> (물리적 주소: 0x2313)
    0x2313의 데이터를 공유
  • 링킹 간소화: 링킹할 때마다 실제 물리적 주소가 아닌 정해진 가상 주소를 쓰면 됨 -> 로딩시 메모리 위치 신경 안써도 됨.

메모리 보호를 위한 가상 메모리

  • 프로그램 간 메모리 격리
  • 가상주소로 접근할 때 검사
    가상 주소 -> 물리적 주소 과정에서 권한이 있는지 판단하고 있으면 그대로 접근하게 하고, 권한이 없으면 오류(페이지 fault)
    읽기, 쓰기, 실행, 관리자 권한이 있음
  • 버퍼 오버플로우 공격 방어
    NX비트, DEF 기능으로 방어
  • 스택 및 힙 공간 보호
    스택이나 힙이 데이터를 저장하다가 오버플로우가 발생해도 다른 메모리 영역을 덮어쓰지않게 해줌
728x90
반응형