본문 바로가기
전공/운영체제

Ch08. 가상 메모리의 기초_02)페이징 기법(2)

by 임 낭 만 2023. 6. 8.

페이징 시스템의 하드웨어 구조와 원리

16비트 논리적 주소

16비트 논리적 주소

IBM 370의 논리적 주소 (32비트)

IBM 370의 논리적 주소

페이지 테이블을 이용한 물리적 주소 변환 예

페이지 테이블을 이용한 물리적 주소 변환 예

8바이트 페이지와 64바이트 메모리 페이징 예

8바이트 페이지와 64바이트 메모리 페이징 예


다중 단계 페이징 시스템의 구조와 원리

원리

  • 논리적 주소가 클수록 물리적 주소로 변환하는 과정에서 필요한 페이지 테이블 크기도 증가 하므로 메모리에 더 큰 적재 공간 필요

다중 단계 페이징 시스템 예 : VAX와 윈도우 NT는 2단계, 스팍SPARC은 3단계, 모토로라Motorola 68030은 4단계 페이징 시스템 사용

2단계 페이징 시스템의 구조

2단계 페이징 시스템의 구조


페이지 테이블의 구현

페이지 테이블과 페이지 테이블 항목

페이지 테이블과 페이지 테이블 항목

페이지 테이블 관리 방법

  • 전용 레지스터 사용
    • 레지스터는 효율적으로 페이징 주소를 변환하려고 초고속 논리회로로 설계
    • 메모리의 모든 액세스는 페이징 테이블 정보로 수행하므로 효율성을 중요하게 고려해야 함. 레지스터를 사용하여 페이지 테이블을 구현할 때는 페이지 테이블 항목이 적으면 좋은데, 쉽게 관리 가능.
    • 대부분의 컴퓨터는 페이지 테이블이 매우 커서 레지스터로 구현하기에 부적합
    • 대개 페이지 테이블 메모리에 두고 페이지 테이블 기준 레지스터PTBR, Page Table Base Register로 페이지 테이블 지시
    • 페이지 테이블을 메모리에 두면 레지스터 값 하나를 바꿔서 페이지 테이블 변경할 수 있어 문맥 교환 시간이 감소
    • 실제 문맥 교환은 메모리 정보를 모두 교환해야 하나, 페이지 테이블 기준 레지스터는 단순히 레지스터 값을 바꿔서 문맥 교환과 똑같은 효과. 메모리 액세스 시간이 문제
    • 페이지 테이블 항목과 워드를 위한 메모리 액세스가 필요, 이 액세스 때문에 속도가 느려진다는 문제 발생 발생
    • 연관 레지스터나 변환 우선참조 버퍼TLB, Translation Look-aside Buffer를 이용하여 해결 가능
    • 연관 레지스터를 이용하여 논리적 주소를 물리적 주소로 변환하는 방법
      • 직접 매핑direct mapping으로 주소 변환
      • 연관 매핑associative mapping으로 주소 변환
      • 연관·직접 매핑을 결합한 주소 변환

직접 매핑으로 주소 변환

  • 메모리나 캐시에 완전한 페이지 테이블을 유지
  • 프로세스의 메모리를 구성하는 모든 페이지 항목이 페이지 테이블에 있음
  • 직접 매핑으로 주소를 변환하는 과정

직접 매핑으로 주소를 변환하는 과정

  • 레지스터만 변경해도 페이지 테이블 변경 가능
  • 사용자 메모리 위치에 액세스하는 데 시간 소요(해결하는 방법으로 연관 레지스터 또는 보조예비기억장치라고 하는 특별히 작은 하드웨어 메모리 사용)

연관 매핑으로 주소 변환

  • 논리적 주소를 프로세서의 페이지 번호와 프로세서에 대응하는 프레임 번호가 있는 연관 레지스터의 집합으로 표현
  • 각 레지스터는 키와 값으로 구성. 연관 레지스터에 항목을 추가하면, 동시에 모든 키와 비교하여 해당 항목을 찾아 이에 대응하는 값 출력
  • 매우 빠르게 검색 가능, 하드웨어가 무척 비싸다는 단점
  • 시스템에 모든 프로세스의 페이지 테이블 항목을 저장할 만큼 크기가 충분한 연관 레지스터를 갖추기 곤란
  • 물론 페이지 테이블 기준 레지스터 필요없음
  • 순수 연관 매핑으로 주소를 변환하는 과정

순수 연관 매핑으로 주소를 변환하는 과정

연관·직접 매핑을 결합한 주소 변환

  • 연관·직접 매핑을 혼용하기도 함
  • 최근에 사용한 페이지만 연관 레지스터에 유지하고, 연관 레지스터에 해당 페이지가 없을 때만 직접 매핑하는 방법 제안
  • 프로세스가 메모리의 정보를 균일하게 액세스하는 것이 아니라 많이 참조한 것을 또 참조하는 경향이 있다는 '지역성'을 적절히 활용
  • 페이지 번호를 연관 레지스터에서 발견하는 비율을 적중률이라고 함
  • 유효 접근시간은 ❶과 같다. 메모리 액세스 시간은 26.6% 더 늦어져 750나노초에서 950 나노초로 바뀌며, 적중률이 90%일 때 유효 접근시간은 ❷처럼 계산 가능

유효 접근시간 계산 예

연관·직접 매핑으로 주소를 변환하는 과정

연관 직접 매핑으로 주소를 변환하는 과정


공유 페이지

공유 페이지의 개념

  • 페이징 시스템의 장점인 시분할 환경에서 중요한 공통 코드 공유
  • 페이징 시스템에서는 프로세스를 메모리에 연속적으로 할당할 필요가 없기 때문에 여러 프로세스가 메모리 공유 가능
  • 다른 프로세스는 메모리의 같은 페이지(지역)를 단순히 가리키도록 해야하며, 공유 라이브러리 코드에도 사용 가능
  • 공유 코드는 재진입을 허용하므로 재진입 코드reentrant code 또는 순수 코드pure code라고 함
  • 오직 읽을 수만 있으며 스스로 수정하지는 못함.
  • 프로세스들은 재진입 코드에서 데이터 항목 지정할 수 없으며 수행 도중 변하지 않음(2개 또는 그 이상의 프로세스가 동시에 같은 코드 수행 가능)
  • 스레드가 텍스트와 메모리를 공유하는 방법과 비슷
  • 프로세스에서 논리적 주소 공간의 다른 부분에 나타날 수 있음. 이때 공유 코드는 모든 프로세스에서 논리적 주소 공간의 동일한 위치에 나타나야 함
  • 페이징에서 공유 코드

페이징에서 공유 코드

  • 공유 코드 예

공유 코드 예


페이징에서 보호

페이지 테이블에 보호 비트를 추가하여 페이지 보호

댓글