2013-01-01 4 views
3

질문이 있는데 잘 모르겠습니다. 누군가 도와 주면 감사하겠습니다. 질문은 다음과 같습니다 :페이지 교체 알고리즘

프로그램에 대한 다음 요청 순서는 10, 11, 104, 170, 73, 309, 185, 245, 246, 434, 458, 364 ((즉, 메모리에 하나의 프로그램이 460 바이트 길이이고 텍스트 내의 바이트를 참조하고 10은 프로그램의 10 번째 바이트를 참조하며 10은 상대 주소입니다.) 주 메모리는 총 이 프로그램에 대해 200 바이트 페이지 폴트를 초래하는 요청과 FIFO (선입 선출)를 사용하는 페이지 폴트 수 및 50 바이트의 페이지 크기에 대한 최적 페이지 교체 알고리즘을 나타냅니다.

여기에 있습니다 내가 생각했던 것. 첫째, 메모리에 아무 것도 없으므로, 첫 번째 요청 (10)은 페이지 폴트를 일으킨다. 그리고 바이트 10에서 60까지가 lo 인 경우 페이지 크기가 50 바이트이기 때문에 메모리에 저장됩니다. 두 번째 요청이 오면 (11) 이미 메모리에 있기 때문에 페이지 오류가 아닙니다. 그러면 104가 페이지 폴트를 일으키고 104-154 사이의 바이트가 메모리에로드됩니다. 170 또한 페이지 오류를 일으키고 170-220은 메모리에로드됩니다. 내 논리는 사실입니까?

미리 감사드립니다.

+0

페이지가 50 바이트 경계에 정렬되어야하는지 여부에 따라 달라질 수 있습니다 ... –

+0

또한 미리보기/명령 프리 페치가 있으므로 실제 실행과 병렬로 프리 페치가 발생할 수 있습니다. (그래서 (조건부 점프가 너무 비싸다) – wildplasser

답변

0

아니요. 세 번째 요청은 바이너리가 가상으로 50 바이트 청크로 나뉘어져 있고 104 바이트가 세 번째 청크에 속하기 때문에 바이트 100-149가 메모리에로드되게합니다.

실제 메모리는 4 페이지 만 저장할 수 있다고 생각해야합니다. 특정 시점에서 페이지를 삭제하고로드 될 때 페이지 폴트를 다시 트리거해야 할 수 있습니다.

+3

eyvallah sedat abi –