许多操作系统的习题辅导或参考书中,常能看到如下的题解。
题目:在一个分页虚拟存储管理方式中,采用LRU页面置换算法时,假如一个程序的页面走向为:1、3、2、1、1、3、5、1、3、2、1、5,当分配给该进程的物理块数M分别是3和4时,试计算在访问过程中所发生的缺页次数和缺页率,并比较所得结果(采用请求调页策略)。
解答:
(以M=3为例):
内存页面 1 13 123 同左 135 123 125
页面走向 1 3 2 1 1 1 3 5 1 3 2 1 5
换出页面 2 5 3
是否缺页 是 是 是 是 是 是
共发生6次中断.
对于这样的解答,我总觉得有些问题。也曾与一些老师讨论过,但一些老师认为,现在的参考书就这样解答的,为了学生的考研,只能让学生这样做。最近,我也不再教操作系统课程了,想就这个问题请教更多的专家。
主要的不解在于,应用程序在运行之初就发生缺页中断。我觉得不妥的原因有一下几点:
1)应用程序的执行,是由操作系统的装入模块装入的,在实存储管理下,操作系统的装入模块是将应用程序整个地装入内存,而虚拟存储管理下,装入程序可以不必将用于程序全部装入内存,就可以让应用程序运行起来。这装入过程与“在执行中发生缺页”而需要采取的页面置换策略不是一回事。
2)缺页中断不同于一般中断,缺页中断是在指令执行过程中、因为指令中的地址(如操作数地址或转移地址)所访问的页面不在内存而发生并处理的。当操作系统的装入模块将应用程序装入内存后、将控制转交给应用程序、是将指令指针指向应用程序入口(第一条指令),既然应用程序的入口也没装入内存,至多说明控制权转交后无法读取应用程序的第一条指令(所分配的内存页架中存在某种二进制数据),这时发生缺页中断就让人费解了!退一步说,即使发生缺页中断,也不能说是该应用程序的缺页中断。
3)假如一个小的应用程序,其本身就小于等于3个物理块,本来是可以装入运行并不会发生缺页的的,但是,按照上述题解中,却需要发生3次缺页中断。显然,缺页中断并给系统性能带来好处、而是恰恰相反。那么表明,一种改进的系统在基本情况下却退步了,也让人不解!
大学的教学应该告诉学生事务的本质。尽管可能是为了考查学生某一方面知识的理解和掌握,也不能在分割知识时违背事实和科学,违背常理。
所以,我认为,当系统为某个进程分配多少物理块(一般是保证指令能正常执行所需要的最少块数)后,装入模块通常将应用程序的开始部分尽可能地装满所分配的物理块,在执行应用程序的第一条指令时不应该发生缺页中断。缺页应该是在后续的执行中可能发生的。
请各位专家指教!如果我所说的还有道理,那么,我们大学的教材、参考书就需要改进。
------解决方案--------------------
我们老师讲的时候就说前面有物理块为空的时候是不计入缺页的
------解决方案--------------------
看帖,回帖,帮顶,接分