Skip to content

운영체제 14주#72

Merged
102092 merged 2 commits intomainfrom
sigrid
Dec 8, 2021
Merged

운영체제 14주#72
102092 merged 2 commits intomainfrom
sigrid

Conversation

@sigridjineth
Copy link
Copy Markdown
Contributor

@sigridjineth sigridjineth commented Nov 27, 2021

학습 내용

  • 가상 메모리
  • 메모리 계층 구조

특징

  • 가상 메모리에서 세그멘테이션 기법을 더 공부하자 (다음 주에 추가할 예정)
  • 시간이 많이 없었어요 ㅠ.ㅠ

* 가상 메모리는 물리 메모리의 용량 한계를 극복하려는 목적을 지니고 있다.
* 예를 들어, 물리 메모리가 100MB인데 200MB의 소프트웨어를 구동하고자 하는 것이다.
* **당장 필요한 부분만** 메모리에 적재시켜 구동하는 방식을 이용한다.
* 기본적으로 가상 메모리의 용량은 무제한이지만, 실질적으로는 물리 메모리의 용량에 국한된다. 가상 메모리의 용량은 **물리 메모리 + 스왑영역**이다.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

* 한 편으로, 이미 backing store로 page-out이 된 페이지를 **victim page**이라고 한다.

## Victim Page
![](https://i.imgur.com/vJme440.png)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

직접 필기하신건가요..?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아뇨 레퍼런스에서 가져왔어요

Comment on lines +8 to +17
## Demanding Paging
![](https://i.imgur.com/ezgs1jj.png)
* 페이징이란 **논리 메모리 == 가상 주소**를 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번을 메모리에 적재시키는 과정을 한 번 살펴보도록 하자.
![](https://i.imgur.com/aGcbk30.png)
* CPU에서 P1의 2번째 페이지에 접근하는데 valid bit값이 0이다. 그러면 CPU에 인터럽트 신호를 발생시켜서 OS 내부의 ISR로 점프한 후, 디스크 내부에 있는 프로세스 P1에 있는 2번째 페이지를 메모리에 할당하는 작업을 수행한다. **-> 과정 더 알아보기**
Copy link
Copy Markdown
Contributor

@102092 102092 Nov 29, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Q1) 이 부분에 MMU를 통해서 주소가 한번 변환되기도 하는 듯 싶어요. 저는 조금 헷갈리는 내용이라 한번 같이 정리해보면 좋을 것 같아요.

참고

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아 이거 제대로 이해하고 싶은데요. 쉽진 않네요.
이글루스 블로그에 상세히 설명되어 있으니 참고하면 좋겠습니다.
image

Comment on lines +61 to +63
* 페이지 부재의 확률은 극히 낮다. 지역성의 원리(Locality of reference)에 의하기 때문이다. 지역성의 원리는 시간적 지역성, 공간적 지역성이 있다.
* **시간적 지역성**: CPU는 어느 메모리 공간을 읽은 후, 시간이 지나도 그 공간을 다시 읽을 확률이 매우 높다는 것을 의미한다.
* **공간적 지역성**: CPU는 어느 메모리 공간을 읽을 때, 인접한 범위 내에서 읽는다는 것을 의미한다. 특히, 절차적 프로그래밍으로 구현되어 있을 경우 순서대로 읽는 경우가 빈번하다.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Q2) 페이지 부재확률이 왜 지극히 낮은 지에 대해 조금 더 알려주실 수 있나요?

저는 자주 실행되는 정보는 같이 올라올 확률이 높아서..? 이런 느낌으로 이해했어요.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

어짜피 메모리 공간을 읽을 때 인접 범위 내에서 읽을 가능성이 크기 때문입니다. 말 그대로 local reference라서 그렇다고 해요.
그리고 특정 메모리 공간이 자주 읽히기 때문에 미리 메모리 테이블에 올려두니 page fault가 일어나기 쉽지 않다라는 것 같아요.
저도 정확하게 어떠한 원리에 의해서 도출되는지는 잘 모르겠어요. 이것까지 공부해야 하나 싶기는 해요.

@102092 102092 self-requested a review December 7, 2021 11:07
@102092 102092 merged commit 5b86c71 into main Dec 8, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants