Conversation
102092
reviewed
Nov 29, 2021
| * 가상 메모리는 물리 메모리의 용량 한계를 극복하려는 목적을 지니고 있다. | ||
| * 예를 들어, 물리 메모리가 100MB인데 200MB의 소프트웨어를 구동하고자 하는 것이다. | ||
| * **당장 필요한 부분만** 메모리에 적재시켜 구동하는 방식을 이용한다. | ||
| * 기본적으로 가상 메모리의 용량은 무제한이지만, 실질적으로는 물리 메모리의 용량에 국한된다. 가상 메모리의 용량은 **물리 메모리 + 스왑영역**이다. |
| * 한 편으로, 이미 backing store로 page-out이 된 페이지를 **victim page**이라고 한다. | ||
|
|
||
| ## Victim Page | ||
|  |
Contributor
Author
There was a problem hiding this comment.
아뇨 레퍼런스에서 가져왔어요
Comment on lines
+8
to
+17
| ## Demanding Paging | ||
|  | ||
| * 페이징이란 **논리 메모리 == 가상 주소**를 fixed-size로 분할하는 것을 의미하고, 프레임이란 **물리 메모리**를 fixed-size로 분할하는 것을 의미한다. [참고](https://jhnyang.tistory.com/290) | ||
| * 페이징 기법은 **고정 분할 방식**을 이용하는데, 물리 주소 공간을 **같은 크기** 로 분할하는 것을 의미한다. | ||
| * 페이지와 프레임은 서로 크기가 같으므로, 1:1 매핑이 가능하다. 매핑 내역은 Page Table에 기록된다. | ||
| * 현재 프로세스 실행에 요구되는 페이지만 메모리에 올리는 것을 **Demanding Paging**이라고 한다. | ||
| * Page Table에는 Valid bit이 추가되어, 해당 페이지-프레임의 메모리 상 존재 여부를 나타낸다. 만약 현재 페이지가 메모리에 적재되어 있다면 1을, 적재되어 있지 않다면 0을 나타낸다. | ||
| * 현재 페이지 2번이 메모리에 적재되어 있지 않고, Valid bit도 0으로 표시되어 있다. 페이지 2번을 메모리에 적재시키는 과정을 한 번 살펴보도록 하자. | ||
|  | ||
| * CPU에서 P1의 2번째 페이지에 접근하는데 valid bit값이 0이다. 그러면 CPU에 인터럽트 신호를 발생시켜서 OS 내부의 ISR로 점프한 후, 디스크 내부에 있는 프로세스 P1에 있는 2번째 페이지를 메모리에 할당하는 작업을 수행한다. **-> 과정 더 알아보기** |
Contributor
There was a problem hiding this comment.
Q1) 이 부분에 MMU를 통해서 주소가 한번 변환되기도 하는 듯 싶어요. 저는 조금 헷갈리는 내용이라 한번 같이 정리해보면 좋을 것 같아요.
참고
Contributor
Author
Comment on lines
+61
to
+63
| * 페이지 부재의 확률은 극히 낮다. 지역성의 원리(Locality of reference)에 의하기 때문이다. 지역성의 원리는 시간적 지역성, 공간적 지역성이 있다. | ||
| * **시간적 지역성**: CPU는 어느 메모리 공간을 읽은 후, 시간이 지나도 그 공간을 다시 읽을 확률이 매우 높다는 것을 의미한다. | ||
| * **공간적 지역성**: CPU는 어느 메모리 공간을 읽을 때, 인접한 범위 내에서 읽는다는 것을 의미한다. 특히, 절차적 프로그래밍으로 구현되어 있을 경우 순서대로 읽는 경우가 빈번하다. |
Contributor
There was a problem hiding this comment.
Q2) 페이지 부재확률이 왜 지극히 낮은 지에 대해 조금 더 알려주실 수 있나요?
저는 자주 실행되는 정보는 같이 올라올 확률이 높아서..? 이런 느낌으로 이해했어요.
Contributor
Author
There was a problem hiding this comment.
어짜피 메모리 공간을 읽을 때 인접 범위 내에서 읽을 가능성이 크기 때문입니다. 말 그대로 local reference라서 그렇다고 해요.
그리고 특정 메모리 공간이 자주 읽히기 때문에 미리 메모리 테이블에 올려두니 page fault가 일어나기 쉽지 않다라는 것 같아요.
저도 정확하게 어떠한 원리에 의해서 도출되는지는 잘 모르겠어요. 이것까지 공부해야 하나 싶기는 해요.
102092
approved these changes
Dec 7, 2021
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

학습 내용
특징