当前位置: 技术问答>linux和unix
系统颠簸是如何产生的?
来源: 互联网 发布时间:2015-10-03
本文导语: 小弟正在学习操作系统,对于系统颠簸不甚了解. 我以为系统颠簸的原因是系统刚把一个页调出,然后马上又需要这个页.又调进这个页.可是又由于某种原因又调出,没完没了. 现在问题是,为什么会导致刚调...
小弟正在学习操作系统,对于系统颠簸不甚了解.
我以为系统颠簸的原因是系统刚把一个页调出,然后马上又需要这个页.又调进这个页.可是又由于某种原因又调出,没完没了.
现在问题是,为什么会导致刚调出的页又被需要?
如果内存中只有一个进程,是不会出现这种情况的.因为被调出的页肯定是用不到的.即使调出的页是即将使用的,那下次调进时就不会被马上调出.不会颠簸.
而两个进程就可能导致调出别的进程里正用到的页.那么这里我就不理解了.A进程导致B进程的页面被调出.而这个页面可能B正在用或即将被用到.这点可以理解.但当A用完时间片后,B会将刚调出的页面调入,问题是,为什么这个页面又会被调出呢?不是正用着么?
请达人帮忙!
我以为系统颠簸的原因是系统刚把一个页调出,然后马上又需要这个页.又调进这个页.可是又由于某种原因又调出,没完没了.
现在问题是,为什么会导致刚调出的页又被需要?
如果内存中只有一个进程,是不会出现这种情况的.因为被调出的页肯定是用不到的.即使调出的页是即将使用的,那下次调进时就不会被马上调出.不会颠簸.
而两个进程就可能导致调出别的进程里正用到的页.那么这里我就不理解了.A进程导致B进程的页面被调出.而这个页面可能B正在用或即将被用到.这点可以理解.但当A用完时间片后,B会将刚调出的页面调入,问题是,为什么这个页面又会被调出呢?不是正用着么?
请达人帮忙!
|
简单的说,操作系统使用硬盘做虚拟内存,物理内存页和虚拟内存页频繁调用(注意:不一定是一个页)。
你的例子也是错的。假设:内存中只有进程A,A需要500个页,而物理内存只能提供400个。100个在硬盘。如果频繁的将页调进调出,就会出现颠簸了。想想64M内存的机器,运行需要128M内存的程序的情况吧。
你的例子也是错的。假设:内存中只有进程A,A需要500个页,而物理内存只能提供400个。100个在硬盘。如果频繁的将页调进调出,就会出现颠簸了。想想64M内存的机器,运行需要128M内存的程序的情况吧。