文章目录
一、程序运行的基本原理
二、连续分配
连续分配即为一个用户程序分配一个连续的内存空间。
1.连续分配方式
2.动态分区分配算法
三、非连续分配
由于需要额外的空间去存储分散区域的索引,使得非连续分配方式的存储密度低于连续存储方式的。
1.分页存储管理方式(页表在主存中)
这种方式以块/页框为存储单位,相对较小,大小固定。进程只会在为最后一个不完整的块申请一个主存块空间时,才产生主存碎片,所以尽管会产生内部碎片,但这种碎片相对于进程来说也是很小的,每个进程平均只产生半个块大小的内部碎片(也称页内碎片)。
- 地址转换:
先将页号P与页表长度M比较。
①若越界,即 P≥M,则表示地址越界并中断。
② 若未越界,则将页表始址与页号和页表项长度的乘积相加,便得到该表项在页表中的位置,从中得到该页的物理块号,将之装入物理地址寄存器中。
将有效地址中的页内偏移量送入物理地址寄存器的块内地址字段中,即可得到要访问的内存物理地址。
2.分段存储管理方式(段表在主存中)
目的是提高内存的利用率,提升计算机的性能。分页通过硬件机制实现,对用户完全透明;分段对用户和程序员不透明。
- 地址转换:
系统将逻辑地址中的段号 S,与段表长度 TL进行比较。
① 若越界,即 S>TL,表示段号太大,访问越界,于是产生越界中断信号。
② 若未越界,则根据段表的始址和该段的段号,计算出该段对应段表项的位置,从中读出该段在内存中的起始地址。
检查段内地址 W是否超过该段的段长 SL。
①若超过,即 W> SL,同样发出越界中断信号。
② 若未越界,则将该段的基址d与段内地址相加,即可得到要访问的内存物理地址。
2.分页存储与分段存储的对比
4.段页式存储管理方式
页式存储管理能有效地提高内存利用率,而分段存储管理能反映程序的逻辑结构并有利于段的共享。将这两种存储管理方法结合起来,便形成了段页式存储管理方式。
四、虚拟页式存储管理
1.虚拟存储器的定义和特征
基于局部性原理,在程序装入时,可以将程序的一部分装入内存,而将其余部分留在外存,就可以启动程序执行。在程序执行过程中,当所访问的信息不在内存时,由操作系统将所需要的部分调入内存。另一方面,操作系统将内存中暂时不使用的内容换出到外存上。这样,系统好像为用户提供了一个比实际内存大得多的存储器,称为虚拟存储器。
虚拟存储器有以下三种实现方式∶请求分页,请求分段,请求段页式。
虚拟存储器有以下三个主要特征∶ 多次性,对换性,虚拟性。
虚拟存储器的容量取决于地址空间的大小,而不是由实际的内存容量决定。
2.缺页中断机构
在请求分页系统中,每当所要访问的页面不在内存中时,便产生一个缺页中断,请求操作系统将所缺的页调入内存。此时应将缺页的进程阻塞(调页完成唤醒),若内存中有空闲块,则分配一个块,将要调入的页装入该块,并修改页表中的相应页表项,若此时内存中没有空闲块,则要淘汰某页(若被淘汰页在内存期间被修改过,则要将其写回外存)。
缺页中断也是一种中断,但它在指令执行期间产生和处理,属于内中断;在指令执行过程中,可能多次产生缺页中断。
3.快表TLB(Cache中)
基于局部性原理,在地址变换机构中增设了一个具有并行查找能力的高速缓冲存储器——快表,又称联想寄存器(TLB),用以存放当前访问的若干页表项。
- 地址变换过程如下:
4.请求分页管理方式
在请求分页系统中,只要求将当前需要的一部分页面装入内存,便可以启动作业运行。在作业执行过程中,当所要访问的页面不在内存中时,再通过调页功能将其调入,同时还可通过置换功能将暂时不用的页面换出到外存上,以便腾出内存空间。主要特点是扩充了内存。
(1)请求分页与基本分页的区别
(2)硬件支持
5.页面置换算法
(1)最佳置换算法OPT(向前看)
此算法选择的被淘汰页面是以后永不使用的页面,或是在最长时间内不再被访问的页面,以便保证获得最低的缺页率。然而,由于人们目前无法预知进程在内存下的若干页面中哪个是未来最长时间内不再被访问的,因而该算法无法实现。此算法性能较好。
(2)先进先出FIFO
置换次数多,基于队列实现,容易出现Belady异常,进程的物理块增多,但缺页次数不减反增。
实现简单,但性能差。
(3)最近最久未使用LRU(向后看)
选择最近最长时间未访问过的页面予以淘汰。
性能较好,但实现困难(需要对所有的页排序)。
需要寄存器和栈的硬件支持,是堆栈类的算法,不可能出现Belady异常。
(4)时钟置换算法CLOCK/最近未用算法
性能接近LRU,但实现没那么困难。
操作系统中任何经过优化而有效的页面置换算法都有一个原则,即尽可能保留曾经使用过的页面,而淘汰未使用的页面,认为这样可以在总体上减少换页次数。CLOCK 算法只考虑到是否被访问过,因此被访问过的当然尽可能留下,未使用过的就淘汰。
而改进型CLOCK算法对使用过的页面又做了细分,分为使用过但未修改过和使用过且修改过。因此,若有未使用过的页面,则当然首先把它换出,若全部页面都使用过,则当然优先把未修改过的页面换出。
6.工作集/驻留集
工作集是指在某段时间间隔内,进程要访问的页面集合。基于局部性原理,可以用最近访问过的页面来确定工作集。一般来说,工作集W可由时间t和工作集窗口大小A来确定。为了防止抖动现象,一般来说分配给进程的物理块数(即驻留集大小)要大于工作集大小。
- 分配给一个进程的驻留集小,驻留在主存中的进程数越多,有利于提高资源利用率。
- 但进程的驻留集太小,页错误率会较高。
- 但进程的驻留集太大, 对减小页错误率也没太多影响。
7.页面分配策略
- 固定分配局部置换:每个进程的驻留集数固定,需要置换时一页一页换。不过这个固定的数目并不好确定,太小会频繁中断,太大会不利于利用资源。
- 可变分配全局置换:每个进程的驻留集数固定,但操作系统准备几个空闲物理块,给进程按需分配。最容易实现,但盲目给进程分配块,不利于多道程序的并发能力。
- 可变分配局部置换:每个进程的驻留集数固定,当某个进程发生缺页时,只允许从该进程在内存的页面中选出一页换出,因此不会影响其他进程的运行。若进程在运行中频繁地缺页,则系统再为该进程分配若干物理块,直至该进程缺页率趋于适当程度;反之,若进程运行中的缺页率特别低,则可适当减少分配给该进程的物理块。调页次数减少,有利于维持并发能力,但实现更复杂一点。
8.抖动
在页面置换过程中,一种最糟糕的情形是,刚刚换出的页面马上又要换入主存,刚刚换入的页面马上又要换出主存,这种频繁的页面调度行为称为抖动或颠簸。若一个进程在换页上用的时间多于执行时间,则这个进程就在颠簸。
主要原因是,某个进程频繁访问的页面数目高于可用的物理页帧数目。虚拟内存技术可在内存中保留更多的进程以提高系统效率。在稳定状态,几乎主存的所有空间都被进程块占据,处理机和操作系统可以直接访问到尽可能多的进程。然而,如果管理不当,那么处理机的大部分时间都将用于交换块,即请求调入页面的操作,而不是执行进程的指令,因此会大大降低系统效率。也就是说,页面置换算法的不合理可能会引起抖动。
附:王道课后选择题笔记
1.使用交换技术时,若一个进程正在(I/O操作)则不能交换出主存。
进程正在进行I/O操作时不能换出主存,否则其I/O数据区将被新换入的进程占用,导致错误。不过可以在操作系统中开辟I/O缓冲区,将数据从外设输入或将数据输出到外设的I/O活动在系统缓冲区中进行,这时系统缓冲区与外设I/O时,进程交换不受限制。
2.内存保护需要由(操作系统和硬件机构)合作完成,以保证进程空间不被非法访问。
3.存储管理方案中,(单一连续存储管理、固定分区分配存储管理)可采用覆盖技术。
4.可重入程序是通过(减少对换数量)方法来改善系统性能的。
可重入程序主要是通过共享来使用同一块存储空间的,或通过动态链接的方式将所需的程序段映射到相关进程中去,其最大的优点是减少了对程序段的调入/调出,因此减少了对换数量。
5.操作系统实现(分区)存储管理的代价最小。
6.对主存的分配以页、段为单位,但访问以字节或字为单位。
7.页式存储方式可以采用静态重定位吗?
不可以,静态重定位是程序运行时一次装配,存储是连续的,但页式存储方式是离散的。、
8.要注意区分页表长度和页表项长度。页表长度的值是指一共有多少页(也就是页表项总共有多少),页表项长度是指页地址占多大的存储空间。
9.在缺页处理过程中,操作系统执行的操作可能是:磁盘I/O、分配页框、修改页表,不会处理越界错误。
10.快表用于(地址变换)。
11.虚拟分页存储管理系统中,若访问的页面不在主存中,而主存中没有可用的空闲帧时,系统正确的处理步骤是:缺页中断、决定淘汰页、页面调出、页面调入。
12. 已知系统为32位实地址,采用48位虚拟地址,页面大小为4KB,页表项大小为8B。假设系统使用纯页式存储,则要采用(4)级页表,页内偏移(12)位。
页面大小为4KB,因此页内偏移为12位。系统采用48位虚拟地址,因此虚页号48-12=36位。采用多级页表时,最高级页表项不能超出一页大小;每页能容纳的页表项数为4KB/8B=512=2,36/9=4,因此应采用4级页表,最高级页表项正好占据一页空间。
13.测得某个采用按需调页策略的计算机系统的部分状态数据为∶CPU利用率为20%,用于交换空间的磁盘利用率为97.7%,其他设备的利用率为5%。由此判断系统出现异常,这种情况下(加内存条来增加物理空间容量)能提高系统性能。
用于交换空间的磁盘利用率已达97.7%,其他设备的利用率为5%,CPU的利用率为20%,说明在任务作业不多的情况下交换操作非常频繁,因此判断物理内存严重短缺。
14.增大交换区:对加快虚实地址转换、解决抖动、提高CPU利用率,并没有帮助。