[운영체제] 19. Memory Management 2

이건회·2022년 3월 22일
0

운영체제

목록 보기
18/27

  • 페이징 기법은 메모리 관리기법 중 하나이다.
  • 프로그램을 구성하는 논리적 메모리를 동일한 페이지로 잘려서 각각이 물리적 메모리 주소의 어느 위치든 올라갈 수 있다.

  • 페이징 기법에서 주소변환을 위해 페이지 테이블이라는 것이 사용된다. 각각의 논리적 페이지들이 물리적 메모리에 어느 페이지 프레임(페이지가 들어갈 공간)에 올라가있는지를 명시한다.

  • CPU가 논리적 주소를 주게 되면, 이를 물리적 메모리상의 주소로 바꾸는데 이때 페이지 테이블을 사용한다. 앞부분(p,f)가 페이지의 번호, 뒷부분(d)이 페이지에서 얼마나 떨어져있는지를 나타낸다.

  • 페이지 테이블은 어디에 있어야 할까. 프로그램마다 별도의 페이지 테이블이 필요해 이를 위해서 많은 용량이 필요하므로, 페이지 테이블은 메인 메모리에 상주한다.
  • 이전의 다이나믹 Relocation에서 필요했던 두 개의 레지스터 역할을 페이지 기법에서는 PTBR(메모리 상의 페이지 테이블이 어디 있는지)과 PTLR(페이지 테이블의 길이가 몇인지)이 수행한다.

  • 결국 메모리의 접근을 위해서 주소변환을 위해 페이지 테이블 접근, 또 실제 데이터를 메모리 접근하기 위해 두 번의 접근이 필요하다. 따라서 비용이 매우 크므로 속도 향상을 위해 별도의 하드웨어를 사용하는데 일종의 캐시 메모리인 TLB를 사용한다.
  • TLB는 페이지 테이블에서 빈번히 참조되는 일부 엔트리 정보를 캐싱한다. 따라서 CPU가 논리적 주소를 주게 되면 메모리 상의 페이지 테이블에 접근하기 전에 TLB를 검색해 TLB의 정보로 주소변환이 가능하면 TLB를 통해 바로 물리적 메모리에 접근하는 주소변환이 이루어진다.

  • TLB는 병렬적인 검색이 가능한 Associative 레지스터를 이용해 구현한다. CPU가 페이지번호를 주면 그 번호가 있는지를 병렬적으로 쭉 TLB에서 검색한다.
  • 페이지 테이블이 프로세스마다 존재하므로 TLB또한 프로세스마다 존재한다. 따라서 TLB는 문맥 교환이 발생할 때 모든 엔트리를 비워야 한다. 프로세스마다 주소변환 정보가 다르기 때문이다.

  • TLB 접근시간은 입실론, 메모리 사이클 시간은 1, TLB로부터 주소변환정보가 찾아지는 비율을 알파라고 하자, 이때 실제 메모리 접근 시간은 위와 같다. 결과적으로 알파가 1에 비해 매우 높고 입실론은 매우 작다.

  • 다음은 2단계 페이지 테이블이다.

  • 다음과 같이 페이지 테이블을 두 단계 거쳐서 주소변환하고 메모리 접근을 하는 테이블이다.
  • 2단계 페이지를 통해 속도를 더 걸리지만, 페이지 테이블을 위한 공간이 줄어든다

  • 현대 컴퓨터는 메모리 주소체계가 매우 크다. 프로그램마다 가지는 가상 메모리의 크기는 주소체계를 몇 비트로 쓰는지에 따라 다르다. 주소체계가 32비트면 표현 가능한 메모리 주소는 2의 32승 바이트(4GB)까지 주소를 매길 수 있다.
  • 페이지 하나가 4킬로바이트일 경우 4기가바이트를 4킬로바이트로 나누면 백만 개의 페이지 테이블이 필요할 정도로 공간 낭비가 심하다. 각 페이지 멘트리가 4바이트면 프로세스당 4M의 페이지 테이블이 생겨 역시 공간 낭비가 심하다. 프로그램이 사용하는 주소공간은 극히 일부분인데도 페이지 테이블 엔트리는 모두 만들어야 한다.

  • 이를 해결하기 위해 2단계 페이지 테이블이 등장했다.

  • 2단계 페이지 테이블은 페이지 테이블의 페이지 번호를 더 세분화한다. 예를 들어 1단계 페이지 테이블이 "서울" 이면 2단계 페이지 페이블은 1 서울 2 장충동 이런 방식으로 더 구체적으로 명시한 후, 기존에 페이지로부터 떨어진 거리를 나타낸 offset과 함께 테이블을 구성한다.

  • 2단계 페이지 테이블에서의 주소변환은 다음과 같이 바깥쪽 페이지 테이블의 주소를 찾고, 바깥쪽 페이지 테이블이 안쪽 페이지 테이블의 주소를 가리켜 그곳으로 찾아가면 물리적인 페이지 프레임 번호를 얻게 된다. 얻은 페이지 프레임 번호에서 d만큼 떨어진 위치에서 원하는 정보를 찾을 수 있다.

  • 안쪽 페이지 테이블의 크기는 페이지의 크기와 같다. 테이블 자체가 페이지화 된 것이다.

  • 페이지의 사이즈가 32비트=4K byte일 경우.

  • 페이지의 번호는 32비트 중 20비트, 페이지 오프셋은 12비트로 구성된다.

  • 안쪽 페이지번호와 바깥쪽 페이지번호는 20비트중 10비트씩 나눠 가진다.

  • 2단계 페이지를 사용하는 이유는 공간을 줄이기 위해서다. 2단계 페이지를 쓰면 바깥쪽 테이블이 하나 더 만들어지지만, 안쪽 테이블이 사용되지 않는 주소 공간에 대한 정보를 만들지 않아 NULL이므로 공간을 아낄 수 있다.

profile
하마드

0개의 댓글