Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

415쪽 수정 비트 0일 경우에 대한 동작 관련 #86

Closed
koir1100 opened this issue Feb 12, 2024 · 5 comments
Closed

415쪽 수정 비트 0일 경우에 대한 동작 관련 #86

koir1100 opened this issue Feb 12, 2024 · 5 comments

Comments

@koir1100
Copy link

안녕하세요 저자님! 설 명절 잘 보내셨습니까?
14장 공부 하는 가운데 제목과 같은 질문이 있어 글 남깁니다.

38강 강의(28분 41초) 에서

수정 비트가 0이라면 한 번도 변경된 적이 없으니까
굳이 보조기억장치에다가 덮어쓰기 작업을 할 필요가 없을 것이고,

라 설명해 주셨습니다.

교재 415쪽에는 다음 내용으로 기술되어 있습니다.

이렇게 한 번도 수정된 적이 없는 페이지가 스왑 아웃될 경우
아무런 추가 작업 없이 새로 적재된 페이지로 덮어쓰기만 하면 됩니다.
어차피 똑같은 페이지가 보조기억장치에 저장되어 있으니까요.

스왑 인 할 때는 메모리 위치가 달라질 수 있다는 점은 알고 있으나,
스왑 아웃 할 때 페이지 위치가 달라지는 부분은 잘 이해가 되지 않아서요.

제가 이해하기로는,
"새로 적재된 페이지"에 덮어쓴다는 표현이 페이지가 달라져서
(보조기억장치 내 기존 페이지가 같은 내용이라 하더라도)
메모리에 있는 내용을 그대로 가져와서 새로 덮어쓴다는 의미로 생각됩니다.

혹시 415쪽에 기술된 문장이 제가 생각한 내용이 맞는 것인지,
아니면 다른 의미로 기술해주셨는지 설명 부탁드려도 될까요?
헷갈리는 점이 있어서 이해하는데 보다 도움 되리라 생각됩니다.

답변 부탁드리겠습니다.
새해 복 많이 받으세요~ 감사합니다!!

@kangtegong
Copy link
Owner

안녕하세요
네 맞습니다

메모리에 적재된 페이지에 어떤 값을 쓴다면
메모리에 적재된 페이지는 보조기억장치의 페이지와 달라지겠죠

그럼 스왑아웃할 때 달라진 내용을 보조기억장치에도 반영해야 할 것입니다
그래서 보조기억장치에 쓰기 작업을 해야 하는 것입니다.

새해복 많이 받으세요
감사합니다

@koir1100
Copy link
Author

koir1100 commented Feb 14, 2024

네 저자님! 답변 감사합니다.

그렇다면 수정 비트가 0일 때, 강의에서 언급하신 덮어쓰기 작업을 할 필요가 없다는 점과
책에서 언급하신 새로 적재된 페이지로 덮어쓴다는 표현은 모두 맞는 표현이라 생각하면 될까요?

다시 말해, 수정 비트가 0일 때, 스왑 아웃 할 경우, 이러한 두 작업을 택하여 수행할 수 있다고 이해하면 될까요?

ChatGPT에 관련 내용을 물어보니 운영체제는 여러 요소를 고려해서
기존 보조기억장치의 페이지에 대한 덮어쓰기 작업을 하지 않거나
아예 새로 페이지에 메모리 내용을 가져와 덮어쓰는 작업 중
어느 것이 더 합리적인지를 판단해서 결정한다고 답을 해주긴 했었습니다.

The decision of whether to use the old page or allocate a new page when swapping depends on the operating system's memory management policies and algorithms. These policies are designed to optimize memory usage and system performance based on factors such as the availability of free memory, the current system load, and the characteristics of the processes being executed.

If the content of the page hasn't changed (indicated by a dirty bit of zero), it's often more efficient to reuse the existing memory space for the incoming page. However, in some cases, the operating system may choose to allocate a new page due to other considerations such as fragmentation avoidance or process prioritization. Ultimately, the decision is made by the operating system's memory management subsystem to best serve the needs of the system and the running processes.

아무쪼록 혼공학습단 11기 참여하는 동안 저자님 도움주셔서 잘 마무리 할 수 있었습니다.
답변 미리 감사합니다! 고맙습니다!

@kangtegong
Copy link
Owner

음 혹시나 해서 첨언드리자면,
덮어쓰기는 메모리와 보조기억장치 모두에서 일어납니다.

아래 책 속 표현은 새로운 페이지를 '메모리'에 덮어쓴다는 것입니다.

 한 번도 수정된 적이 없는 페이지가 스왑 아웃될 경우
아무런 추가 작업 없이 새로 적재된 페이지로 덮어쓰기만 하면 됩니다.

강의에서 말한
" 덮어쓰기 작업을 할 필요가 없다는 점"은 보조기억장치에 덮어쓸 필요가 없다는 뜻입니다.

물론 운영체제마다 조금씩 차이가 있을 수는 있으나
기본적으로 수정 비트가 0이든 1이든 메모리에 덮어쓰기 작업이 발생합니다.
다만 페이지가 수정되지 않았다면 보조기억장치에서의 덮어쓰기는 필요하지 않습니다.

@koir1100
Copy link
Author

아~ 그렇군요. 저자님 말씀을 토대로 정리하면

수정 비트와 상관없이 메모리에서는 페이지에 대한 덮어쓰기 작업은 수행하고,
수정 비트가 0일 때 스왑 아웃할 경우, 메모리에 해당 페이지 내용이 이미 스왑 영역에 있으니 쓰지 않고,
수정 비트가 1일 때 스왑 아웃할 경우, 메모리의 페이지 내용과 스왑 영역의 페이지 내용이 서로 다르므로
이 때 스왑 영역에 해당 페이지 내용을 쓰게 되겠네요.

추가로, 메모리에 해당 페이지를 적재할 필요가 없을 때 스왑 아웃을 하니까,
그 때 메모리의 해당 페이지는 "빈 페이지"로 덮어쓴 다음(다른 페이지가 쓸 수 있기에),
페이지 테이블에는 유효 비트를 0으로 만든다.

그리고 나중에 해당 페이지로 스왑 인 할 때, 즉 페이지가 메모리에 적재되어 실행을 필요로 할 때,
스왑 영역로부터 가져와서 새로운 페이지로 덮어쓴다고 이해하면 정리가 될까요?

책에 설명이 다 되어 있을텐데, 제가 잘 이해되지 않아 여러 번 질문 드리네요ㅠㅠ
감사합니다!!

@kangtegong
Copy link
Owner

kangtegong commented Feb 19, 2024

넵~! 그렇게 이해하시면 되겠습니다

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants