欢迎来到天天文库
浏览记录
ID:55965756
大小:16.00 KB
页数:4页
时间:2020-06-18
《内存块分配算法和抖动问题.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、内存块分配算法和抖动问题2010-03-2318:531内存块分配算法1.1最少内存块数分配给进程的内存块数目是受到限制的,分配的总块数不能超出可用块的总量(除非存在页共享的情况)。另一方面,每个进程也需要有起码最少的块数。很显然,随着分给每个进程块数的减少,缺页率将上升,降低了进程的执行速度。分给每个进程的最少块数是指能保证进程正常运行所需的最少内存数,它是由指令集结构决定的。因为正在执行的指令被完成之前出现缺页时,该指令必须被重新启动,与此相应,必须有足够的块把一条指令所访问的各个页都存放起来。而每个进程的最多块数是由可用内存的总量决定的。1.2固定分配和可变分配请求分页系统支
2、持虚拟存储器,可以采用两种内存块分配策略,即固定分配和可变分配。(1)固定分配策略是分配给进程的内存块数是固定的,并在最初装入时(即进程创建时)确定块数。分给每个进程的内存块数基于进程类型(交互式、批处理型、应用程序型等),或者由程序员或系统管理员提出的建议。当进程执行过程中出现缺页时,只能从分给该进程的内存块中进行页面置换。(2)可变分配策略允许分给进程的内存块数随进程的活动而改变。如果一个进程在运行过程中持续缺页率太高,这就表明该进程的局部化行为不好,需要给它分配另外的内存块,以减少它的缺页率。如果一个进程的缺页率特别低,就可以减少分配的内存块,但不要显著增加缺页率。可变分配策
3、略的功能更强,但需要操作系统估价出各活动进程的行为,这就增加了操作系统的软件开销,并且依赖于处理器平台所提供的硬件机制。1.3全局置换与局部置换内存块分配的另一个重要问题是页面置换范围。多个进程竞争内存块时,可以把页面置换分为两种主要类型:全局置换和局部置换。全局置换允许一个进程从全体存储块的集合中选取置换块,尽管该块当前已分给其他进程,但还是能强行剥夺。而局部置换是每个进程只能从分给它的一组块中选择置换块。采用局部置换策略,分给进程的块数是不能变更的。采用全局置换策略,一个进程可以只从分给其他进程的块里挑选。这样,如果没有别的进程挑选它的块,那么分给该进程的块数就增加了。可以由一
4、个核心进程专门负责页面置换工作。全局置换算法存在的一个问题是,程序无法控制自己的缺页率。一个进程在内存中的一组页面不仅取决于该进程的页面走向,而且也取决于其他进程的页面走向。因此,相同程序由于外界环境不同会造成执行上的很大差别。使用局部置换算法就不会出现这种情况,一个进程在内存中的页面仅受本进程页面走向的影响。1.4内存块分配算法为每个进程分配内存块的算法主要有三种:等分法、比例法和优先权法。(1)等分法为每个进程分配存储块的最简单的办法是平分,即若有m块、n个进程,则每个进程分m/n块(其值向下取整)。等分法不区分具体进程的需求,“一视同仁”地进行分配。其结果造成:有的进程用不了
5、那么多块,而另外进程却远远不够用。为解决这个问题,可采取按需成比例分配的办法。(2)比例法分给进程的块数=进程地址空间大小/全部进程的总地址空间*可用块总数上述两种情况下,分给每个进程的块数依据多道程序数目而变。多道程序数增加了,每个进程就要少分一些块。相反,多道程序数少了,分给每个进程的块数可多一些。(3)优先权法在上面两种算法中没有考虑优先级问题,即把高优先级进程和低优先级进程一样对待。为加速高优先级进程的执行,可以给高优先级进程分较多内存。如使用比例分配法时,分给进程的块数不仅取决于程序的相对大小,而且也取决于优先级的高低。2抖动(Thrashing)问题置换算法的优劣,直接
6、影响到系统的效率。若选用算法不合适,可能会出现这种现象:刚被置换出去的页,很快又要访问,因而要把它重新调入;可是调入不久又再次被置换出去,这样再访问、再调入,如此反复,使得整个系统的页面替换非常频繁,以致大部分的机器时间都花在来回进行的页面调度上,只有一小部分时间用于进程的实际运算。这种局面就称为系统“抖动”。产生抖动的原因是系统中多道程序度过高,进程运行缺页率严般情况下,在多道程序度较小时,随着它的增加,CPU利用率会缓慢增加。当到达最大值后,多道程序度进一步增大,就出现了抖动,导致CPU利用率急剧下降。防止抖动发生或者限制抖动影响的方法有多种,但一般都基于调节多道程序度。(1)
7、采用局部置换策略。如果一个进程出现抖动,它不能从另外的进程那里夺取内存块,从而不会引发其他进程出现抖动,使抖动局限于一个小的范围内。然而这种方法并未消除抖动的发生,而且在一些进程发生抖动的情况下,等待磁盘I/O的进程增多,使得平均缺页处理时间加长,从而延长了有效存取时间。(2)利用工作集策略防止抖动。(3)挂起某些进程。当出现CPU利用率、而磁盘I/O非常频繁的情况时,就可能因为多道程序度太高而造成抖动。为此,可挂起一个或几个进程,以便腾出内存空间供抖动进程使用,从而
此文档下载收益归作者所有