LRU 페이지 교체를 시뮬레이션하는 함수를 작성하려고합니다. 나는 LRU를 꽤 잘 이해하지만 그것을 코딩하는 데 문제가있다. 다음과 같은 것들이 LRU 함수로 전달됩니다. 사용자는 크기 20의 refString이라는 배열에 저장된 # 1-9의 20 문자 참조 문자열을 지정합니다. 사용자가 입력하는 프레임 수 (1-7)는 변수 numFrames에 저장됩니다. 마지막으로, frame이라는 크기의 배열이 전달됩니다.LRU 페이지 교체 알고리즘 C#
여기에있는 코드가 있으며 가까운 번호를 얻고 있습니다. 어쩌면 누군가가 도와 줄 수 있습니다! 여기
if (top < numFrames)
{
frame[top++] = refString[i];
fault++;
}
당신은 결코 현재 refString [내가] 프레임에 이미있는 경우 오류를 얻을 [] 때문에이 경우에 당신이 donot 확인하지 않고해야 - :
private static void LRU(int numFrames, int[] refString, int[] frame)
{
int i, j = 0, k, m, flag = 0, count = 0, top = 0;
for (i = 0; i < 20; i++)
{
for (k = 0; k < numFrames; k++)
{
if (frame[k] == refString[i])
{
flag = 1;
break;
}
}
if (j != numFrames && flag != 1)
{
frame[top] = refString[i];
j++;
if (j != numFrames)
{
top++;
}
}
else
{
if (flag != 1)
{
for (k = 0; k < top; k++)
{
frame[k] = frame[k + 1];
}
frame[top] = refString[i];
}
if (flag == 1)
{
for (m = k; m < top; m++)
{
frame[m] = frame[m + 1];
}
frame[top] = refString[i];
}
}
if (flag == 0)
{
count++;
}
else
{
flag = 0;
}
}
Console.WriteLine("\nThe number of page faults with LRU is: " + count);
}
그것을 파악 및 표시 그것은 대답했다! – user3015999
감사합니다. 그리고 Stackoverflow에 오신 것을 환영합니다! –