본문 바로가기

CS/[OS]Operating System(OS 운영체제)

[OS]Demand Paging

우리는 왜 virtual memory 가상메모리를 사용해야 하는 것인가?

 

우리가 program을 실행할 때는 program 전체가 동시에 필요하지 않다. 만약에 program을 실행할 때 main memory에 program의 모두를 올리게 되면 문제점이 main memory 보다 사이즈가 큰 프로그램을 돌려야 한다고 했을 때 돌리지 못한다.

 

결국 main memory에 프로그램 전부를 올리는 것이 아닌 일부만 올려놓는 방법을 사용하는데 이렇게 발전된 것이 바로 virtual memory인 것이다.

physical memory에 분리하여 user logical memory의 개념으로 사용하게 됨으로서 physical memory의 크기에 상관 없이 program을 작성할 수 있게 되었다.

 

정리하자면 프로그램을 실행할 때 필요한 부분만 메모리에 올려놓는다는 것이 가상 메모리의 시작인 것인데 이러한 기법을 demand paging이라고 한다. (필요할때 paging(loading) 하는 기법)

 

장점은 다음과 같다.

1.Less I/O and less memory needed.

2.Faster response.

3.Accommodate more users.

 

이러한 demand paging에 중요한 역할을 하는 것이 있는데 바로 swap space이다.

swap space는 disk의 일부분을 사용하면서 memory에 page를 보내고 받아오는 역할을 하는 공간이다.

OS가 관리하며 page-sized unit으로 구성되어 있다.

 

다음과 같이 살펴볼 수가 있고 어떻게 생각해보면 memory의 extension처럼 생각할 수 있다.

 

이렇게 되면 어떤 페이지는 memory에 어떤 페이지는 disk에 있을 텐데 이것을 구분할 수 있는 HW적인 support 가 필요하게 된다.

이를 구분하는 것은 present bit을 이용하여 구분한다.

메모리에 있는 page 이면 1, disk에 있는 page 이면 0을 나타낸다.

 

 

 

 

 

'CS > [OS]Operating System(OS 운영체제)' 카테고리의 다른 글

[OS]Inverted Page Table  (0) 2022.12.04
[OS] multi-level page tables (2)  (0) 2022.12.04
[OS]Multi-level Page Tables (1)  (0) 2022.12.04
[OS] Paging : Smaller Tables  (0) 2022.12.04
[OS] TLBs : Faster Translations-Issues  (0) 2022.11.29