主题:[原创]看看这道程序改造题怎么做,高手请进,急!
1)给页面(page)分配core页面(page)时,把对应的页面表(page table entry)的AGE,设置成MAXAGE(=15).
2)SLAVE模式每执行一次1命令,给JOB分配的core页面(page)的AGE都减去1
3)页面错误(page lault)发生时,如果没有空的page,在全部的core页面(page)里找到AGE=0,作为替换的候补。
PROCEDURE MEMORYMANAGER (VAR JJOB : INTERGER : VAR ENTRY : QUEUERACGE : VAR W ; VAR V : CHAR);
VAR J: INTEGER ; JOB : 1 . . MAXJOBS : PTEADDR : WORD :
BEGIN
WITH JOBQ ( . JREADY .) DO BEGIN
W : = “ 0000” ;
J: = “HEAD”;
WHILE (W = “0000” AND (J <TAIL) DO BEGIN
J: =J+1;
JOB: =Q( . J MOD QUEUESIZE . );
WITH JD( .JOB .) DO BEGIN
PTEADDR( .2 .) : =PTR( .3.);
PTEADDR( .3 .) : =PTR( .4.);
V: =“0”;
WHILE (W = “0000”) AND (V<=PTR( .2 .)) DO BEGIN
TESTAGE (PTEADDR, W);
V : =SUCC(V)
END
END
END
END
IF W< > “0000”THEN BEGIN
JJOB: = JOB;
ENTRY : =J MOD QUEUESIZE;
V: = PRED(V)
END
END(*MEMORYMANAGER*);
2)SLAVE模式每执行一次1命令,给JOB分配的core页面(page)的AGE都减去1
3)页面错误(page lault)发生时,如果没有空的page,在全部的core页面(page)里找到AGE=0,作为替换的候补。
PROCEDURE MEMORYMANAGER (VAR JJOB : INTERGER : VAR ENTRY : QUEUERACGE : VAR W ; VAR V : CHAR);
VAR J: INTEGER ; JOB : 1 . . MAXJOBS : PTEADDR : WORD :
BEGIN
WITH JOBQ ( . JREADY .) DO BEGIN
W : = “ 0000” ;
J: = “HEAD”;
WHILE (W = “0000” AND (J <TAIL) DO BEGIN
J: =J+1;
JOB: =Q( . J MOD QUEUESIZE . );
WITH JD( .JOB .) DO BEGIN
PTEADDR( .2 .) : =PTR( .3.);
PTEADDR( .3 .) : =PTR( .4.);
V: =“0”;
WHILE (W = “0000”) AND (V<=PTR( .2 .)) DO BEGIN
TESTAGE (PTEADDR, W);
V : =SUCC(V)
END
END
END
END
IF W< > “0000”THEN BEGIN
JJOB: = JOB;
ENTRY : =J MOD QUEUESIZE;
V: = PRED(V)
END
END(*MEMORYMANAGER*);