가상메모리와 페이징 시스템이란 무엇인가?

hoon·2023년 2월 14일
0

1. 가상 메모리

운영체제의 대표적인 일 중 하나가 컴퓨터 내의 한정된 메모리를 극한으로 활용하는 메모리 관리이다. 가상 메모리는 메모리 관리 기법의 하나로 컴퓨터가 실제로 이용 가능한 자원을 추상화하여 이를 사용하는 사용자들에게 매우 큰 메모리로 보이게 만드는 것을 말한다. 가상 메모리는 실제 사용하는 메모리는 작다는 점에서 고안된 기술이다.

실제로 프로세스는 하나당 약 4GB를 할당한다. 이는 16GB 메모리를 사용하는 컴퓨터 기준으로 프로그램 서너개 정도 밖에 실행 할 수 없지만 실상은 그렇지 않다. CPU가 특정 시점에서 access하는 데이터는 매우 작은데 점을 고려하여 가상메모리를 고안하였고 우리는 매우 많은 프로그램을 동시에 사용하는 것처럼 느낄 수 있다.

이때 가상으로 만들어 주소를 가상주소(virtual address)라고 하며 실제 메모리 상에 있는 주소를 실제주소(phsyical address)라고 한다. 프로세스는 가상 주소를 사용하고, 실제 해당 주소에서 데이터를 읽고/쓸때만 물리 주소로 바꿔주면 된다.가상 주소는 메모리관리장치(MMU)에 의해 실제 주소로 변환되며, 이 덕분에 실제 사용자는 실제 주소를 의식할 필요 없이 프로그램을 구축할 수 있다.

가상 메모리는 가상 주소와 실제 주소가 매핑되어 있고 프로세스의 주소 정보가 들어있는 페이지 테이블로 관리된다. 이때 속도 향상을 위해 TLB를 사용한다.

  • TLB : 메모리와 CPU 사이에 있는 주소 변환을 위한 캐시이다. 페이지 테이블에 있는 리스트를 보관하며 CPU가 페이지 테이블까지 가지 않도록 해 속도를 향상 시킬 수 있는 계층
  • MMU: CPU에 코드 실행시, 가상 주소 메모리 접근이 필요할 때, 해당 주소를 물리 주소값으로 변환해주는 하드웨어 장치(하드웨어 장치를 이용해야 주소 변환이 빠르게 때문에 별도 장치를 둠)

1.1 가상 메모리가 필요한 이유

배치처리 시스템처럼 하나의 프로세스만 실행 가능한 시스템에는 가상메모리 필요없이 프로그램 메모리 로드

→프로세스 실행 → 프로세스 종료(메모리 해제) 순서로 진행되었다. 하지만 여러 프로세스를 동시에 실행하는 시스템의 경우 가상 메모리가 필요하다. 메모리 용량 부족 이슈, 프로세스 메모리 영역간 침범 이슈등이 발생하기 때문이다.

2. 페이징 시스템(paging system)

  • 페이징 개념
    • 크기가 동일한 페이지로 가상주소 공간과 이에 매칭하는 물리 주소 공간을 관리
    • 하드웨어 지원이 필요 ex) Intel x86 시스템(32비트)에서는 4KB, 2MB, 1GB 지원
    • 리눅스에서는 4KB로 paging
    • 페이지 번호를 기반으로 가상 주소/물리 주소 매핑 정보를 기록/사용한다.
    • 페이지가 어떤 물리 주소에 있는지는 페이지 테이블을 통해 찾을 수 있다.

2.1 페이징 시스템 구조

  • page 또는 page frame: 고정된 크기의 block(4KB)
  • paging system
    • 가상주소 v = (p, d)
    • p : 가상 메모리 페이지 (페이지 번호)
    • d : p안에서 참조하는 위치 (변위)
    • → p만 물리 주소로 바꿔주면 d를 더해서 내가 원하는 데이터가 있는 실제 물리 주소를 알아낼 수 있다.
  • 페이지 크기가 4KB 예
    • 가상 주소의 O비트에서 11비트가 변위를 나타내고
    • 12비트 이상이 페이지 번호가 될 수 있음!

2.2 페이지 테이블

  • page table
    • 물리 주소에 있는 페이지 번호와 해당 페이지의 첫 물리 주소 정보를 매핑한 표
    • 가상주소 v = (p, d) 라면
      • p : 페이지 번호
      • d : 페이지 처음부터 얼마 떨어진 위치인지
  • paging system
    • 해당 프로세스에서 특정 가상 주소 엑세스를 하려면
      • 해당 프로세스의 page table에 해당 가상 주소가 포함된 page 번호가 있는지 확인
      • page 번호가 있으면 이 page가 매핑된 첫 물리 주소를 알아내고 (p’)
      • p’ + d가 실제 물리 주소가 된다.

2.3 페이징 시스템과 공유 메모리 (IPC)

  • 프로세스간 동일한 물리 주소를 가리킬 수 있음(공간절약, 메모리할당 시간절약)
  • 프로세스는 기존 부모 프로세스에서 새로운 프로세스가 생성됨 (기존 프로세스에 새로운 프로세스에 필요한 내용만 덮어서)
  • 페이지 테이블을 모두 생성할 필요 없음
  • fork를 통해서 새로운 프로세스 생성됨
    → 가상메모리가 공간절약, 메모리할당 시간절약
profile
프론트엔드 학습 과정을 기록하고 있습니다.

0개의 댓글

관련 채용 정보