페이징 ?

프로세스의 주소 공간을 미리 동일한 크기의 페이지 단위로 나누어 물리적 메모리의 서로 다른 위치에 페이지들을 저장하는 방식

 

  • 장점: 메모리에 올리는 단위가 동일한 크기의 페이지 단위여서  빈 프레임이 있으면 어떤 위치이든 사용될 수 있다.

1) 주소 변환 기법

모든 프로세스가 각각의 주소 변환을 위한 페이지 테이블(page table)을 가진다.

논리적 주소를 페이지 번호(p) 와 페이지오프셋(d)로 나누어 주소변환에 사용

기존 주소값에 변위르 더함으로써 요청된 논리적 주소에 대응하는 물리적 수소를 만들 수 있다.

 

2) 페이지 테이블의 구현

주소 변환을 하기 위한 자료구조

물리적 메모리에 위치

  • 페이지 테이블 기준 레지스터 (page-table base register) - 메모리내에서의 페이지 테이블의 시작 위치를 저장
  • 페이지 테이블 \길이 레지스터 (page-table length register) - 페이지 테이블의 크기를 저장
  • 메모리 접근 연산 : (총 2번) 페이지 테이블에 접근 -> 변환된 주소에서 실제 데이터로 접근 
        -> 오버헤드가 뒤따른다.
    • 대안? TLB(translation Look-aside Buffer) 라는 고속의 주소 변환용 하드웨어 캐시 사용
      • 테이블 접근 오버헤드 줄이고 메모리의 접근 속도 향상
      • 가격적인 이유로 빈번하게 참조되는 페이지에대한 주소 변환 정보만 담음
      • 구현 - 병렬탐색이 가능한  연관 레지스터(associative register) 사용
        • 평균적인 메모리 접근 시간 (EAT),
          • EAT  = (1 + ε)α + (2 + ε )( 1- α) = 2 + ε - 2α
          • ε = 레지스터 접근시간, α = 요청된 페이지에 대한 정보가 레지스터에 있을 확률  

3)계층적 페이징

4GB의 메모리가 있다고 하면 대부분의 프로그램은 4GB 중 극히 일부만 사용

이를 위해 페이지 테이블을 위한 메모리 사용은 공간낭비

-> 페이지 테이블에 사용되는 메모리 공간의 낭비를 줄이기 위해 2단계 페이징(two-level paging)기법을 사용

  • 2단계 페이징 기법
    • 방식: 외부 / 내부 페이지 테이블의 두 단계에 걸친 페이지 테이블 사용
      • 사용되지 않는 주소 공간 -> 외부 페이지 테이블을 NULL로 설정, 내부 페이지 테이블을 생성 안함
    • 장점 : 페이지 테이블을 위해사용되는 메모리 공간 감소 -> 공간적인 이득
    • 단점 : 주소변환을 위해 접근해야 하는 테이블 수가 증가 -> 시간적인 손해
  • 위와 같이 다단계(계층적) 페이징은 메모리 공간을 감소를 통해 공간적인 이득을 가질수 있지만, 단계가 늘어날 수록 접근해야하는 테이블수가 증가하므로 시간적 손해가 커진다.

4) 역 페이지 테이블

메모리 공간의 낭비가 심한 이유
=> 모든 프로세스의 모든 페이지에 대해 페이지 테이블 항목을 다 구성해야 하기 때문
=> 논리적 주소에 다 구성

 

역 페이지 테이블은? 

  • 프로세스마다 페이지 테이블을 두지 않고, 시스템 전체(system-wide)에 페이지 테이블을 하나만 생성
  • 물리적 주소에 대해 페이지 테이블을 생성
  • 주소 변환 작업이 물리적 주소로부 논리적 주소를 얻는 구조
    • 비효율적 : 주소 변환 요청이 들어왔을 때 물리적 메모리에 존재하는지 여부를 알기 위해 페이지 전체를 탐색해야함

5) 공유 페이지

공유코드를 담고 있는 페이지 ->  물리적 메모리에 하나만 적재되어 메모리사용이 효율적

공유코드?  여러 프로세스에 의해 공통으로 사용되는 코드

 - 재 진입 가능 코드 (re-enterant code)
-  순수 코드(pure code)

 

특징

  • 그 페이지를 공유하는 모든 프로세스의 주소 공간에서 동일한 페이지번호를 가져야 함
  • 예시 그림

 

6) 메모리 보호

  • 보호비트(protection bit) : 각 페이지에 대한 접근 권한의 내용 저장
    • 누가가 아니가 어떠한 접근을 허용하는지의 정보가 저장
    • 각 페이지에 대하 읽기-쓰기 / 읽기전용 등의 접권권한을 설정하는데 사용
  • 유효-무효 비트 (valid-invalid bit) : 해당 페이지의 유효한지에 대한 내용 저장
    • 유효 : 해당 메모리 프레임에  그 페이지가 존재 -> 접근 허용
    • 무효 : 프로세스가  그 주소 부분을 사용하지 않거나 해당 페이지가 물리적 메모리에 올라와 있지 않음 -> 접근 불가

+ Recent posts