1. 首页
  2. > 海外公司注册 >

先进先出法算法编程(先进先出算法的优缺点)

本章主要是讲分区存储管理,分页存储管理,分段存储管理,段页式存储管理


1.分区存储管理

所谓分区存储组织,就是整存将某进程运行所需的内存整体一起分配给它,然后再执行。


有三种分区方式:


固定分区:静态分区方法,将主存分为若干个固定的分区,将要运行的作业装配进去,由于分区固定,大小和作业需要的大小不同,会产生内部碎片


可变分区:动态分区方法,主存空间的分区是在作业转入时划分,正好划分为作业需要的大小,这样就不存在内部碎片,但容易将整片主存空间切割成许多块,会产生外部碎片。(内部碎片:内存已经被分配出去给某个进程使用了,因为是固定分区,导致最后一个分区填充不满,出现内部碎片,进程在占用这个内存时,系统是无法使用这个内部多出来的碎片的!外部碎片:内存还没被分配出去,不属于任何进程,因为可变分区,内存被分割成多个块,导致新的进程想使用这些空闲的内存,如果需要的内存大于空闲内存,这个时候内存就得不到利用,或者能够使用,但是会有剩余内存,这样就会被切割成多个细小的碎片,称为外部碎片!)


可变分区的算法如下:


系统分配内存的算法有很多,如下图所示,根据分配前的内存情况,还需要分配9K空间,对不同算法的结果介绍如下:


  • 首次适应法:按内存地址顺序从头查找,找到第一个>=9K空间的空闲块,即切割9K空间分配给进程。
  • 最佳适应法:将内存中所有空闲内存块按从小到大排序,找到第一个>=9K空间的空闲块,切割分配,这个将会找到与9K空间大小最相近的空闲块。
  • 最差适应法:和最佳适应法相反,将内存中空闲块空间最大的,切割9K空间分配给进程,这是为了预防系统中产生过多的细小空闲块。
  • 循环首次适应法:按内存地址顺序查找,找到第一个>=9K空间的空闲块,而后若还需分配,则找下一个,不用每次都从头查找,这是与首次适应法不同的地方。


可重定位分区:可以解决碎片问题,移动所有已经分配好的区域,使其成为一个连续的区域,这样其他外部细小的分区碎片可以合并为大的分区,满足作业要求。只在外部作业请求空间得不到满足时进行。


2.分页存储管理

解决了什么问题呢?主要是解决了分区管理整存无法解决的问题,不需要一次性的把整个程序所需要的内存都分配给程序去运行!例如一个10GB的程序A,我只有1GB内存,我怎么执行A呢,只需要将指令一条条调到内存中去执行!


分页存储是固定的分页的,会产生内部碎片。(如果每页4kb,产生碎片的原因是最后一页不可能正好,之前的页都是正好的,大小是4kb!)


逻辑页分为页号和页内地址页内地址就是物理偏移地址,而页号与物理块号并非按序对应的,需要查询页表,才能得知页号对应的物理块号,再用物理块号加上偏移地址才得出了真正运行时的物理地址。(页内地址=物理地址


优点:利用率高,碎片小,分配及管理简单。


缺点:增加了系统开销,可能产生抖动现象(频繁的页面调入调出)。




抖动现象:当分配的内存小于要求的工作集时,由于内存外存交换频繁,访问外存时间和I/O处理时间大大增加,造成CPU因等待数据空转,使得整个系统性能大大下降,这就造成了系统抖动。


补充下(都是考点):有多少个页,决定了我的页号是多少位,举个例子(示例学习法,不懂的举个例子,立马懂了),4GB=(4*1024*1024)KB进程,分的每页是4KB,这个时候就是有(4*1024*1024)KB/4KB= 2^20个页数,对应的两进制是20位,也就是页号有20位,所以说有多少个页,就决定了我的页号是多少位


页内地址跟什么相关?页内地址是根据页的大小来的,再举个例子,比如页大小是4KB=(4*1024)B=2^12,所以页地址就是12位!


页面置换算法


最优算法:OPT,理论上的算法,无法实现,是在进程执行完后进行的最佳效率计算,用来让其他算法比较差距。原理是选择未来最长时间内不被访问的页面置换,这样可以保证未来执行的都是马上要访问的。


先进先出算法:FIFO,先调入内存的页先被置换淘汰,会产生抖动现象,即分配的页数越多,缺页率可能越多(即效率越低)。


最近最少使用:LRU,在最近的过去,进程执行过程中,过去最少使用的页面被置换淘汰,根据局部性原理,这种方式效率高,且不会产生抖动现象,使用大量计数器,但是没有LFU多。


淘汰原则:优先淘汰最近未访问的,而后淘汰最近未被修改的页面。


快表,快速的页表,存的内容跟页表一样的!只存了页表访问最频繁的副本!


是一块小容量的相联存储器,由快速存储器组成,按内容访问,速度快,并且可以从硬件上保证按内容并行查找,一般用来存放当前访问最频繁的少数活动页面的页号


快表是将页表存于Cache中;慢表是将页表存于内存上。慢表需要访问两次内存才能取出页,而快表是访问一次Cache和一次内存,因此更快。


真题来喽:


1.某计算机系统页面大小为4K,若进程的页面变换表如下所示,逻辑地址为十六进制1D16H.该地址经过变换后,其物理地址应为十六进制()。



A.1024H B.3D16H C.4D16H D.6D16H


解析:核心就是页面大小,决定了页内地址的位数,最后页面地址跟物理地址是一样的D16H这三位不变,从下图页表找到对应关系即可,1D16H对应的16位2进制=0001 1101 0001 0110 4kb=2^12b。


2.某进程有4个页面,页号为0~3,页面变换表及状态位、访问位和修改位的含义如下图所示,若系统给该进程分配了3个存储块,当访问前页面1不在内存时,淘汰表中页号为()的页面代价最小。



A.0 B.1 C.2 D.3


解析:这个题没什么难度,就是考察页面置换算法,使用LRU,最近最少使用!


3.分段存储管理

将进程空间分为一个个段,每段也有段号和段内地址,与页式存储不同的是,每段物理大小不同分段是根据逻辑整体分段的,因此,段表也与页表的内容不同,页表中接是逻辑页号对应物理块号,而下图所示,段表有段长和基址两个属性,才能确定一个逻辑段在物理段中的位置。




优点:多道程序共享内存,各段程序修改互不影响。


缺点:内存利用率低,内存碎片浪费大。


考题来喽:


1.设某进程的段表如下所示,逻辑地址()可以转换为对应的物理地址。



A. (0,1597) (1,30)和(3,1390)


B.(0,128) (1,30)和(3,1390)


C.(0,1597)、(2,98)和(3,1390)


D.(0,128)、(2,98)和(4,1066)


解析:一看题有点懵,后来才知道是检查一下地址是不是合法的,主要是看懂选项什么意思,(s,d)s是段号,d是段内地址。答案B,主要看段长是否越界!


4.段页式存储管理

对进程空间先分段,后分页,具体原理图和优缺点如下:


优点:空间浪费小、存储共享容易、存储保护容易、能动态链接。


缺点:由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内容也有所增加,使得执行速度大大下降。



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至123456@qq.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息