관리 메뉴

클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

가상 메모리 3 - 페이징을 통한 가상 메모리 관리 2 : 페이징에서의 주소 변환 및 페이지 테이블 엔트리 본문

알고리즘 및 자료 관리/컴퓨터 구조 & 운영체제

가상 메모리 3 - 페이징을 통한 가상 메모리 관리 2 : 페이징에서의 주소 변환 및 페이지 테이블 엔트리

huenuri 2024. 10. 18. 13:12

이어서 페이징 기법을 학습해볼 것이다. 4교시가 얼마 남지 않았으니 이 단원 학습을 빨리 마치고 싶다.


 

 

 

페이징에서의 주소 변환

 

 

페이지 번호는 접근하고자 하는 페이지 번호이다. 페이지 테이블에서 해당 페이지 번호를 찾으면 페이지가 어떤 프레임에 할당되었는지 알 수 있다. 변위는 접근하려는 주소가 프레임의 시작 번지로부터 얼만큼 떨어져 있는지를 알기 위한 정보이다. 

 

논리 주소의 변위와 물리 주소의 변위 값은 같다.

 

 

 

 

가령 CPU와 페이지 테이블, 메모리 상태가 현재 아래와 같다고 해보자. 하나의 페이지/프레임이 네 개의 주소로 구성되어 있는 간단한 상황을 가정했다.

CPU가 접근하게 될 물리 주소는 어디일까? 5번 페이지는 현재 1번 프레임에 있다. 그렇다면 CPU는 1번 프레임, 변위 2에 접근하게 된다. 1번 프레임은 8번지부터 시작하니 CPU는 10번지에 접근하게 된다.


 

 

 

 

페이지 테이블 엔트리

 

 

일반적으로 프로세스를 이루는 모든 페이지가 메모리에 있지 않다. 일부 페이지는 보조기억장치(스왑 영역)에 있는 경우가 많다. 유효 비트는 현재 페이지가 메모리에 적재되어 있는지 아니면 보조기억장치에 있는지를 알려주는 비트이다.

즉, 페이지가 메모리에 적재되어 있다면 유효 비트가 1, 페이지가 메모리에 적재되어 있지 않다면 유효 비트가 0이 된다.

 

 

 

 

 

해당 페이지가 읽고 쓰기가 가능한 페이지인지, 혹은 읽기만 가능한 페이지인지를 나타낼 수 있다. 가령 비트가 0일 경우 이 페이지는 읽기만 가능한 페이지임을 나타내고, 1일 경우 읽고 쓰기가 모두 가능한 페이지임을 나타낸다.

보호 비트는 세 개의 비트로 조금 더 복잡하게 구현할 수 있다. 읽기(Read)를 나타내는 r, 쓰기(Write)를 나타내는 w, 실행(eXecute)을 나타내는 x의 조합으로 읽기, 쓰기, 실행하기 권한의 조합을 나타낸다.

가령 보호 비트가 100으로 설정된 페이지의 경우 r은 1, w와 x는 0이므로 이 페이지는 읽기만 가능하다.

 

 

 

적재 이후 CPU가 읽거나 쓴 페이지는 참조 비트가 1로 세팅되고, 적재 이후 한 번도 읽거나 쓴 적이 없는 페이지는 0으로 유지된다.

 

 

 

 

데티 비트라고도 부른다. 이 비트가 1이면 변경된 적이 있는 페이지, 0이면 변경된 적이 없는 페이지(한 번도 접근한 적 없거나 읽기만 했던 페이지)임을 나타낸다.

 

 

 

메모리가 메모리에서 사라질 때 보조기억장치에 쓰기 작업을 해야 하는지, 할 필요가 없는지를 판단하기 위해 존재한다. CPU는 메모리를 읽기도 하지만 메모리에 값을 쓰기도 한다. CPU가 한 번도 접근하지 않았거나 읽기만 한 페이지의 경우 보조기억장치에 저장된 해당 페이지의 내용과 메모리에 저장된 페이지 내용은 이 그림과 같이 서로 같은 값을 가지고 있다. 이렇게 한 번도 수정된 적이 없는 페이지가 스왑 아웃될 경우 아무런 추가 작업 없이 새로 적재된 페이지로 덮어쓰기만 하면 된다.

 

어차피 똑같은 페이지가 보조기억장치에 저장되어 있기 때문이다. 하지만 CPU가 쓰기 작업을 수행한 페이지(수정 비트가 1인 페이지)의 경우 보조기억장치에 저장된 페이지의 내용과 메모리에 저장된 페이지의 내용은 서로 다른 값을 갖게 된다.

 

 

 

이 작업이 필요한 페이지인지 아닌지를 판단하기 위해 페이지 테이블 엔트리에 수정 비트를 두는 것이다.

 

실제 페이지 테이블 엔트리에는 이외에도 다양한 정보가 있다. 페이지 테이블에 무엇이 저장되는지만 알아도 실제로 CPU가 메모리를 어떻게 접근하며 가상 메모리를 어떻게 다루는지 알 수 있다.

 

페이지 테이블 추가 학습

 

self-learning-cs/page_table/64-ia-32-architectures-software-developer-vol-3a-part-1-manual-p129.pdf at main · kangtegong/self-l

『혼자 공부하는 컴퓨터구조 & 운영체제』 (한빛미디어) 심화자료. Contribute to kangtegong/self-learning-cs development by creating an account on GitHub.

github.com

 


 

 

 

 

단원 마무리하기

 

 

TLB 히트의 경우 메모리 접근을 한 번으로 줄일 수 있다. PTBR는 각 프로세스의 페이지 테이블이 적재된 주소를 가라킨다.

 

 


 

 

 

학습을 마치고

페이징 테이블 관련한 내용은 중요한 것 같아서 꼼꼼이 학습해보았다. 강의를 들을 때는 무슨 말인지 거의 이해하지 못했는데 책을 보면서 많은 부분 이해가 되었다. 마지막 장에 좀 더 알아보기 등의 참고 내용은 생략하고 기록하지 않았다. 내용이 많이 어려워 지금은 공부한다고 해도 별로 도움이 될 것 같지 않았다.

그래도 아침 시간에 정말 열심히 공부하며 14장을 거의 마쳤다.