2012-06-26 1 views
4

가상 메모리 환경에서 실행중인 프로세스에 할당해야하는 최소 페이지 프레임 수를 결정합니다.최소 페이지 프레임

위 질문에 대한 대답이 instruction set architecture인데 그 이유를 이해하지 못했습니다.

설명 해주십시오.

편집 : 문제는 다음 링크를 http://www.geeksforgeeks.org/archives/4036 (질문 3 참조)에 , 난 대답 뒤에 논리를 이해할 수 아니에요.

+0

페이지 경계를 교차 할 수있다 지적 할 ... 진짜 답이 없다 그 질문. 최소값은 바이너리 메모리 풋 프린트와 스택 공간을 저장할 크기입니다. 프로그램이 힙을 사용한다면 좀 더 필요합니다. 페이지는 일반적으로 4096 바이트이므로 포함 할 모든 것을 나누고 4096으로 나누면 근사값을 얻을 수 있습니다. 명령어 세트 아키텍처와 관련이 있는지 모르겠 음 ... – origamicoder

+0

다음 링크에서 http://www.geeksforgeeks.org/archives/4036 세 번째 질문을 참조하십시오. 나는 대답 뒤에있는 논리를 이해할 수 없다. –

+0

그 질문에 심각한 문제가 있습니다. 그는 페이지 프레임에 관해 전혀 말하지 않는 것 같습니다.내가 생각할 수있는 것은 TLB의 각 엔트리에 필요한 바이트 수 또는 그와 비슷한 것입니다. 제 제안은 그것을 잊어 버리는 것입니다. – origamicoder

답변

12

예 ISA가 역할을 수행합니다.
ISA가 3 단계의 간접 지정 (x86의 간접 주소 지정 모드를 호출) 후에 피연산자를 취할 수있는 명령 (예 : x86의 mov와 같은)을 지원한다고 가정하면이 가상의 조건을 가정하십시오. 이 시스템을 A라고 부르 자.
다른 시스템에서는 간접 지정을 최대 2 단계까지 호출 할 수 있습니다.

최소 프레임 수를 4로 지정하면 A와 B가 어떻게되는지 확인합니다. B가 정상적으로 실행되지 않습니다. 여기에 이유가 있습니다.
피연산자에 3 단계의 간접 참조가있는 명령이 CPU에로드되어 실행될 때이 프로세스에 대해 4 개의 프레임 만 사용한다는 것을 기억하십시오.
프레임 1 지시 그 자체 일 수 있습니다.
프레임 2는 첫 번째 레벨의 간접 참조 용이며 피연산자는 다른 페이지에 있습니다.
프레임 3은 두 번째 레벨의 간접 참조 용으로 사용됩니다. 이전에 할당 된 프레임의 주소 범위에 없었을 수도 있습니다.
프레임 4 다음 수준의 간접 참조에서도 마찬가지입니다.
피연산자 가져 오기가 완료된 후에 만 ​​다음 실행 단계로 이동할 수 있지만 마지막 피연산자는 없으므로 프레임 4의 주소 만 가지고 있습니다. 이제 페이지 오류가 발생합니다 , 이전에 할당 된 프레임 중 하나를 제거하여 오류를 일으킨 명령을 처리하고 다시 시작하지만 동일한 문제가 발생합니다. 시스템 B에는이 문제가 없습니다.

내가 아는 바로는 ISA가 프로세스의 최소 프레임 수를 결정하는 역할을하는 방식입니다. galvin을 참조하십시오. 저는이 책이 가상 메모리 섹션에서 이것을 다루고 있다고 생각합니다.
그러나 이것은 이론적으로, 프로세스가 리눅스와 같은 실제 시스템에 어떤 방식으로 있는지 알지 못합니다.

건배 :)

편집 : - 링크에 주어진대로 명령이 완전히 당신이 무엇에 관해 얘기하는지 운영 체제에 따라 다릅니다