操作系统本3存储器管理(3)

2019-02-14 21:59

该页已调入内存,此时则应将该页的页表项写入快表(快表满时,调出一个页表项,然后写入),用页表中给出的物理块号与逻辑地址中的页内地址形成物理地址;若该页求调入内存,则产生缺负中断,请求操作系统从外存中调入。

缺页中断的处理过程是,保留CPU现场;从外存中找到缺的页面;若内存已满,则选择一页换出;从外存读入缺页,写入内存,修改页表。 二.页面替换算法

(1)最佳(Optimal)替换算法——选择永不使用或在未来最长时间内不再被访问的页面予以替换。该算法无法实现,只能作为其他算法的评价。 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 7 7 7 2 2 2 2 2 7 0 0 0 0 4 0 0 1 1 1 3 3 3 1 0 缺页中断率为:f=F/A=9/20=45%

(2)先进先出(FIFO)页面替换算法——选择在内存中驻留时间最久的页面予以替换。 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 7 7 7 2 2 2 4 4 4 0 0 0 7 7 7 0 0 0 3 3 3 2 2 2 1 1 1 0 0 1 1 1 0 0 0 3 3 3 2 2 2 1 缺页中断率为:f=F/A=15/20=75% (3)最近最少用(最近最久未使用)替换算法LRU——选择过去最长时间未被访问的页面予以替换。

7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 7 0 1 2 2 3 0 4 2 2 0 3 3 1 2 0 1 7 缺页中断率为:f=F/A=12/20=60% 三.缺页中断率

设作业执行中访问页面的总次数为A,其中有F次访问的页面尚未装入主存,故产生了F次缺页中断。现定义缺页中断率为:

f=F/A

影响缺页中断率的因素: 1.页面分配

(1)最小物理块数——能保证进程正常运行所需的最少物理块数。与计算机硬件结构有关,取决于指令的格式、功能和寻址方式。

(2)页面分配与替换策略——分配策略可以是固定分配和可变分配。替换策略可以是全局替换和部分替换。于是可以组合出三种策略:

固定分配局部替换:为每个进程分配一固定页数的内存空间,缺页时从中选出一页进行淘汰。 可变分配全局替换:先为每个进程分配一定页数的内存空间,缺页时由系统从管理的空闲物理块队列中取出一块分配给该进程。当空闲物理块队列中的物理块用完时,OS才从系统中任一进程中选出一页进行淘汰。

可变分配局部替换:先为每个进程分配一固定页数的内存空间,缺页时从中选出一页进行淘汰。但当某进程缺页频繁时系统再为该进程分配若干附加的空闲物理块,直到进程的缺页率减少到适当程度为止。

(4)分配算法

平均分配算法:

按比例分配算法:根据进程的大小按比例分配物理块。 考虑优先权的分配算法:

一般来说,分配给作业的实页数越多,缺页率会越低。但在使用FIFO替换算法时,有时会出现分配的实页数增加,缺页次数反而增加的奇怪现象,这种现象称为Belay现象。FIFO替换算法产生Belady现象的原因在于它根本没有考虑程序执行的动态特征。

(5)页面调入策略——页面调入可以采用预调页策略或请求调页策略。 2. 页面的大小:若页面小则缺页中断率就高。 3.程序编制方法: k=0 k=1 k=2 k=3 k=4 k=5 k=6 k=7 int a[8][8] 01 02 03 04 05 06 07 j=0 00 for (j=0;j<8;j++) 11 12 13 14 15 16 17 j=1 10 for (k=0;k<8;k++) 21 23 24 25 26 26 27 j=2 20 a[j][k]=0;

j=7 70 71 72 73 74 75 76 77 缺页中断次数=8-1=7

4.抖动与工作集

在请求分页存储管理系统中,可能会出现这样的现象,即对于刚被替换出去的页,可能马上又要被访问,需要将它调入,因无空闲内存又要替换另一页,而后者可能是即将被访问的页。于是造成了系统需花费大量的时间忙于进行这种频繁的页面交换,致使系统的实际效率很低,严重时导致系统瘫痪。这种现象称为抖动现象。

防止抖动现象可以有多种办法,例如,采取局部替换策略、引入工作集算法、挂起若干进程等。 所谓工作集是指在某段时间间隔里,进程实际要访问的页面的集合。引入虚拟存储器后,虽然程序只须有少量的内存就可以运行,但为了使程序有效运行,较少产生缺页,就必须使程序的工作集全部在内存中。

4.7.3 段式虚拟存储管理(请求分段存储管理方式)

一.段表机制

段表中除了有段号、段长、段的基址三项外,还需要存取方式、访问字段、修改位、存在位、增补位、外存起始地址等信息。

段的存取访问修改存在增补外存段号 段长 基址 方式 字段 位 位 位 始址 二.缺段中断机制

与缺页中断类似,每当所要访问的段不在内存时,便要产生缺段中断,请求操作系统将所缺的段调入内存。

在进行地址变换时,若发现被访问的段不在内存,必须先通过缺段中断将所缺的段调入内存,并修改段表。其余的过程与分段管理类似。

缺段中断的处理过程与缺页中断处理的过程类似,但比缺页中断更复杂。因为段长不固定,可能需要替换一个或多个段才能形成一个合适的空闲分区。

4.8 UNIX操作系统存储管理 在早期的UNIX操作系统中,为了提高内存的利用率,提供了内存和外存之间的进程交换机制。在UNIX操作系统V中,除保留了交换机制外,还支持请求分页存储管理方式,内存空间的分配和回收都以页为单位进行。页面大小 512 B~4 KB。为实现请求分页存储管理,系统配置了4种数据结构,即页表、磁盘块描述表、页框数据表和交换使用表,并专门设置了一个换页进程。 4.9例题精选

例4.1某虚拟存储器的用户空间共有32个页面,每页 1KB,主存 16KB。试问: (1)逻辑地址的有效位是多少? (2)物理地址需要多少位?

(3)假定某时刻系统为用户的第0,1,2,3页分别分配的物理块号为5,10,4,7,试将虚地址0A5C和093C变换为物理地址。

解(1)程序空间的大小为 32 KB,因此逻辑地址的有效位数是 15位。 (2)存储空间的大小是 16 KB,因此物理地址至少需要 14位。

(3)当页面为1KB时,虚地址 0A5C表示页号为 00010,页内地址是 1001011100。

该页在内存的第4块,即块号为0100,因此0A5C的物理地址是01001001011100,即125CH。用同样的方法可以求得,093C的物理地址是113CH。

讨论 分页存储管理的地址变换非常简单,只要记住一点,由页号查页表得物理块号,然后与页内地址拼接成物理地址。

例4.2某段式存储管理中采用如表4.1所示的段表。

(1)给定段号和段内地址,说明段式管理中的地址变换过程。 (2)计算[0,430],[1.10],[2,500〕,[3,400],[4,20],[5,100]的内存地址,其中方括号内的第一元素是段号,第二元素是段内地址。

(3)说明存取主存中的一条指令或数据至少要访问几次主存。

解(1)为了实现从逻辑地址到物理地址的变换,在系统中需要设置段表寄存器,存放段表起站地址和段表长度TL。在进行地址变换时,系统将逻辑地址中的段号S与段表长度TL进行比较。若S>TL,则表示段号太大,是访问越界(段号越界),产生越界中断。若未越界,则根据段表的起始地址和段号,计算出该段对应段表项的位置,从中读出该段在内存中的起始位置和段长SL,再检查段内地址d是否超过该段的段长SL。若超过,即d>SL,则同样发出越界中断信号(段内地址越界);若未越界,则将该段的起始地址与段内地址d相加,即得要访问的内存物理地址。

(2)[0,430]的物理地址是219+430=649。 [1,10]的物理地址是3330+10=3340。

因 500>100,所以[2,500]越界(段内地址越界)。 [3,400]的物理地址是1237+400=1637。 [4,20]的物理地址是1952+20=1972。 因 5>4,所以[5,100]越界(段号越界)。

(3)存取主存中的一条指令或数据至少要访问2次主存。一次是访问段表,另一次是访问需要的指令或数据。

讨论 在分段存储管理的地址变换过程中,要点是由段号查段表得段起始地址,然后与段内地址相加得物理地址。但要注意,段地址是二维地址,段号和段内地址都有可能越界。

例4.3分页和分段有何区别?为什么说分段系统较之分页系统更易于实现信息共享和保护?如何实现?

解 分页和分段都采用离散分配方式,但两者有显著的差别。

(1)页是信息的物理单位,分页是系统的需要,是为了提高内存的利用率;段是信息的逻辑单位,目的在于更好地满足用户的需要。

(2)页的大小固定,且由系统确定,一个系统只能有一种大小的页面;段的长度不固定,决定于用户的程序。

(3)分页的作业地址空间是一维的,单一的线性地址空间;分段的作业地址空间是二线的,一个地址包括段号和段内地址。

在分页和分段存储管理系统中,多个作业并发运行,共享同一内存块里的程序或数据是可行的。为了实现共享,必须在各共享者的段表或页表中分别有指向共享内存块的表目。对分段式系统,被共享的程序或数据可作为单独的一段。在物理上它是一段,在不同的进程中,可以对应不同的逻辑段,相对来说比较易于实现。对分页管理,则要困难得多。首先,必须保证被共享的程序或数据占有整数块,以便与非共享部分分开。其次,由于共享程序或数据被多个进程访问,所以每个进程对共享程序或数据的访问都应该是有限制条件的。因此,从共享和保护的实现上来看,须共享的程序段或数据段是一个逻辑单

位,而分段存储管理中被共享的程序或数据作为一个整体(一段),实现共享和保护就要方便得多。

分段系统的共事是通过两个(或多个)进程的段表之相应表目都指向同一个物理段,并设置共享计数来实现的。每段设置访问方式,就可以实现段的保护。

讨论 分页与分段的逻辑地址一个是一维,一个是二维,一定要加以区别。从共享与保护来讲.分页管理也可以实现,但非常复杂,一般系统不易实现。

例4.4在一个请求分页系统中,假如一个作业的页面走向为4,3,2,1,4,3,5,4,3,2,1,5。当分配给该作业的物理块数M分别是3和4时,分别采用LRU和FIFO页面替换算法, 4 3 2 1 4 3 5 4 3 2 1 5 4 3 2 1 4 3 5 4 3 2 1 5 F 4 4 4 1 1 1 5 5 5 L4 4 4 1 1 1 5 2 2 2 I 3 3 3 4 4 4 2 2 R 3 3 3 4 4 4 4 1 1 F 2 2 2 3 3 3 1 U 2 2 2 3 3 3 3 5 O 计算访问过程中所发生的缺页次数和缺页率;比较所得结果。 缺页次数=10次,缺页率=(10/12)*100%=83%。

通过以上缺页次数和缺页率的分析计算,可以看出,对于LRU算法,增加物理块数,可以减少缺页次数,降低缺页率。而对FIFO算法,增加物理块数,不一定能减少缺页次数。

讨论 计算缺页次数和缺页率时,要注意初始时刻所有物理块为空。调入页面时,不需要页面替换,但是需要引起缺页中断。

例4.5什么是虚拟存储器?在分页存储管理系统中如何实现虚拟存储?

解 所谓虚拟存储器是指仅把作业的一部分装入内存便可运行作业的存储管理系统。它具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充。

请求分页存储管理系统是在分页管理的基础上实现的。页表中除了有页号、物理块号两项外,还需要状态位、访问字段、修改位、外存地址等信息。由于是部分调入内存,每当所要访问的页面不在内存时,便要产生缺页中断,请求操作系统将所缺页调入内存。缺页中断的处理过程是保留CPU现场;从外存中找到所缺的页面;若内存已满,则选择一页换出,从外存读入所缺的页面,写入内存,修改页表。

在进行地址变换时,若发现被访问的页不在内存,必须先通过缺页中断将所缺的页面调入内存,并修改页表。其余的过程与分页管理类似。全过程如图4.3所示。


操作系统本3存储器管理(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:提高新闻记者新闻敏感对策研究

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: