以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 计算机考研交流 』   (http://bbs.xml.org.cn/list.asp?boardid=67)
----  [求助]页面分配和置换问题  (http://bbs.xml.org.cn/dispbbs.asp?boardid=67&rootid=&id=35858)


--  作者:DavidPotter
--  发布时间:7/20/2006 6:39:00 PM

--  [求助]页面分配和置换问题
其中分配有: 固定分配和可变分配

置换有:全局和局部的方式.

而在有些书(操作系统教程/现代操作系统)上说:
三种组合:固定+ 局部
可变+ 全局
固定+ 全局

而在: Operating Systems: Internals and Design Principles, William Stallings
说: 固定+ 局部
可变+ 全局
可变+ 局部
3种

以前老师说的时候好像有些明白为什么不用第4种.(我们当时是讲第二种),现在看北大的那种不一样了.而且现在也不记得为什么另外一种有什么缺陷而不被作者所推荐.

请给一个明确一些的解释,谢谢!


--  作者:Supremgoooo
--  发布时间:7/20/2006 11:14:00 PM

--  
内存划分是为了高效的利用它,在多到程序中广泛应用.
不变是早期的办法,为的是简单,容易实现.但是一旦被分,就不能改变,实际的内存利用率还是很低的.采用可变分区,根据实际作业的需求来划分内存能够进一步提高内存使用效率,也有着更高的共享性.

你说的置换是指程序在内,外存的移动吧?
这涉及到两种技术:交换和覆盖.前者是在时分系统中,多个进程之间的活动,后者是模块化程序为了高效利用内存而设立的,它用在一个程序的内部.

它们之间的各种组合都有使用的时代和实际的情况.如果是一概而论,可变比不变好,交换与覆盖同时配合使用.


--  作者:Supremgoooo
--  发布时间:7/21/2006 12:02:00 AM

--  
又想了一下。你说的局部和全部是指程序在被换进内存时是一次性换入还是部分换入的问题吧?
显然,部分换入的内存利用率更高,然而频繁的中断也消耗了大量的cpu时间,所以这里面有一个块选择的原则:例如频繁使用到的块和等待io的块要常驻内存。

于是又产生一个问题:是与自己交换还是与其它程序交换,这就是交换与覆盖的差别了,要注意,覆盖对程序员不是透明的。

另外,一个程序在被换入内存时,是否在外存中保留其副本也是有差别的,如果是没有,io的压力也会增大许多。


--  作者:DavidPotter
--  发布时间:7/21/2006 9:38:00 AM

--  
...
这里所说的固定分配和可变分配是指在有虚存的基础上而言的:
固定分配是指:对于一个给定的进程,对其分配的页面数是固定的。不是指全部分配。
可变分配指:分配的数目是可变的。

而置换策略是:对于一个进程来说,如果要置换出去,全局应该是指置换所有的。

Fixed-allocation
gives a process a fixed number of pages within which to execute
when a page fault occurs, one of the pages of that process must be replaced
Variable-allocation
number of pages allocated to a process varies over the lifetime of the process

Local Scope:Page to be replaced is chosen from among the frames allocated to the process
Global Scope:Page to be replaced is chosen from all frames


--  作者:Supremgoooo
--  发布时间:7/21/2006 7:38:00 PM

--  
噢,你是问虚拟页式存储中分给一个进程的物理页面多少的问题。

如果是分给的物理页面多到能够将整个进程都装下,则不存在此问题。但是,根据程序访问的局部性原理,这样做内存的利用率最低,为提高系统的整体性能,可以只分给程序一部分页面:
(1)当这个的页面数始终固定时,至少有两个弊端有可能增加缺页次数——页面置换算法和程序执行的流程;
(2)当这个页面数在程序的执行过程中可变时,可以有效避免上述弊端,工作集向量的提出就是使程序在执行的过程中,根据实际活跃页面数的需求来灵活分配,可以有效减少缺页中断的次数。

当一个进程被换出内存时,如果是全部换出,则系统开销最大,它再次被执行时中断次数也最大,尤其体现在等待io的进程上。如果是部分换出,页表上要多出滞留位,整体开销要小一些。

所以:
固定+全部:最差
固定+部分:有可能发生抖动问题
可变+全部:io压力大,需要高速io支持
可变+部分:最优,但需要扩充页表


--  作者:DavidPotter
--  发布时间:7/24/2006 10:11:00 AM

--  

--  作者:Supremgoooo
--  发布时间:7/24/2006 10:00:00 PM

--  
工作集实际上也可以是静态分配的,理由是如果工作集固定,改变页面置换算法也能起到相同的效果。然而,静态工作集模型并不常用。

所以我说工作集是动态的。

关于工作集和抖动的关系,例如它如何有效避免抖动,在陈向群的第二版教材中有详细讨论,可以参考。


--  作者:Supremgoooo
--  发布时间:9/20/2006 11:01:00 PM

--  
上当了!

今天我也看到这页课件了,人家根本就不是“页面”方面的问题!
我当时写这个就感觉有问题,缺页咋可能在置换上有局部全部之分??

你问的这个问题本身就是错误的!
以下是引用DavidPotter在2006-7-20 18:39:00的发言:
其中分配有: 固定分配和可变分配

置换有:全局和局部的方式.

而在有些书(操作系统教程/现代操作系统)上说:
三种组合:固定+ 局部
可变+ 全局
固定+ 全局

而在: Operating Systems: Internals and Design Principles, William Stallings
说: 固定+ 局部
可变+ 全局
可变+ 局部
3种

以前老师说的时候好像有些明白为什么不用第4种.(我们当时是讲第二种),现在看北大的那种不一样了.而且现在也不记得为什么另外一种有什么缺陷而不被作者所推荐.

请给一个明确一些的解释,谢谢!



W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
280.273ms