- 프로세스의 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 |