인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

rudnftjdan님의 프로필 이미지

작성한 질문수

CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조

가상메모리, 페이지테이블, 페이지폴트, 스레싱 ★★★

Page Fault 오류

해결된 질문

작성

·

31

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

Page Fault 과정
1. 어떤 명령어가 유효한 가상주소에 접근했으나 해당 페이지가 만약 없다면 트랩이

발생되어 운영체제에 알리게 됩니다.

2. 운영체제는 실제 디스크로부터 사용하지 않은 프레임을 찾습니다.

3. 해당 프레임을 실제 메모리에 가져와서 페이지교체알고리즘을 기반으로 특정페이지와

교체합니다. (이 때 스와핑이 일어납니다.)

4. 페이지테이블을 갱신시킨 후 해당 명령어를 다시 시작합니다.

이렇게 되어있는데 2번에서 OS가 Disk에서 빈 frame을 찾는게 아니라 Memory를 보고 빈 Frame이 있으면 Disk에 필요한 Frame을 가져오고 빈 Frame이 없으면 Page 교체 알고리즘을 통해 스와핑하는것 아닌가요?

답변 2

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 성무님 ㅎㅎ

2번에서 OS가 Disk에서 빈 frame을 찾는게 아니라 Memory를 보고 빈 Frame이 있으면 Disk에 필요한 Frame을 가져오고 빈 Frame이 없으면 Page 교체 알고리즘을 통해 스와핑하는것 아닌가요?

->네 맞습니다. 제 강의를 보면

해당부분은 페이지교체알고리즘이 무조건 일어난다는 식으로 되어있는데 이는 스왑아웃이 일어날때만 일어나야 합니다.

수정된 설명은 다음과 같습니다.

 

페이지 폴트

페이지 폴트는 프로세스가 참조하려는 주소가 가리키는 페이지가 현재 물리 메모리(RAM)에 없을 때 발생하는 현상입니다.

이 때 다음과 같은 과정이 일어납니다.

1. 페이지폴트 이후 OS에게 트랩을 전송합니다. OS는 먼저 페이지 폴트가 유효한 접근인지 점검합니다. 만약 비정상적인 접근이라면 프로세스를 강제 종료할 수 있습니다.

2. OS는 물리 메모리에서 빈 프레임이 있는지 확인하고 다음의 과정이 일어납니다.

1) 빈 프레임이 있을 경우:

디스크에서 필요한 페이지를 바로 메모리로 가져와 적재합니다(Swap-in).

이때 기존 페이지를 내보내는 작업(Swap-out)은 없습니다.

2) 빈 프레임이 없을 경우:

페이지 교체 알고리즘(Page Replacement Algorithm)을 수행하여 기존의 한 페이지를 선택합니다.

선택된 페이지를 디스크로 내보냅니다. (Swap-out),

빈 프레임을 확보한 뒤 필요한 페이지를 디스크에서 메모리로 가져옵니다(Swap-in).

 

이 때 디스크 I/O 작업은 CPU 처리 속도에 비해 매우 느리므로, 페이지 폴트가 자주 발생할수록 CPU는 작업을 하지 못하고 대기 시간이 증가하여 CPU 이용률이 저하됩니다.

- 메모리 접근 시간: 수백 나노초(ns) 수준

- 디스크 접근 시간: 수 밀리초(ms) 수준(수백만 나노초)

 

해당부분에 대한 설명을 최대한 빠르게 수정하도록 하겠습니다.

 

틀린부분을 말씀해주셔서

정말 감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 이성무님께서 질문하신 페이지 폴트 과정에 대한 내용을 명확히 해드리겠습니다.

페이지 폴트는 운영체제가 메모리를 효율적으로 관리하기 위한 과정 중 하나입니다. 질문해주신 2번 단계에 관하여 설명드리면:

  1. 페이지 폴트 발생 시: 프로세스가 특정 페이지에 접근하려 할 때 해당 페이지가 메모리에 없는 경우, 페이지 폴트가 발생합니다. 이는 운영체제가 디스크에서 해당 페이지를 메모리로 가져와야 함을 의미합니다.

  2. 빈 프레임 확인: 운영체제는 먼저 빈 프레임이 있는지를 메모리에서 확인합니다. 만약 빈 프레임이 있다면, 이 프레임에 디스크에서 필요한 페이지를 로드합니다.

  3. 빈 프레임이 없음: 메모리에 빈 프레임이 없다면, 페이지 교체 알고리즘을 통해 어떤 페이지를 내보낼지 결정합니다. 교체된 페이지는 스와핑을 통해 디스크로 이동하고, 이 자리에 새로운 페이지를 로드합니다.

간단히 말해서, 운영체제는 첫 번째로 메모리에서 빈 프레임을 찾고, 없을 경우 페이지 교체를 통해 디스크로부터 필요한 페이지를 메모리로 가져옵니다. 이 과정이 질문에서 말씀하신 방식과 일치한다고 볼 수 있습니다. 스와핑 과정도 페이지 교체의 한 과정으로 포함됩니다.

아래와 같은 기존 질문 및 답변도 도움이 될 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.