본문 바로가기
운영체제

paging

by kcj3054 2021. 10. 24.
  • 프로세스의 virtual memory를 동일한 사이즈의 page 단위로 나누는 것이다.
  • 가상메모리 내용이 page단위로 , noncontinuous하게 저장된다(불연속적으로)
  • 일부는 backing store에 저장되고, 일부는 물리적 메모리에 저장된다.
  • 기본적인 방법
    • 물리적 메모리를 동일한 크기의 frame으로 나눈다
    • logical memory를 동일 크기의 pagㄷ로 나눈다
    • page table을 사용하여 logical address를 physical address로 변환한다.
    • 내부조각은 발생하되 외부조각은 발생하지않는다. (외부조가은 완전히 사용되지않은 부분이고, 내부조각은 프로세스가 올라갔는데 남아있는 여분의 공간이다)
    • 왜 내부조각은 남아 있을 수 있는가? 그 이유는 프로세스들이 매번 / n으로 나눠지는 것이 아니라서 여분의 공간이 있기때문이다.

cpu에서 p, d부분에서 논리적 부분의 페이지를 page table로 가서찾는다 그리고 해당하는 부분을 물리적 주소로변환을 하고 해당 프로세스가 크기 얼마나 떨어져있는가는 d를 이용해서 알 수 있다, 시작 위치에서 offset이 얼마나되는지 알 수 있는 d는 논리적에서 물리적 주소로 변경이 되어도 변하지않고 d로 유지된다.

page table

  • 페이지 테이블은 main memory에 상주
  • page - table base register(PTBR)가 page table을 가리킨다
  • page - table length register(PTLR)가 크기를 보관
  • 메모리 접근에는 2번의 메모리 접근이 필요하다, page table에 접근 1회, 실제 data접근 1번 그래서 속도를 높이기 위해서 TLB(translation look - aside buffer)라고 불리는 고속의 캐시 사용한다

cf

  •  

page table안의 지금 접근하지 않는 엔트리들을 '현재'는 필요하지 않다, 이것을 한번에 다 잡으면 메모리 공간이 낭비된다

그래서 2단계 페이지 테이블을 사용하면된다. (사용되지 않는 주소 공간에 대한 outer page table의 엔트리 값은 null으로 된다
그렇게 되면 대응하면 inner page table은 없게된다... )

'운영체제' 카테고리의 다른 글

paging, memory  (0) 2022.06.11
자네 thread safe 한가?  (0) 2021.12.02
메모리관리, 가상메모리, 주소바인딩,  (0) 2021.10.24
세마포어, 뮤텍스  (0) 2021.10.21
프로세스 synchronize  (0) 2021.10.21