系统颠簸是如何产生的?

dotnetstudy 2005-06-15 09:29:47




小弟正在学习操作系统,对于系统颠簸不甚了解.
我以为系统颠簸的原因是系统刚把一个页调出,然后马上又需要这个页.又调进这个页.可是又由于某种原因又调出,没完没了.
现在问题是,为什么会导致刚调出的页又被需要?
如果内存中只有一个进程,是不会出现这种情况的.因为被调出的页肯定是用不到的.即使调出的页是即将使用的,那下次调进时就不会被马上调出.不会颠簸.
而两个进程就可能导致调出别的进程里正用到的页.那么这里我就不理解了.A进程导致B进程的页面被调出.而这个页面可能B正在用或即将被用到.这点可以理解.但当A用完时间片后,B会将刚调出的页面调入,问题是,为什么这个页面又会被调出呢?不是正用着么?
  请达人帮忙!

...全文
565 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dotnetstudy 2005-06-15
  • 打赏
  • 举报
回复
我在想,页面的调度应该是由系统进程去执行吧?这样,我又产生新的疑问了(SORRY,基础太差).比如说,A进程在它的时间片内发现页错误,现在A什么也做不了.是空等时间片耗完再转到系统进程调页面呢,还是产生一个中断,转到系统进程去调页面.如果是后者,调完页面后是回到A呢,还是到下一个进程?
  还有,有没有可能系统进程在其时间片内完不成一个页面的调入,那怎么办?我认为,调入页面的操作应该是原子的,也就是没办法在这个时间片内调一半页面,然后等下一个时间片来的时候再调另一半.碰到类似的原子操作时,分时系统能连续给某个进程多个时间片么?
beyondtkl 2005-06-15
  • 打赏
  • 举报
回复
比如说 物理内存不够,进程所访问的页都没有被加载到内存,从而导致缺页中断 需要把该页加载 而如果此时内存不够的话,却发现系统的可替换的页(从内存-> 虚拟内存)很少,这个好像是使用 最近最少使用(访问)的算法判断的吧, 这里可能就会出问题了

而频繁的这类操作 将导致性能的急剧下降。。。
dotnetstudy 2005-06-15
  • 打赏
  • 举报
回复
并且,"由于页面的调进/调出是非常耗时间的",页面的调进/调出要消耗A进程本身的时间片?就是说,所以,本来在一个时间片里能完成50%的工作,由于页面调度的消耗.却只能完成10%的工作,导致以后被调出的次数更多,是这样么?
dotnetstudy 2005-06-15
  • 打赏
  • 举报
回复
也就是说,也许与一个页面有关的操作需要10个时间片才能完成,那么,这样,至少就会被调出10次,这样就导致颠簸了.是这样理解吧?
zara 2005-06-15
  • 打赏
  • 举报
回复
A 在这个时间片的工作状态是会被保存的, 但是, 页面的调进/调出是非常耗时间的, 因为, 毕竟是从外部设备上来操作的, 一般是硬盘吧. 也正是这样, 分配给进程的时间片会因此被消耗很多, 造成系统效率的严重下降. 这个, 也是这个问题被关注的原因
dotnetstudy 2005-06-15
  • 打赏
  • 举报
回复
TO zara:还是不太明白.如果说A使用到刚被调出的那个页,调进来就可以啦.如果说,A在时间片里没有把需要这个页的事情做完,那么,再调出,下次再调进也没关系.除非说,如果A在这个时间片里没做完,状态不被保存的话,那么A有关这个页所做的事就白做了,下次调进这个页A还是做不完事情.这样理解就能解释了.但实际情况是这样的么?
zara 2005-06-15
  • 打赏
  • 举报
回复
当 B 的时间片用完后, 轮到进程 A 运行时, A 进程也许会使用到刚才为了载入 B 的那个页而被调出的页. 在这个过程中, 同一进程被进出的不一定是相同的页, 这个和页的属性和调度的策略有关
dotnetstudy 2005-06-15
  • 打赏
  • 举报
回复
书上关于颠簸的原因是:所有页都在使用.所以,置换一个页,又马上需要~ 剩下的问题就是"页面异常处理程序, 是不应该被打断".如果这个程序需要几个连续的时间片,好象就跟分时的概念有点冲突.我以前以为不会分连续的几个时间片给一个进程~
zara 2005-06-15
  • 打赏
  • 举报
回复
页面错误, 即要访问的页面不在时, 是个异常, 即是由一个内存访问指令执行过程中发生的, 系统的页面异常处理程序就去进行页面的调出/调入工作, 将要访问的页面由外设调入后, 继续执行刚才的那个导致页面异常的指令. 页面异常处理程序, 是不应该被打断

21,453

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧