idc销售网站源码,建筑论坛,开发个app需要多少钱,扶风网站建设前文提到的存储器管理方式有一个共同的特点#xff0c;即它们都要求将一个作业全部装入内存后方能运行。 但有两种特殊情况#xff1a; 有的作业很大#xff0c;其所要求的内存空间超过了内存总容量#xff0c;作业不能全部被装入内存#xff0c;致使该作业无法运行#… 前文提到的存储器管理方式有一个共同的特点即它们都要求将一个作业全部装入内存后方能运行。 但有两种特殊情况 有的作业很大其所要求的内存空间超过了内存总容量作业不能全部被装入内存致使该作业无法运行 有大量作业要求运行但由于内存容量不足以容纳所有这些作业只能将少数作业装入内存让它们先运行而将其它大量的作业留在外存上等待。 1. 虚拟存储器概述
1.1 常规存储管理方式的特征
传统存储器管理方式它们全都具有如下两个共同的特征
一次性 指作业必须一次性地全部装入内存后方能开始运行。 在传统存储器管理方式中无一例外地要求先将作业全部装入内存后方能运行。正是这一特征导致了大作业无法在小内存中运行以及无法进一步提高系统的多道程序度直接限制了对处理机的利用率和系统的吞吐量的提高。 事实上许多作业在运行时并非需要用到全部程序和数据如果一次性地装入其全部程序和数据显然也是对内存空间的一种浪费。
驻留性 指作业被装入内存后整个作业都一直驻留在内存中其中任何部分都不会被换出直至作业运行结束。 尽管运行中的进程会因O等原因而被阻塞可能处于长期等待状态或者有的程序模块在运行过一次后就不再需要(运行)了它们都仍将驻留在内存中继续占用宝贵的内存资源。 一次性及驻留性特征使得许多在程序运行中不用或暂时不用的程序(数据)占据了大量的内存空间而一些需要运行的作业又无法装入运行显然这是在浪费宝贵的内存资源。 1.2 常规存储管理方式的局部性原理
程序在执行时将呈现出局部性规律即在一较短的时间内程序的执行仅局限于某个部分相应地它所访问的存储空间也局限于某个区域。
局限性又表现在下述两个方面 时间局限性。 如果程序中的某条指令被执行则不久以后该指令可能再次执行;如果某数据被访问过则不久以后该数据可能再次被访问。 产生时间局限性的典型原因是在程序中存在着大量的循环操作。 空间局限性。 一旦程序访问了某个存储单元在不久之后其附近的存储单元也将被访问。 即程序在一段时间内所访问的地址可能集中在一定的范围之内其典型情况便是程序的顺序执行。 1.3 虚拟存储器的基本工作情况
应用程序在运行之前没有必要将之全部装入内存而仅须将那些当前要运行的少数页面或段先装入内存便可运行其余部分暂留在盘上。 程序在运行时如果它所要访问的页(段)已调入内存便可继续执行下去 但如果程序所要访问的页(段)尚未调入内存(称为缺页或缺段)便发出缺页(段)中断请求此时OS将利用请求调页(段)功能将它们调入内存以使进程能继续执行下去。 如果此时内存已满无法再装入新的页(段)OS 还须再利用页(段)的置换功能将内存中暂时不用的页(段)调至盘上腾出足够的内存空间后再将要访问的页(段)调入内存使程序继续执行下去。 这样便可使一个大的用户程序在较小的内存空间中运行也可在内存中同时装入更多的进程使它们并发执行。 1.4 虚拟存储器的定义和特征
虚拟存储器的定义 指具有请求调入功能和置换功能能从逻辑上对内存容量加以扩充的一种存储器系统。 其逻辑容量由内存容量和外存容量之和所决定其运行速度接近于内存速度而每位的成本却又接近于外存。 虚拟存储技术是一种性能非常优越的存储器管理技术故被广泛地应用于大、中、小型机器和微型机中。 虚拟存储器的特征 多次性。 多次性是相对于传统存储器管理方式的一次性而言的是指一个作业中的程序和数据无需在作业运行时一次性地全部装入内存而是允许被分成多次调入内存运行。 即只需将当前要运行的那部分程序和数据装入内存即可开始运行。 以后每当要运行到尚未调入的那部分程序时再将它调入。 正是由于虚拟存储器的多次性特征才使它具有从逻辑上扩大内存的功能。 无疑多次性是虚拟存储器最重要的特征它是任何其它的存储管理方式所不具有的。因此,我们也可以认为虚拟存储器是具有多次性特征的存储器管理系统 对换性。 对换性是相对于传统存储器管理方式的常驻性而言是指一个作业中的程序和数据无须在作业运行时一直常驻内存而是允许在作业的运行过程中进行换进、换出。 即在进程运行期间允许将那些暂不使用的代码和数据从内存调至外存的对换区(换出)待以后需要时再将它们从外存调至内存(换进)。甚至还允许将暂时不运行的进程调至外存待它们重又具备运行条件时再调入内存。 换进和换出能有效地提高内存利用率可见虚拟存储器具有对换性特征也正是由于这一特征才使得虚拟存储器得以正常运行。 如果虚拟存储器不具有换出功能即不能把那些在存储器中暂时不运行的进程或页面(段)换至外存不仅不能充分地利用内存而且还会使在换入时因无足够的内存空间而经常以失败告终。 虚拟性。 虚拟性是指能够从逻辑上扩充内存容量使用户所看到的内存容量远大于实际内存容量。 这样就可以在小的内存中运行大的作业或者能提高多道程序度。它不仅能有效地改善内存的利用率还可提高程序执行的并发程度从而可以增加系统的吞吐量。 这是虚拟存储器所表现出来的最重要的特征也是实现虚拟存储器的最重要的目标。正是由于它具有这一特征才使得虚拟存储器目前已成为在大、中、小及微机上最广泛采用的存储管理方式。 1.5 虚拟存储器的实现方法
分页请求系统 硬件支持。 主要的硬件支持有 请求分页的页表机制。 缺页中断机构。 地址变换机构。 实现请求分页的软件。 用于实现请求调页的软件和实现页面置换的软件 请求分段系统 硬件支持。 主要的硬件支持有 请求分段的段表机制。 缺页中断机构。 地址变换机构。 软件支持。 用于实现请求调段的软件和实现段置换的软件。 2. 请求分页存储管理方式
2.1 请求分页中的硬件支持
计算机系统除了要求一定容量的内存和外存外还需要有请求页表机制、缺页中断机构以及地址变换机构。
请求页表机制 在请求分页系统中需要的主要数据结构是请求页表其基本作用仍然是将用户地址空间中的逻辑地址映射为内存空间中的物理地址。 为了满足页面换进换出的需要在请求页表中又增加了四个字段。 缺页中断机构 在指令执行期间产生和处理中断信号。 一条指令在执行期间可能产生多次缺页中断。
地址变换机构 请求分页系统中的地址变换机构是在分页系统地址变换机构的基础上为实现虚拟存储器再增加了某些功能所形成的。 如产生和处理缺页中断以及从内存中换出一页的功能等等。 2.2 请求分页中的内存分配
最小物理块数的确定 最小物理块数是指能保证进程正常运行所需的最小物理块数当系统为进程分配的物理块数少于此值时进程将无法运行。 至于进程应获得的最少物理块数与计算机的硬件结构有关取决于指令的格式、功能和寻址方式。 随着为每个进程所分配的物理块的减少将使进程在执行中的缺页率上升从而会降低进程的执行速度。为使进程能有效地工作应为它分配一定数目的物理块。
内存分配策略 在请求分页系统中可采取两种内存分配策略即固定和可变分配策略。 在进行置换时也可采取两种策略即全局置换和局部置换。 三种适用的策略 固定分配局部置换(Fixed AllocationLocal Replacement) 固定分配指为每个进程分配一组固定数目的物理块在进程运行期间不再改变。 局部置换指如果进程在运行中发现缺页则只能从分配给该进程的“个页面中选出一页换出然后再调入一页以保证分配给该进程的内存空间不变。 可变分配全局置换(Variable AllocationGlobal Replacement) 可变分配指先为每个进程分配一定数目的物理块在进程运行期回、可据情况做适当的增加或减少。 全局置换指如果进程在运行中发现页则将OS保留的空闲物理块(一般组织为一个空闲物理块队列)取出一块分配给该进程或者以所有进程的全部物理块为标的选择一块换出然后将所缺之更调入。 可变分配局部置换(Variable AllocationLocal Replacement) 基于进程的类型或根据程序员的要求为每个进程分配一定数目的物理块 但当某进程发现缺贞时只允许从该进程在内存的页面中选择一页换出这样就不会影响其它进程的运行。
物理块分配算法
在采用固定分配策略时如何将系统中可供分配的所有物理块分配给各个进程可采用下述几种算法 平均分配算法即将系统中所有可供分配的物理块平均分配给各个进程。 按比例分配算法即根据进程的大小按比例分配物理块。如果系统中共有n个进程每个进程的页面数为Si则系统中各进程页面数的总和为 假定系统中可用的物理块总数为m则每个进程所能分到的物理块数为bi可由下式计算 bi应该取整它必须大于最小物理块数。 考虑优先权的分配算法 在实际应用中为了照顾到重要的、紧迫的作业能尽快地完成应为它分配较多的内存空间。 通常采取的方法是把内存中可供分配的所有物理块分成两部分 一部分按比例地分配给各进程另一部分则根据各进程的优先权进行分配为高优先进程适当地增加其相应份额。 在有的系统中如重要的实时控制系统则可能是完全按优先权为各进程分配其物理块的。 2.3 页面调入策略
何时调入页面 预调页策略。 如果进程的许多页是存放在外存的一个连续区域中一次调入若干个相邻的页会比一次调入一页更高效些。 但如果调入的一批页面中的大多数都未被访问则又是低效的。 于是便考虑采用一种以预测为基础的预调页策略将那些预计在不久之后便会被访问的页面预先调入内存。 请求调页策略。 当进程在运行中需要访问某部分程序和数据时若发现其所在的页面不在内存便立即提出请求由OS将其所需页面谓入内存。 由请求调页策略所确定调入的页是一定会被访问的再加之请求调页策略比较易于实现。 故在目前的虚拟存储器中大多采用此策略。 但这种策略每次仅调入一页故须花费较大的系统开销增加了磁盘 IO 的启动频率。 从何处调入页面 系统拥有足够的对换区空间这时可以全部从对换区调入所需页面以提高调页速度。 系统缺少足够的对换区空间这时凡是不会被修改的文件都直接从文件区调入而当换出这些页面时由于它们未被修改则不必再将它们重写到磁盘(换出)以后再调入时仍从文件区直接调入。但对于那些可能被修改的部分在将它们换出时便须调到对换区以后需要时再从对换区调入。 UNIX方式。 页面调入过程 每当程序所要访问的页面未在内存时(存在位为“0”)便向CPU发出一缺页中断中断处理程序首先保留CPU环境分析中断原因后转入缺页中断处理程序。 该程序通过查找页表得到该页在外存的物理块后如果此时内存能容纳新页则启动磁盘IO将所缺之页调入内存然后修改页表。 如果内存已满则须先按照某种置换算法从内存中选出一页准备换出:如果该页未被修改过(修改位为“0”)可不必将该页写回磁盘 但如果此页已被修改(修改位为“”)则必须将它写回磁盘然后再把所缺的页调入内存并修改页表中的相应表项置其存在位为“1并将此页表项写入快表中。 在缺页调入内存后利用修改后的页表形成所要访问数据的物理地址再去访问内存数据。整个页面的调入过程对用户是透明的。 缺页率 假设一个进程的逻辑空间为n页系统为其分配的内存物理块数为m(m≤n)。 如果在进程的运行过程中访问页面成功(即所访问页面在内存中)的次数为S访问页面失败(即所访问页面不在内存中需要从外存调入)的次数为F则该进程总的页面访问次数为A S F那么该进程在其运行过程中的缺页率即为 事实上在缺页中断处理时当由于空间不足需要置换部分页面到外存时选择被置换页面还需要考虑到置换的代价如页面是否被修改过。没有修改过的页面可以直接放弃而修改过的页面则必须进行保存所以处理这两种情况时的时间也是不同的。 假设被置换的页面被修改的概率是β其缺页中断处理时间为ta被置换页面没有被修改的缺页中断时间为tb那么缺页中断处理时间的计算公式为 3. 页面置换算法
在进程运行过程中若其所要访问的页面不在内存而需把它们调入内存但内存已无空闲空间时为了保证该进程能正常运行系统必须从内存中调出一页程序或数据送到磁盘的对换区中。但应将哪个页面调出须根据一定的算法来确定。
通常把选择换出页面的算法称为页面置换算法(Page-Replacement Algorithms)。置换算法的好坏将直接影响到系统的性能。 3.1 最佳(Optimal)置换算法
最佳置换算法是由Belady于1966年提出的一种理论上的算法。 其所选择的被淘汰页面将是以后永不使用的或许是在最长(未来)时间内不再被访问的页面。 采用最佳置换算法通常可保证获得最低的缺页率。 由于人们目前还无法预知一个进程在内存的若干个页面中哪一个页面是未来最长时间内不再被访问的因而该算法是无法实现的但可以利用该算法去评价其它算法。 3.2 先进先出(FIFO)页面置换算法
FIFO算法是最早出现的置换算法。 该算法总是淘汰最先进入内存的页面即选择在内存中驻留时间最久的页面予以淘汰。 该算法实现简单只需把一个进程已调入内存的页面按先后次序链接成一个队列并设置一个指针称为替换指针使它总是指向最老的页面。 但该算法与进程实际运行的规律不相适应因为在进程中有些页面经常被访问比如含有全局变量、常用函数、例程等的页面FIFO算法并不能保证这些页面不被淘汰。 3.3 最近最久未使用(LRU)置换算法
FIFO置换算法的性能之所以较差是因为它所依据的条件是各个页面调入内存的时间而页面调入的先后并不能反映页面的使用情况。 最近最久未使用(LRU)的页面置换算法是根据页面调入内存后的使用情况做出决策的。 LRU置换算法的硬件支持 寄存器 为了记录某进程在内存中各页的使用情况须为每个在内存中的页面配置一个移位寄存器可表示为 R Rn-1Rn-2Rn-3 … R2R1R0 进程访问某物理块时要将相应寄存器的Rn-1位置成1。此时定时信号将每隔一定时间(例如100 ms)将寄存器右移一位。如果我们把n位寄存器的数看作是一个整数那么具有最小数值的寄存器所对应的页面就是最近最久未使用的页面。 栈 可利用一个特殊的栈保存当前使用的各个页面的页面号。 每当进程访问某页面时便将该页面的页面号从栈中移出将它压入栈顶。因此栈顶始终是最新被访问页面的编号而栈底则是最近最久未使用页面的页面号。 3.4 最少使用(LFU)置换算法
在采用LFU算法时应为在内存中的每个页面设置一个移位寄存器用来记录该页面被访问的频率。 该置换算法选择在最近时期使用最少的页面作为淘汰页。 3.5 Clock置换算法
简单的Clock置换算法 当利用简单Clock算法时只需为每页设置一位访问位再将内存中的所有页面都通过链接指针链接成一个循环队列。 改进型Clock置换算法 在将一个页面换出时如果该页已被修改过便须将该页重新写回到磁盘上但如果该页未被修改过则不必将它拷回磁盘。 对于修改过的页面在换出时所付出的开销比未修改过的页面大或者说置换代价大。 在改进型Clock算法中除须考虑页面的使用情况外还须再增加一个因素——置换代价。 3.6 页面缓冲算法(PBA)
影响页面换进换出效率的若干因素 页面置换算法。 写回磁盘的频率。 读入内存的频率。
页面缓冲算法PBA PBA算法的主要特点是 显著地降低了页面换进、换出的频率使磁盘I/O的操作次数大为减少因而减少了页面换进、换出的开销 正是由于换入换出的开销大幅度减小才能使其采用一种较简单的置换策略如先进先出(FIFO)算法它不需要特殊硬件的支持实现起来非常简单。
为了显著降低页面换进、换出的频率在内存中设置了如下两个链表 空闲页面链表。 修改页面链表。 3.7 访问内存的有效时间
与基本分页存储管理方式不同在请求分页管理方式中内存有效访问时间不仅要考虑访问页表和访问实际物理地址数据的时间还必须要考虑到缺页中断的处理时间。 4. “抖动”与工作集 由于请求分页式虚拟存储器系统的性能优越在正常运行情况下它能有效地减少内存碎片提高处理机的利用率和吞吐量故是目前最常用的一种系统。 但如果在系统中运行的进程太多进程在运行中会频繁地发生缺页情况这又会对系统的性能产生很大的影响故还须对请求分页系统的性能做简单的分析。 4.1 多道程序度与“抖动”
多道程序度与处理机的利用率 由于虚拟存储器系统能从逻辑上扩大内存这时只需装入一个进程的部分程序和数据便可开始运行故人们希望在系统中能运行更多的进程。 即增加多道程序度以提高处理机的利用率。 产生“抖动”的原因 发生“抖动”的根本原因是同时在系统中运行的进程太多由此分配给每一个进程的物理块太少不能满足进程正常运行的基本要求致使每个进程在运行时频繁地出现缺页必须请求系统将所缺之页调入内存。 这会使得在系统中排队等待页面调进/调出的进程数目增加。 显然对磁盘的有效访问时间也随之急剧增加造成每个进程的大部分时间都用于页面的换进/换出而几乎不能再去做任何有效的工作从而导致发生处理机的利用率急剧下降并趋于0的情况称此时的进程是处于“抖动”状态。 4.2 工作集
工作集的基本概念 进程发生缺页率的时间间隔与进程所获得的物理块数有关。 关于工作集的理论是1968年由Denning提出并推广的。 Denning认为基于程序运行时的局部性原理得知程序在运行期间对页面的访问是不均匀的在一段时间内仅局限于较少的页面在另一段时间内又可能仅局限于对另一些较少的页面进行访问。 这些面被称为活跃页面。如果能够预知程序在某段时间间隔内要访问哪些页面并将它们内存将会大大降低缺页率从而可显著地提高处理机的利用率。 工作集的定义 工作集指在某段时间间隔Δ里进程实际所要访问页面的集合。 Denning指出虽然程序只需要少量的几页在内存便可运行但为了较少地产生缺页应将程序的全部工作集装入内存中。 然而我们无法事先预知程序在不同时刻将访问哪些页面故仍只有像置换算法那样用程序的过去某段时间内的行为作为程序在将来某段时间内行为的近似。 4.3 “抖动”的预防方法
采取局部置换策略 在页面分配和置换策略中如果采取的是可变分配方式则为了预防发生“抖动”可采取局部置换策略。 根据这种策略当某进程发生缺页时只能在分配给自己的内存空间内进行置换不允许从其它进程去获得新的物理块。 这样即使该进程发生了“抖动”也不会对其它进程产生影响于是可把该进程“抖动”所造成的影响限制在较小的范围内。 该方法虽然简单易行但效果不是很好因为在某进程发生“抖动”后它还会长期处在磁盘IO的等待队列中使队列的长度增加这会延长其它进程缺页中断的处理时间也就是延长了其它进程对磁盘的访问时间。
把工作集算法融入到处理机调度中 当调度程序发现处理机利用率低下时它将试图从外存调入一个新作业进入内存改善处理机的利用率。 如果在调度中融入了工作集算法则在调度程序从外存调入作业之前必须先检查每个进程在内存的驻留页面是否足够多。 如果都已足够多此时便可以从外存调入新的作业不会因新作业的调入而导致缺页率的增加反之如果有些进程的内存页面不足则应首先为那些缺页率居高的作业增加新的物理块此时将不再调入新的作业。
利用“LS”准则调节缺页率 Denning于1980年提出了LS的准则来调节多道程序度其中L是缺页之间的平均时间S是平均缺页服务时间即用于置换一个页面所需的时间。 如果是L远比S大说明很少发生缺页磁盘的能力尚未得到充分的利用反之如果是L比S小则说明频繁发生缺页缺页的速度已超过磁盘的处理能力。只有当L与S接近时磁盘和处理机都可达到它们的最大利用率。 理论和实践都已证明利用LS准则对于调节缺页率是十分有效的
选择暂停的进程 当多道程序度偏高时已影响到处理机的利用率为了防止发生“抖动”系统必须减少多道程序的数目。 此时应基于某种原则选择暂停某些当前活动的进程将它们调出到磁盘上以便把腾出的内存空间分配给缺页率发生偏高的进程。 系统通常都是采取与调度程序一致的策略即首先选择暂停优先级最低的进程若需要再选择优先级较低的进程当内存还显拥挤时还可进一步选择暂停一个并不十分重要、但却较大的进程以便能释放出较多的物理块或者暂停剩余执行时间最多的进程等。 5. 请求分段存储管理方式
5.1 请求分段中的硬件支持 为了实现请求分段式存储管理应在系统中配置多种硬件机构以支持快速地完成请求分段功能。与请求分页系统相似在请求分段系统中所需的硬件支持有段表机制、缺段中断机构以及地址变换机构。 请求段表机制 在请求分段式管理中所需的主要数据结构是请求段表。在该表中除了具有请求分页机制中有的访问字段A、修改位M、存在位P和外存始址四个字段外还增加了存取方式字段和增补位。这些字段供程序在调进、调出时参考。 缺段中断机构 在请求分段系统中采用的是请求调段策略。 每当发现运行进程所要访问的段尚未调入内存时便由缺段中断机构产生一缺段中断信号进入OS后由缺段中断处理程序将所需的段调入内存。 与缺页中断机构类似缺段中断机构同样需要在一条指令的执行期间产生和处理中断以及在一条指令执行期间可能产生多次缺段中断。 但由于分段是信息的逻辑单位因而不可能出现一条指令被分割在两个分段中和一组信息被分割在两个分段中的情况。
地址变换机构 请求分段系统中的地址变换机构是在分段系统地址变换机构的基础上形成的。 因为被访问的段并非全在内存所以在地址变换时若发现所要访问的段不在内存必须先将所缺的段调入内存并修改段表然后才能再利用段表进行地址变换。 为此在地址变换机构中又增加了某些功能如缺段中断的请求及处理等。 5.2 分段的共享与保护
共享段表
为了实现分段共享可在系统中配置一张共享段表所有各共享段都在共享段表中占有一表项。
在表项的上面记录了共享段的段号、段长、内存始址、状态(存在)位、外存始址以及共享计数等信息。接下去就是记录了共享此分段的每个进程的情况。 共享进程计数count。 非共享段仅为一个进程所需要。当进程不再需要该段时可立即释放该段并由系统回收该段所占用的空间。而共享段是为多个进程所需要的为记录有多少进程正在共享该分段,须设置共享进程计数count。当某进程不再需要而释放它时系统并不立即回收该段所占内存区而是检查count是否为0若不是0则表示还有进程需要它仅当所有共享该段的进程全都不再需要它时此时count为0才由系统回收该段所占内存区。 存取控制字段。 对于一个共享段应为不同的进程赋予不同的存取权限。例如对于文件主通常允许他读和写;而对其它进程则可能只允许读甚至只允许执行。 段号。 对于一个共享段在不同的进程中可以具有不同的段号每个进程可用自已进程的段号去访问该共享段。 共享段的分配 共享段的分配由于共享段是供多个进程所共享的因此对共享段的内存分配方法与非共享段的内存分配方法有所不同。 在为共享段分配内存时对第一个请求使用该共享段的进程由系统为该共享段分配一物理区再把共享段调入该区同时将该区的始址填入请求进程的段表的相应项中还须在共享段表中增加一表项填写请求使用该共享段的进程名、段号和存取控制等有关数据把count置为1。 当又有其它进程需要调用该共享段时由于该共享段已被调入内存故此时无须再为该段分配内存而只需在调用进程的段表中增加一表项填写该共享段的物理地址。 在共享段的段表中增加一个表项填上调用进程的进程名、该共享段在本进程中的段号、存取控制等再执行countcount1操作以表明有两个进程共享该段。 以后凡有进程需要访问此共享段的都按上还方式在共享段的段表中增加一个表项。 共享段的回收 当共享此段的某进程不再需要该段时应将该段释放包括撤消在该进程段表中共享段所对应的表项以及执行countcount-1操作。 若结果为0则须由系统回收该共享段的物理内存以及取消在共享段表中该段所对应的表项表明此时已没有进程使用该段否则(减1结果不为0)只是取消调用者进程在共享段表中的有关记录。 分段保护 越界检查。 越界检查是利用地址变换机构来完成的。 在地址变换机构中设置了段表寄存器用于存放段表始址和段表长度信息。 在进行地址变换时首先将逻辑地址空间的段号与段表长度进行比较如果段号等于或大于段表长度将发出地址越界中断信号。 此外还在段表中为每个段设置有段长字段在进行地址变换时还要检查段内地址是否等于或大于段长若大于段长将产生地址越界中断信号从而保证了每个进程只能在自己的地址空间内运行。 存取控制检查。 存取控制检查是以段为基本单位进行的。 在段表的每个表项中都设置了一个“存取控制”字段用于规定对该段的访问方式。 通常的访问方式有: 只读即只允许进程对该段中的程序或数据进行读访问: 只执行即只允许进程调用该段去执行但不准读该段的内容更不允许对该目执行写操作: 读/写即允许进程对该段进行读/写访问。 对于共享段面言存取控制就显得尤为重要因而对不同的进程应赋予不同的读写权限。 这时既要保证信息的安全性又要满足运行需要。 例如对于一个企业的财务账目应该只允许会计人员进行读或写允许领导及有关人员去读。而对于一般人员则既不准读更不能写。值得一提的是这里所介绍的存取控制检查是基于硬件实现的它能较好地保证信息的安全因为攻击者很难对存取控制字段进行修改。 环保护机构。 这是一种功能较完善的保护机制。在该机制中规定低编号的环具有高优先权。 OS核心处于0号环内某些重要的实用程序和操作系统服务占居中间环而一般的应用程序则被安排在外环上。 在环系统中程序的访问和遇用应道循以下规则 一个程序可以访问驻留在相同环或较低特权环(外环)中的数据 一个程序可以调用驻留在相同环或较高特权环(内环)中的服务。 6. 补充 常规存储器管理方式具有哪两大特征? 它对系统性能有何影响? 常规存储器管理方式具有两大特征即一次性和驻留性。这两个特征对系统性能产生了显著的影响。 两大特征 一次性指作业或进程必须一次性全部装入内存后才能开始运行。这意味着在程序执行之前所有需要的代码和数据都必须被加载到内存中。 驻留性指在作业或进程装入内存后会一直保持驻留在内存中直到作业或进程结束。这意味着即使某些程序或数据在程序运行过程中暂时不需要它们也会继续占用内存空间。 对系统性能的影响 内存资源浪费 由于一次性特征如果程序很大而可用内存不足以容纳整个程序那么程序将无法运行。这会导致内存资源的浪费因为即使程序的部分代码或数据在运行时并不需要也必须全部加载到内存中。 由于驻留性特征一些在程序运行过程中暂时不需要的程序或数据会继续占用内存空间而一些需要运行的作业又无法再装进运行这同样会导致内存资源的浪费。 系统性能下降 当内存资源被大量占用时系统的整体性能可能会受到影响。例如如果内存不足系统可能会频繁地进行磁盘I/O操作以交换内存中的数据这会导致程序运行速度的下降。 同时由于内存资源的浪费系统可能无法同时运行多个程序或进程这也会限制系统的并发性和多任务处理能力。 综上所述常规存储器管理方式的一次性和驻留性特征虽然简化了内存管理的复杂性但也带来了内存资源浪费和系统性能下降的问题。因此在现代操作系统中通常采用更加灵活的存储器管理方式如虚拟内存、分页存储管理等以更好地利用内存资源并提高系统性能。 什么是程序运行时的时间局限性和空间局限性? 程序运行时的时间局限性和空间局限性是计算机科学中的两个重要概念它们描述了程序在执行过程中访问指令和存储单元的特性。 时间局限性 时间局限性指的是如果程序中的某条指令被执行那么在不久的将来该指令可能会再次被执行。同样地如果某个存储单元被访问那么在不久的将来该存储单元也可能再次被访问。这种重复访问的特性通常是由于程序中存在大量的循环操作所导致的。在循环结构中某些指令或存储单元会被反复执行或访问因此它们具有较高的时间局部性。 空间局限性 空间局限性则是指一旦程序访问了某个存储单元那么在不久的将来其附近的存储单元也可能被访问。这意味着程序在一段时间内所访问的地址可能会集中在一定的范围内。这种特性通常是由于程序的顺序执行所导致的。在顺序执行的过程中程序往往会按照一定的顺序访问存储单元因此相邻的存储单元具有较高的空间局部性。 影响与意义 时间局限性和空间局限性对于程序设计和优化具有重要意义。了解这些特性可以帮助我们更好地设计存储结构和算法以提高程序的执行效率和性能。例如在缓存设计中可以利用时间局部性和空间局部性来预测哪些数据或指令可能会被频繁访问并将它们存储在缓存中以提高访问速度。此外在操作系统中的虚拟内存管理中页面置换算法也考虑了时间局限性和空间局限性以决定哪些页面应该被保留在内存中哪些页面应该被置换出去。 综上所述程序运行时的时间局限性和空间局限性是描述程序访问指令和存储单元特性的重要概念。它们对于程序设计和优化具有重要意义可以帮助我们更好地利用存储资源和提高程序的执行效率。 虚拟存储器有哪些特征? 其中最本质的特征是什么? 虚拟存储器具有多个显著特征这些特征共同定义了其功能和性能。以下是虚拟存储器的主要特征及其最本质特征的探讨 虚拟存储器的特征 虚拟性 虚拟性是指虚拟存储器能够从逻辑上扩充内存容量使用户所看到的内存容量远大于实际的物理内存容量。 这是虚拟存储器所表现出的最重要的特征也是其设计的主要目标之一。 离散性 离散性是指内存分配时采用离散分配的方式即内存空间被划分为多个小的、独立的存储单元如页或段这些单元可以独立地被分配和释放。 离散分配方式避免了连续分配方式可能导致的内存碎片问题提高了内存的利用率。 多次性 多次性是指一个作业或进程可以被分成多次调入内存运行。 在程序运行时只将当前需要运行的那部分程序和数据装入内存以后再需要时再从外存调入。 这种多次性特征使得程序可以更加灵活地利用内存资源提高了系统的并发性和多任务处理能力。 对换性 对换性是指允许在作业或进程运行过程中进行内存和外存之间的数据交换。 当内存中的某些页面或段暂时不需要时可以将它们换出到外存中以释放内存空间给其他需要的作业或进程。 当需要这些页面或段时再从外存中调入内存。 最本质的特征 关于虚拟存储器最本质的特征存在不同的观点。一种观点认为离散性是虚拟存储器最本质的特征因为离散分配方式使得内存空间可以被更加灵活地利用避免了连续分配方式可能导致的内存碎片问题。另一种观点则认为虚拟性是虚拟存储器最本质的特征因为虚拟性使得用户能够看到一个比实际物理内存容量大得多的逻辑内存空间从而提高了系统的灵活性和可扩展性。 从虚拟存储器的定义和功能来看虚拟性确实是一个非常重要的特征。它使得系统能够为用户提供更大的内存空间而无需增加实际的物理内存。然而离散性也是虚拟存储器实现的基础之一没有离散性就不可能实现虚拟存储器。因此可以说虚拟性和离散性都是虚拟存储器的重要特征而其中最本质的特征可能取决于具体的定义和视角。 综上所述虚拟存储器具有虚拟性、离散性、多次性和对换性等特征。这些特征共同定义了虚拟存储器的功能和性能并使得虚拟存储器成为现代操作系统中不可或缺的一部分。 实现虚拟存储器需要哪些硬件支持? 实现虚拟存储器需要以下硬件支持 足够容量的外存 外存如硬盘、SSD等是虚拟存储器的重要组成部分用于存放当前未调入内存的程序和数据。 当需要时可以从外存中调入数据到内存以满足程序的运行需求。 一定容量的内存 内存是程序运行时的主要存储空间用于存放当前正在执行的程序和数据。 在虚拟存储器系统中内存需要能够容纳一部分程序和数据以便程序能够正常运行。 地址变换机构 地址变换机构是实现虚拟存储器中的虚拟地址到物理地址映射的关键硬件。 它负责将程序中的虚拟地址转换为实际的物理地址以便从内存中正确地读取或写入数据。 在现代计算机系统中地址变换机构通常通过页表或段表等数据结构来实现。 请求分页/分段系统 请求分页/分段系统是实现虚拟存储器的软件部分但也需要硬件的支持。 在请求分页系统中硬件需要提供页表机制、缺页中断机制和地址变换机构等。 在请求分段系统中硬件则需要提供段表机制、缺段中断机制和地址变换机构等。 综上所述实现虚拟存储器需要足够容量的外存、一定容量的内存、地址变换机构以及请求分页/分段系统的硬件支持。这些硬件支持共同构成了虚拟存储器的基础使得系统能够为用户提供更大的内存空间提高系统的灵活性和可扩展性。 实现虚拟存储器需要哪几个关键技术? 实现虚拟存储器需要以下几个关键技术 分页技术 分页技术是将物理内存和虚拟内存划分为固定大小的页或称为块。程序在执行时只需将当前需要运行的页调入内存其余页则保留在外存中。 分页技术使得程序可以在不需要全部加载到内存中的情况下运行从而提高了内存的利用率。 页面置换算法 页面置换算法用于在内存不足时决定哪些页需要从内存中置换出去以便为新的页腾出空间。 常见的页面置换算法包括FIFO先进先出、LRU最近最少使用、LFU最不经常使用和Clock算法等。 页面置换算法的选择对系统的性能有很大影响需要根据具体的应用场景进行选择。 页面映射 页面映射技术用于建立虚拟地址与物理地址之间的映射关系。 在程序运行时CPU会产生虚拟地址页面映射机制将这些虚拟地址转换为物理地址以便程序能够正确地访问内存。 页面映射通常通过页表来实现页表是一个数据结构它记录了每个虚拟页面对应的物理页面地址。 内存保护 内存保护技术用于保护不同进程的内存空间防止进程间的干扰。 通过设置页面属性、用户权限等方式可以确保每个进程只能访问其自己的内存空间而不能访问其他进程的内存空间。 内存保护技术有助于提高系统的安全性和稳定性。 页面共享 页面共享技术允许多个进程共享同一个物理内存页。 通过页面共享可以减少内存开销提高内存的利用率。 页面共享技术特别适用于需要运行多个相同或相似程序的场景。 缺页中断处理 当CPU访问的页面不在物理内存中时会触发缺页中断。 缺页中断处理程序负责从外存中调入所需的页面到内存中并更新页表。 缺页中断处理是实现虚拟存储器不可或缺的一部分它确保了程序在需要时能够访问到所需的页面。 综上所述实现虚拟存储器需要分页技术、页面置换算法、页面映射、内存保护、页面共享以及缺页中断处理等关键技术。这些技术共同构成了虚拟存储器的基础使得系统能够为用户提供更大的内存空间提高系统的灵活性和可扩展性。 在请求分页系统中页表应包括哪些数据项? 每项的作用是什么? 在请求分页系统中页表是内存管理的重要数据结构用于记录虚拟页面对应的物理页面信息。页表通常包含以下数据项每项都有其特定的作用 页号 页号用于标识虚拟内存中的页面。 在页表中页号是唯一的用于区分不同的虚拟页面。 物理块号或页框号 物理块号用于标识物理内存中的页面或块。 它与页号相对应表示虚拟页面在物理内存中的位置。 状态位P 状态位P用于指示该页是否已调入内存。 当P1时表示该页已调入内存当P0时表示该页未调入内存需要从外存中调入。 状态位P为系统提供了页面是否存在的信息有助于系统快速定位页面。 访问字段A 访问字段A用于记录本页在一段时间内被访问的次数或记录本页最近已有多长时间未被访问。 这个字段供选择换出页面时参考有助于系统实现页面置换算法如LRU算法。 修改位M 修改位M表示该页在调入内存后是否被修改过。 当M1时表示该页已被修改当M0时表示该页未被修改。 修改位M在置换页面时非常重要因为如果页面被修改过在置换时需要将其写回外存以保证外存中所保留的始终是最新副本。 外存地址 外存地址用于指出该页在外存上的地址。 当页面未调入内存时系统可以根据外存地址从外存中调入该页。 外存地址是页面调入和置换过程中的重要参考信息。 综上所述页表中的这些数据项共同构成了虚拟存储器的基础使得系统能够高效地管理内存提高内存的利用率和系统的性能。每个数据项都有其特定的作用共同支持着请求分页系统的正常运行。 试比较缺页中断机构与一般的中断它们之间有何明显的区别? 缺页中断与一般的中断在计算机系统中有明显的区别。以下是对这两者的详细比较 一、定义与产生时机 缺页中断 在请求分页系统中每当所要访问的页面不在内存时便产生一缺页中断。 缺页中断是在指令执行期间发现所要访问的指令或数据不在内存时产生和处理的。也就是说它可能在一条指令执行的过程中多次发生如指令跨越多个页面且这些页面都不在内存时。 一般中断 一般中断是指计算机运行过程中出现某些意外情况需主机干预时机器能自动停止正在运行的程序并转入处理新情况的程序。 一般中断通常是在一条指令执行完毕后当硬件中断装置发现有中断请求时才去响应与处理。 二、处理过程与结果 缺页中断 缺页中断处理时除了需要保护现场之外还需要判断内存中是否有足够的空间存储所需的页然后再把所需页调进来使用。 处理完毕后由于原指令尚未执行完因为所需页面之前不在内存所以返回到原指令去重新执行。 一般中断 一般中断处理时主要任务是保护现场、分析中断原因、执行相应的中断处理程序。 处理完毕后返回到被中断进程的下一条指令去执行因为上一条指令已经执行完毕或者根据系统需要重新调度去执行别的进程程序。 三、特殊性与影响 缺页中断 缺页中断是一种特殊的中断因为它与内存管理紧密相关是虚拟存储器实现的关键机制之一。 频繁的缺页中断可能会导致系统性能下降因为每次缺页都需要从外存中调入页面这会增加I/O操作的次数和时间。 一般中断 一般中断是计算机系统中常见的现象用于处理各种异常情况或外部事件。 一般中断对系统性能的影响取决于中断的类型和频率以及中断处理程序的复杂性和执行时间。 综上所述缺页中断与一般的中断在定义与产生时机、处理过程与结果以及特殊性与影响等方面都存在明显的区别。这些区别使得缺页中断成为虚拟存储器实现中的关键机制而一般中断则是计算机系统中处理异常情况或外部事件的重要手段。 试说明请求分页系统中的地址变换过程。 请求分页系统中的地址变换过程涉及将程序的逻辑地址或称为虚拟地址转换为物理地址以便CPU能够正确地访问内存。以下是该过程的详细步骤 分解逻辑地址 首先系统需要将程序的逻辑地址分解为页号P和页内偏移量w。逻辑地址通常由两部分组成高位的页号和低位的页内偏移量。 查找页表 接着系统使用页号作为索引在页表中查找对应的页表项。页表是一个数据结构它记录了每个逻辑页面在物理内存中的位置即物理块号以及其他相关信息。 检查中断位 在找到对应的页表项后系统需要检查该页的中断位也称为存在位或有效位。如果中断位为1表示该页已在内存中可以继续进行下一步的地址变换。如果中断位为0表示该页不在内存中此时会产生缺页中断系统需要暂停当前进程从外存中调入所需的页面并更新页表。 更新页表项如适用 如果产生了缺页中断并成功调入了页面系统需要更新页表项中的相关信息如物理块号、访问位、修改位等。 计算物理地址 在确认页面已在内存中后系统可以使用页表项中的物理块号和页内偏移量来计算物理地址。物理地址的计算公式通常为物理地址 物理块号 × 页面大小 页内偏移量。 可选快表查找 在一些现代计算机系统中为了提高地址变换的速度通常会设置一个快表也称为TLB或转换后备缓冲器。快表是一个小型的缓存用于存储最近访问过的页表项。在进行地址变换时系统可以先尝试在快表中查找对应的页表项。如果找到则可以直接使用快表中的信息进行地址变换而无需访问主存中的页表。这样可以大大减少访问主存的次数提高系统的性能。 综上所述请求分页系统中的地址变换过程是一个复杂而关键的过程它涉及多个步骤和组件的协同工作。通过这个过程系统能够将程序的逻辑地址转换为物理地址从而实现虚拟存储器的功能。 何谓固定分配局部置换和可变分配全局置换的内存分配策略? 固定分配局部置换和可变分配全局置换是内存分配策略中的两种重要方式它们各自具有不同的特点和应用场景。 固定分配局部置换 定义 固定分配是指为每个进程分配一组固定数目的物理块或称为页面框在进程运行期间这些物理块的数量不再改变。 局部置换是指如果进程在运行中发现缺页即所需的页面不在内存中则只能从分配给该进程的这些物理块中选出一页换出即移出内存然后再调入一页以保证分配给该进程的内存空间总量不变。 特点 优点实现相对简单因为物理块的数量是固定的不需要动态调整。 缺点难以确定每个进程应分配多少物理块。如果分配的物理块太少可能导致频繁的缺页中断和性能下降如果分配的物理块太多则可能浪费内存资源。 应用场景 适用于对内存需求相对稳定、变化不大的进程。 可变分配全局置换 定义 可变分配是指先为每个进程分配一定数目的物理块在进程运行期间这些物理块的数量可以根据情况做适当的增加或减少。 全局置换是指如果进程在运行中发现缺页则从操作系统OS所保留的空闲物理块队列中取出一块分配给该进程或者以所有进程的全部物理块为标的选择一块换出即选择一个进程的一个页面移出内存然后将所缺之页调入。 特点 优点能够根据进程的实际需求动态调整物理块的数量提高了内存的利用率和系统的灵活性。 缺点实现相对复杂需要维护一个空闲物理块队列并在缺页时执行全局置换算法。此外全局置换可能导致某些进程的物理块数量减少进而增加其缺页率。 应用场景 适用于对内存需求变化较大的进程或者需要高效利用内存资源的系统。 综上所述固定分配局部置换和可变分配全局置换是两种不同的内存分配策略它们各自具有优缺点和适用的场景。在实际应用中需要根据系统的具体需求和进程的特点来选择合适的策略。 在请求分页系统中应从何处将所需页面调入内存? 在请求分页系统中当发生缺页中断时系统需要从某个位置将所需的页面调入内存。具体应从何处调入取决于系统的具体情况和配置。以下是几种可能的来源 对换区或称为交换区 当系统拥有足够的对换区空间时可以优先从对换区调入所需页面。这是因为对换区通常采用连续分配方式磁盘I/O速度相对较高可以加快页面的调入速度。 在进程运行前可以将与该进程有关的文件从文件区拷贝到对换区以便在需要时快速调入。 对于曾经运行过但被换出的页面如果它们被保存在对换区中那么下次需要时可以从对换区直接调入。 文件区 当系统缺少足够的对换区空间时或者某些页面未被修改过即修改位为0可以直接从文件区调入所需页面。 文件区通常采用离散分配方式磁盘I/O速度可能相对较低但仍然是页面调入的一个重要来源。 对于那些不会被修改的文件页面或者已经被换出且未被修改过的页面可以直接从文件区调入。 UNIX系统特有的方式 在UNIX系统中如果某进程请求的页面有可能已调入内存例如通过页面共享机制则可以直接使用而不再调入。 对于未运行过的页面通常从文件区调入。 对于曾经运行过但被换出的页面如果它们被保存在对换区中则下次需要时从对换区调入如果它们未被保存在对换区中但仍在文件区中则从文件区调入。 综上所述在请求分页系统中所需页面的调入来源可以是对换区、文件区或者在UNIX系统中已调入内存的共享页面。具体选择哪个来源取决于系统的配置、页面的修改状态以及页面的使用情况。 试说明在请求分页系统中页面的调入过程。 在请求分页系统中页面的调入过程是一个关键步骤它确保了当程序需要访问某个不在内存中的页面时系统能够自动地从外存中调入该页面。以下是该过程的详细说明 一、缺页中断的产生 当程序试图访问一个不在内存中的页面时硬件会检测到这一错误并向CPU发出一个缺页中断。 CPU响应缺页中断并暂停当前程序的执行同时保存当前的环境如寄存器内容、程序计数器等以便在调入页面后能够继续执行。 二、缺页中断的处理 保护CPU环境中断处理程序首先会保护CPU的当前环境防止在处理缺页中断时破坏程序的执行状态。 分析中断原因接着中断处理程序会分析缺页中断的原因确认是由于页面未调入内存导致的。 转入缺页中断处理程序一旦确认是缺页中断系统会转入专门的缺页中断处理程序来处理这一事件。 三、页面的调入 查找页表缺页中断处理程序会查找页表确定缺页的页号并获取该页在外存上的物理块号或地址。 检查内存状态 如果此时内存有足够的空闲空间来容纳新页面系统会直接启动磁盘I/O操作将所缺页面从外存调入内存。 如果内存已满系统则需要按照某种置换算法如LRU、FIFO等从内存中选出一页准备换出。 页面置换 如果被选中的页面未被修改过即修改位为0则可以直接将该页面从内存中移除无需写回外存。 如果被选中的页面已被修改过即修改位为1则必须先将该页面写回外存以更新外存中的数据。 调入新页面 在成功置换出旧页面如果需要的话后系统会启动磁盘I/O操作将所缺页面从外存调入内存并更新页表中的相应表项。 将新页面的物理块号写入页表。 将新页面的存在位设置为1表示该页面已调入内存。 如果系统有快表TLB还需要更新快表中的相应表项。 四、恢复程序执行 在成功调入新页面后系统会利用修改后的页表形成所要访问的物理地址并恢复之前保存的CPU环境。 然后系统会继续执行之前被暂停的程序从产生缺页中断的下一条指令开始执行。 整个页面的调入过程对用户是透明的用户无需关心页面是如何被调入内存的。系统通过缺页中断和页面置换等机制确保了程序的连续执行和内存的有效利用。 在请求分页系统中常采用哪几种页面置换算法? 在请求分页系统中常用的页面置换算法主要有以下几种 最佳OptimalOPT置换算法 原理选择在将来最长时间内不再被访问的页面淘汰出去。 优点可保证获得最低的缺页中断率是一种理想化的置换算法性能最好。 缺点要求操作系统能知道进程“将来”页面的使用情况但这是不可能实现的因为程序的执行是不可预测的。 先进先出First In First OutFIFO置换算法 原理总是淘汰最先进入内存的页面。该算法实现简单只需把一个进程已调入内存的页面按先后次序链接成一个队列并设置一个指针称为替换指针使它总是指向最老页面。 优点实现简单。 缺点与进程实际运行的规律不相适应没有考虑到动态变化情况。对于某一特定的页面走向先进先出算法会出现缺页中断率随着被分配的内存块增加反而上升的反常现象即Belady现象。 最近最久未使用Least Recently UsedLRU置换算法 原理选择最近的过去中最久未访问的页面淘汰出去。 优点考虑了页面调入内存后的使用情况具有较好的性能。 缺点要快速地找出最近最久未被使用的页面需要花费巨大的系统开销往往需要较多的硬件支持。因此在实际系统中往往使用其近似算法。 CLOCK置换算法 原理也被称为最近未使用Not Recently UsedNUR置换算法是LRU算法的近似算法。它根据访问位和修改位的检查结果按照特定的顺序如未被访问且未被修改、未被访问但被修改、已被访问但未被修改、已被访问且被修改淘汰页面。 优点实现相对简单且能够在一定程度上模拟LRU算法的行为。 缺点性能略低于LRU算法但通常优于FIFO算法。 综上所述这些页面置换算法各有优缺点适用于不同的应用场景。在实际系统中需要根据具体需求和资源情况选择合适的算法。 实现LRU算法所需的硬件支持是什么? 实现LRULeast Recently Used算法所需的硬件支持主要包括寄存器和栈或类似的硬件结构。以下是详细的解释 寄存器 寄存器在LRU算法中用于记录某进程在内存中各页的使用情况。具体来说寄存器可以保存页面的访问时间戳或某种形式的“最近使用”标记。 当进程访问某个页面时系统会更新该页面在寄存器中的时间戳或标记以反映其最近的使用情况。 寄存器具有较快的访问速度能够高效地支持LRU算法的实现。 栈 栈在LRU算法中用于保存当前使用的各个页面的页面号。栈的特点是后进先出LIFO这与LRU算法的思想在某种程度上是相似的因为最近使用的页面往往会被频繁访问并因此而被保留在栈顶。 当进程访问某个页面时如果该页面不在栈中则将其页面号压入栈顶如果页面已在栈中则将其从栈中移除并重新压入栈顶以更新其“最近使用”的标记。 当需要置换页面时可以从栈底即最久未使用的页面选择页面进行置换。 需要注意的是虽然栈在概念上与LRU算法有一定的契合度但在实际实现中由于栈的操作如压栈、弹栈相对简单而LRU算法需要更复杂的访问历史记录和比较操作因此通常不会直接使用栈来实现LRU算法。相反更常见的是使用数组、链表或哈希表等数据结构来模拟LRU算法的行为。 此外现代计算机系统中还可能采用专门的硬件结构如LRU缓存标签来支持LRU算法的实现以提高算法的性能和效率。这些硬件结构通常与处理器的缓存系统紧密结合能够快速地识别并置换最久未使用的缓存行。 综上所述实现LRU算法所需的硬件支持主要包括寄存器和栈或类似的硬件结构但具体实现方式可能因系统架构和性能需求而有所不同。 试说明改进型Clock置换算法的基本原理。 改进型Clock置换算法的基本原理是在传统的Clock置换算法基础上增加了一个考虑因素——置换代价。具体来说它引入了一个修改位M位用于指示页面是否被修改过。在选择淘汰页面时改进型Clock算法会优先考虑那些既未使用过又未被修改过的页面因为这些页面在置换出内存时不需要写回磁盘从而降低了置换代价。 以下是改进型Clock置换算法的基本步骤 初始化 为每个页面设置一个访问位A位和一个修改位M位。 访问位A位用于记录页面是否被访问过每次访问页面时将其置为1。 修改位M位用于记录页面是否被修改过如果页面被修改过则置为1否则为0。 循环扫描 从一个起始位置开始循环扫描内存中的页面。 在每次扫描过程中根据页面的A位和M位来判断是否满足置换条件。 选择淘汰页面 首选淘汰页面寻找A0且M0的页面即最近既未被访问又未被修改的页面。这样的页面是最佳淘汰页因为它们在置换出内存时不需要写回磁盘。 次选淘汰页面如果找不到A0且M0的页面则寻找A0且M1的页面即最近未被访问但被修改过的页面。这样的页面虽然不是最佳淘汰页但在必要时也可以被置换出内存。在置换出之前需要将其内容写回磁盘。 更新访问位 在每次成功置换页面后需要将新调入的页面访问位A置为1表示该页面已被访问过。 同时将扫描过的所有页面的访问位A都置为0这一步在首次扫描时可能不执行具体取决于算法的实现。 重复扫描 如果在一次扫描过程中没有找到合适的淘汰页面则继续从起始位置开始重复扫描直到找到满足条件的页面为止。 置换页面 一旦找到满足条件的淘汰页面就将其内容置换出内存并将新调入的页面写入内存中的相应位置。 更新修改位 如果新调入的页面是从磁盘中读取的并且其内容在内存中发生了修改则需要将其修改位M置为1。 通过引入修改位M并考虑置换代价改进型Clock置换算法能够在保证较低缺页率的同时减少页面置换时的磁盘I/O操作从而提高系统的整体性能。 影响页面换进换出效率的若干因素是什么? 影响页面换进换出效率的因素主要包括以下几个方面 页面置换算法 页面置换算法是影响页面换进换出效率的最重要因素。不同的置换算法会导致不同的缺页率和页面置换开销。 常见的置换算法如LRU最近最少使用、FIFO先进先出、OPT最佳以及Clock算法等它们各有优缺点适用于不同的应用场景。 LRU算法通常能够获得较低的缺页率但实现起来较为复杂需要额外的硬件支持。FIFO算法实现简单但可能导致较高的缺页率。OPT算法理论上最优但无法实现因为它需要预知未来的页面访问情况。Clock算法则是一种折中的选择它结合了LRU和FIFO的特点实现相对简单且性能较好。 写回磁盘的频率 写回磁盘的频率也是影响页面换进换出效率的重要因素。如果每次页面被置换出内存时都立即写回磁盘那么磁盘I/O操作的次数将非常频繁从而增加页面置换的开销。 为了减少磁盘I/O操作的次数可以在系统中建立一个已修改换出页面链表。当页面被置换出内存时如果它已被修改过则将其挂在链表上而不是立即写回磁盘。只有当链表中的页面数量达到一定值时再将它们一起写回到磁盘上。这样可以显著减少磁盘I/O操作的次数提高页面换进换出的效率。 读入内存的频率 读入内存的频率同样对页面换进换出效率有重要影响。如果频繁地从磁盘中读取页面到内存中那么磁盘I/O操作的次数也会相应增加从而降低页面换进换出的效率。 为了减少读入内存的频率可以利用已修改换出页面链表中的页面。当需要访问某个页面时如果它已经在链表中存在那么可以直接从链表中获取而不需要从磁盘中读取。这样可以减少磁盘I/O操作的次数提高页面换进的效率。 页面大小 页面大小也会影响页面换进换出的效率。较大的页面可以减少页面置换的次数因为每次置换可以覆盖更多的数据。但是较大的页面也可能导致更高的内部碎片率因为不是所有的页面都能被完全填满。 因此在选择页面大小时需要权衡利弊根据具体的应用场景和系统需求来确定合适的页面大小。 进程所分配的物理块的数目 进程所分配的物理块的数目也会影响页面换进换出的效率。如果分配给进程的物理块数目较少那么进程在运行过程中更容易发生缺页中断从而增加页面置换的频率和开销。 相反如果分配给进程的物理块数目较多那么进程在运行过程中发生缺页中断的概率就会降低页面置换的频率和开销也会相应减少。但是过多的物理块分配也可能导致内存资源的浪费和内部碎片的增加。 程序固有特性 程序的固有特性也会对页面换进换出的效率产生影响。例如如果程序具有局部性原理即程序在一段时间内通常只访问一个局部区域内的数据那么页面置换的频率和开销就会相对较低。 相反如果程序的数据访问模式比较随机或不规则那么页面置换的频率和开销就会相对较高。 综上所述影响页面换进换出效率的因素是多方面的包括页面置换算法、写回磁盘的频率、读入内存的频率、页面大小、进程所分配的物理块的数目以及程序的固有特性等。在实际应用中需要根据具体的应用场景和系统需求来综合考虑这些因素并采取相应的优化措施来提高页面换进换出的效率。 页面缓冲算法的主要特点是什么? 它是如何降低页面换进、换出的频率的? 页面缓冲算法Page Buffering Algorithm的主要特点及其降低页面换进、换出频率的机制可以归纳如下 主要特点 显著降低页面换进、换出频率页面缓冲算法通过优化页面置换策略显著减少了页面在内存和磁盘之间的频繁交换从而降低了系统开销。 减少磁盘I/O操作次数由于页面换进、换出频率的降低磁盘I/O操作的次数也相应减少这有助于提高系统的整体性能。 采用简单置换策略由于页面缓冲算法能够显著降低页面置换的开销因此可以采用较为简单的置换策略如先进先出FIFO算法等这些策略实现起来相对简单且不需要特殊硬件的支持。 优化内存分配策略页面缓冲算法通常与可变分配和局部置换策略相结合以更好地管理内存资源并降低页面置换的频率。 降低页面换进、换出频率的机制 空闲页面链表 页面缓冲算法在内存中设置了一个空闲页面链表用于管理空闲的物理块。 当有进程发生缺页时系统可以从空闲页面链表中分配一个物理块给该进程。 如果某个页面需要被置换出内存但尚未被修改则可以将该页面所在的物理块重新挂回空闲页面链表的末尾以便后续再次使用。 修改页面链表 页面缓冲算法还设置了一个修改页面链表用于管理已被修改但尚未写回磁盘的页面。 当一个页面被修改后它会被加入到修改页面链表中。 系统会定期或根据需要将修改页面链表中的页面写回磁盘从而降低已修改页面被频繁置换出内存并写回磁盘的开销。 页面置换策略 页面缓冲算法采用各种页面置换策略来优化页面置换过程。 这些策略包括但不限于先进先出FIFO、最近最少使用LRU、最不常用LFU等。 通过选择合适的页面置换策略系统可以更有效地管理内存资源并降低页面置换的频率。 预测和预加载 一些高级的页面缓冲算法还使用预测算法来尝试预测未来的页面访问模式。 根据预测结果系统可以预先加载可能会被访问的页面到内存中从而降低缺页率并减少页面换进、换出的频率。 综上所述页面缓冲算法通过优化页面置换策略、管理空闲和修改页面链表以及采用预测和预加载技术等方式显著降低了页面换进、换出的频率并减少了磁盘I/O操作的次数。这些特点使得页面缓冲算法在提高系统整体性能方面具有重要作用。 在请求分页系统中产生“抖动”的原因是什么? 在请求分页系统中产生“抖动”Thrashing的原因主要是由于以下几个方面的因素相互作用 一、CPU利用率和多道程序度的矛盾 为了提高CPU的利用率系统可能会尝试提高多道程序度即同时运行更多的进程。 然而单纯提高多道程序度会导致每个进程分配到的物理块数减少进而增加缺页率。 高缺页率会导致CPU频繁地处于等待页面调入的状态从而降低CPU的利用率。 系统调度程序为了再次提高CPU利用率可能会继续增加多道程序度形成恶性循环。 二、物理块数不足 分配给进程的物理块数太少不能满足进程正常运行的基本要求。 这会导致进程在运行过程中频繁地出现缺页中断必须请求系统将所缺之页调入内存。 三、页面淘汰算法不合理 如果页面淘汰算法不够合理可能会导致刚被换出的页面很快又被访问需要重新调入。 这种频繁的页面置换会占用大量的系统时间导致系统性能急剧下降。 四、系统资源竞争 在多进程环境中各个进程之间会竞争有限的内存资源。 当多个进程同时发生缺页中断时系统会陷入频繁的页面置换中进一步加剧抖动现象。 五、具体表现 抖动现象发生时系统的大部分时间都用于页面的调进换出而几乎不能完成任何有效的工作。 这会导致处理机的利用率急剧下降并趋于0系统性能严重受损。 综上所述抖动现象是请求分页系统中一个严重的问题它主要由CPU利用率和多道程序度的矛盾、物理块数不足、页面淘汰算法不合理以及系统资源竞争等因素共同作用而产生。为了避免抖动现象的发生系统需要合理分配物理块数、选择合适的页面淘汰算法以及优化进程调度策略等。 何谓工作集? 它是基于什么原理确定的? 工作集Working Set是指在某段时间间隔内进程实际所要访问的页面集合。这个概念在操作系统中的虚拟内存管理中具有重要意义。 工作集的定义 工作集描述了进程在特定时间段内频繁访问的页面集合。这些页面通常是进程运行所必需的因此将它们保留在内存中可以提高系统的性能。工作集的大小可以根据时间的变化而动态调整以适应进程的运行需求。 工作集确定的原理 工作集的确定基于局部性原理。局部性原理指出程序在运行过程中往往会表现出一种趋势即它们倾向于在一段时间内重复访问同一组页面。这种趋势可以分为时间局部性和空间局部性 时间局部性如果某个页面在最近被访问过那么在未来的一段时间内该页面很有可能再次被访问。 空间局部性如果某个页面被访问那么与该页面相邻的页面在内存中的位置相近在不久的将来也很有可能被访问。 基于局部性原理操作系统可以预测进程未来的页面访问模式并据此确定工作集的大小。具体来说系统可以通过跟踪进程在过去一段时间内的页面访问情况来确定哪些页面是频繁访问的并将这些页面纳入工作集。 工作集的应用 工作集的概念在操作系统中有多种应用包括 页面置换算法许多页面置换算法如Clock算法、LRU算法等都会考虑工作集的大小。当内存中的页面数量超过物理块的限制时这些算法会根据工作集的大小和页面的访问情况来决定哪些页面应该被置换出内存。 内存分配操作系统可以根据进程的工作集大小来为其分配内存。如果进程的工作集较小那么可以为其分配较少的物理块如果工作集较大则需要为其分配更多的物理块。 性能优化通过监控和分析进程的工作集操作系统可以发现潜在的内存瓶颈并采取相应的优化措施来提高系统的性能。 综上所述工作集是操作系统中用于描述进程在特定时间段内频繁访问的页面集合的概念。它的确定基于局部性原理并广泛应用于页面置换算法、内存分配和性能优化等方面。 当前可以利用哪几种方法来防止“抖动”? 在请求分页系统中为了防止“抖动”Thrashing现象的发生可以采取以下几种方法 一、采取局部置换策略 如果页面采用可变分配方式则可以限制某进程从其他进程获取物理块把抖动限制在该进程内。当某进程发生缺页时它只能在分配给自己的内存空间内进行置换不允许从其他进程那里获得新的物理块。这种方法可以防止一个进程占用过多物理块而导致其他进程频繁缺页。 二、把工作集算法融入处理机调度中 工作集是指进程在某一时间间隔内实际要访问的页面集合。把工作集算法融入处理机调度中可以在调度程序从外存调入新作业之前先检查每个进程在内存的驻留页面是否足够多。如果都已足够多此时便可以从外存调入新的作业而不会因新作业的调入而导致缺页率的增加。反之如果有些进程的内存页面不足则应首先为那些缺页率高的作业增加新的物理块此时将不再调入新的作业。 三、利用LS准则调节缺页率 L是缺页之间的平均时间S是平均缺页服务时间即置换一个页面所需的时间。当L与S接近时磁盘和处理机都可达到它们的最大利用率。理论和实践都已证明利用LS准则对于调节缺页率是十分有效的。通过调整系统参数使得L和S尽可能接近可以降低缺页率从而减少页面置换的频率防止抖动现象的发生。 四、选择性暂停进程 当多道程序度偏高时已影响到处理机的利用率为了防止发生抖动系统必须减少多道程序的数目。此时可以基于某种原则选择暂停某些当前活动的进程将它们调出到磁盘上以便把腾出的内存空间分配给缺页率高的进程。这种方法通过动态调整进程的数量和内存分配来保持系统的稳定性和高效性。 综上所述为了防止抖动现象的发生可以从局部置换策略、工作集算法融入处理机调度、利用LS准则调节缺页率以及选择性暂停进程等方面入手。这些方法各有优缺点在实际应用中需要根据系统的具体情况和需求进行选择和调整。 试说明如何利用“LS”准则来调节缺页率以避免“抖动”的发生。 “LS”准则是Dening于1980年提出的一种用于调节多道程序度的方法其中L是缺页之间的平均时间S是平均缺页服务时间即用于置换一个页面所需的时间。利用“LS”准则调节缺页率以避免“抖动”的发生可以从以下几个方面进行说明 一、L与S的关系及其对系统性能的影响 L远大于S 这种情况下说明很少发生缺页磁盘的能力尚未得到充分的利用。 系统可能处于空闲状态或进程对内存的需求较低。 L远小于S 这种情况下说明频繁发生缺页缺页的速度已超过磁盘的处理能力。 系统可能处于过载状态导致处理机频繁等待页面调入从而降低系统性能。 这就是“抖动”现象的典型表现。 L接近S 这种情况下磁盘和处理机都可达到它们的最大利用率。 系统性能处于最佳状态既不会因缺页而频繁等待也不会因磁盘空闲而浪费资源。 二、利用“LS”准则调节缺页率的策略 动态调整多道程序度 从系统启动开始每当要创建新进程或要为现有进程分配新空闲块时就计算L值和S值。 若LS则表明系统有足够的资源来处理更多的进程可以进行新进程的创建或空闲块的分配。 当L值接近S值时应谨慎添加新进程或分配空闲块以免导致缺页率上升和“抖动”的发生。 优化页面置换算法 根据“LS”准则选择合适的页面置换算法以优化内存使用。 例如当L接近S时可以选择LRU最近最少使用算法等能有效利用内存访问模式的算法。 调整内存分配策略 根据进程的内存需求和系统资源情况动态调整进程的内存分配。 对于内存需求较大的进程可以分配更多的物理块以减少缺页率对于内存需求较小的进程则可以适当减少其物理块分配以节省资源。 三、避免“抖动”发生的具体措施 监控L与S的变化 实时监控系统中的L与S值以及它们之间的比值关系。 当发现L值迅速下降并接近S值时应立即采取措施进行干预。 减少进程数量 当多道程序度过高导致系统性能下降时可以通过减少进程数量来降低缺页率。 例如可以选择性地暂停一些优先级较低的进程或释放一些不再需要的进程资源。 增加内存资源 如果系统经常处于“抖动”状态且无法通过调整多道程序度或优化页面置换算法来解决问题时可以考虑增加系统的内存资源。 这可以通过添加物理内存或扩展虚拟内存来实现。 综上所述利用“LS”准则调节缺页率以避免“抖动”的发生需要综合考虑多道程序度、页面置换算法、内存分配策略以及系统资源情况等多个因素。通过动态调整这些参数和策略可以保持系统的稳定性和高效性。 为了实现请求分段式存储管理应在系统中增加配置哪些硬件机构? 为了实现请求分段式存储管理应在系统中增加配置以下硬件机构 一、请求段表机制 请求段表是请求分段式存储管理中的主要数据结构。它除了包含请求分页机制中的访问字段A、修改位M、存在位P和外存始址等字段外还增加了存取方式字段和增补位。这些字段供程序在调进、调出时参考。具体来说 存取方式字段用于标识本分段的存取属性如只执行、只读或允许读/写。 访问字段A记录该段被访问的频繁程度用于优化页面置换算法。 修改位M表示该段在调入内存后是否被修改过供置换页面时参考。 存在状态位P指示该段是否已调入内存供程序访问时参考。 增补位这是请求分段式管理中所特有的字段用于表示本段在运行过程中是否做过动态增长。 外存始址指示本段在外存中的起始地址即起始盘块号。 二、缺段中断机构 在请求分段系统中采用的是请求调段策略。每当发现运行进程所要访问的段尚未调入内存时便由缺段中断机构产生一缺段中断信号。进入操作系统后由缺段中断处理程序将所需的段调入内存。与缺页中断机构类似缺段中断机构同样需要在一条指令的执行期间产生和处理中断并且在一条指令执行期间可能产生多次缺段中断。但由于分段是信息的逻辑单位因此不可能出现一条指令被分割在两个分段中或一组信息被分割在两个分段中的情况。 三、地址变换机构 请求分段系统中的地址变换机构是在分段系统地址变换机构的基础上形成的。因为被访问的段并非全在内存所以在地址变换时若发现所要访问的段不在内存必须先将所缺的段调入内存并修改段表然后才能再利用段表进行地址变换。为此在地址变换机构中又增加了某些功能如缺段中断的请求及处理等。 综上所述为了实现请求分段式存储管理系统中需要增加配置请求段表机制、缺段中断机构和地址变换机构等硬件机构。这些机构共同协作使得系统能够高效地管理内存资源满足进程的内存需求。 在请求段表机制中应设置哪些段表项? 在请求段表机制中应设置的段表项主要包括以下几项 段名用于唯一标识一个段方便系统进行管理和访问。 段长表示段的长度即段在内存中所占用的空间大小。这个信息对于内存分配和地址变换都是必要的。 段基址也称为段的起始地址表示段在内存中的起始位置。结合段长可以确定段在内存中的范围。 存取方式标识本段的存取属性如只执行、只读或允许读/写等。这有助于系统对段的访问进行权限控制。 访问字段A记录该段被访问的频繁程度。这个信息可以用于优化页面置换算法提高内存利用率。 修改位M表示该段在进入内存后是否已被修改过。这对于页面的置换和内存的一致性维护非常重要。 存在位P指示该段是否已调入内存。当进程访问一个段时系统可以通过检查存在位来判断该段是否在内存中从而决定是否需要进行缺段中断处理。 增补位表示本段在运行过程中是否做过动态增长。这对于动态内存管理非常重要因为系统需要知道一个段是否可能会增长以便为其预留足够的空间。 外存始址表示本段在外存的起始地址即起始盘块号。这对于段的换入换出操作是必要的因为系统需要知道如何从外存中读取或写入段的数据。 这些段表项共同构成了请求段表机制的核心数据结构为系统的内存管理和进程访问提供了必要的支持和保障。 说明请求分段系统中的缺页中断处理过程。 在请求分段系统中缺页中断处理是一个关键过程它允许系统在需要时动态地将缺失的段或页面调入内存。以下是缺页中断处理过程的详细说明 一、缺页中断的产生 当进程执行到某条指令需要访问某个段或页面时系统会首先检查该段或页面是否已在内存中。 如果发现所需段或页面不在内存中即存在位P为0则会产生一个缺页中断。 二、缺页中断的处理 缺页中断的处理过程与一般的中断处理类似但也有一些特殊之处。以下是处理过程的详细步骤 保护CPU现场 当缺页中断发生时系统会暂停当前进程的执行并保存当前CPU的上下文环境如寄存器值、程序计数器等以便在中断处理完毕后能够恢复执行。 分析中断原因 系统会检查中断原因确认是由于缺页而产生的中断。 转入缺页中断处理程序 根据中断原因系统会转入缺页中断处理程序。该程序负责查找缺失的段或页面并将其调入内存。 查找并调入缺失段或页面 缺页中断处理程序会首先查找请求段表确定缺失段或页面的外存地址。 然后系统会通过I/O操作从外存中读取缺失段或页面的数据并将其调入内存。 如果内存已满系统还需要选择一个不再需要的段或页面进行置换。 修改段表或页表 在缺失段或页面被调入内存后系统需要更新段表或页表将存在位P设置为1并更新其他相关字段如访问字段A、修改位M等。 恢复CPU现场并继续执行 在完成上述步骤后系统会恢复之前保存的CPU上下文环境。 然后系统会重新执行导致缺页中断的那条指令此时该指令所需的段或页面已经调入内存因此可以成功执行。 三、缺页中断处理的特殊性 与一般的中断处理相比缺页中断处理具有以下特殊性 在指令执行期间产生和处理缺页中断是在指令执行期间产生的并且需要在指令执行期间进行处理。这要求系统能够快速响应缺页中断并尽快将缺失的段或页面调入内存。 一条指令可能产生多次缺页中断由于分段是信息的逻辑单位因此一条指令可能会访问多个段或页面。如果其中某些段或页面不在内存中就会产生多次缺页中断。这要求系统能够高效地处理多次缺页中断以提高程序的执行效率。 缺页中断返回时执行原指令与一般的中断返回时执行下一条指令不同缺页中断返回时需要重新执行导致缺页中断的那条指令。这是因为该指令在缺页中断发生时尚未成功执行因此需要重新执行以确保程序的正确性。 综上所述请求分段系统中的缺页中断处理过程是一个复杂而关键的过程它允许系统在需要时动态地将缺失的段或页面调入内存从而确保程序的正确执行和系统的稳定性。 请对共享段表中的各项作简要说明。 共享段表是实现分段共享的重要数据结构在系统中配置一张共享段表所有共享段都在共享段表中占有一表项。共享段表中的各项内容对于管理共享段至关重要以下是对各项的简要说明 段号 用于唯一标识一个共享段。 不同的进程可以各用不同的段号去共享同一个段。 段长 表示共享段的长度即该段在内存中所占用的空间大小。 用于进行越界检查确保访问的地址不越出段界。 内存起始地址 指示共享段在内存中的起始位置。 结合段长可以确定共享段在内存中的范围。 存在位 表示该共享段是否已调入内存。 当存在位为1时表示该段已在内存中当存在位为0时表示该段尚未调入内存。 共享进程计数count 记录当前有多少个进程正在共享该段。 当一个进程开始共享该段时count加1当一个进程不再需要该段而释放它时count减1。 仅当count为0时系统才回收该段的物理内存并取消在共享段表中该段所对应的表项。 存取控制字段 用于规定对该共享段的访问方式。 常见的访问方式包括只读、只执行、读/写等。 对于不同的进程可以赋予不同的存取权限以确保信息的安全性和满足运行需要。 其他信息 根据需要共享段表还可以包含其他信息如外存起始地址用于在需要时从外存调入该段、段的属性如是否可动态增长、段的类型如代码段、数据段等等。 共享段表通过记录上述信息实现了对共享段的有效管理和控制。它使得系统能够跟踪哪些段正在被共享、哪些进程正在共享这些段以及这些段的存取权限等关键信息从而确保了系统的稳定性和安全性。 如何实现共享分段的分配和回收? 共享分段的分配和回收是实现分段共享的关键过程。以下是这两个过程的详细说明 一、共享分段的分配 首次分配 当第一个进程请求共享某个分段时系统会为该分段分配一个物理内存区域。 将该物理内存区域的起始地址填入请求进程的段表中。 在共享段表中为该分段增加一项记录该分段的基本信息如段号、段长、内存起始地址等以及共享该分段的进程信息如进程名、进程号、存取控制权限等。 设置共享进程计数count为1表示当前有一个进程正在共享该分段。 后续分配 当其他进程也需要共享该分段时由于该分段已被调入内存系统无需再为其分配物理内存区域。 只需在调用进程的段表中增加一项记录该分段的物理地址。 在共享段表中更新该分段的信息增加调用进程的进程名和存取控制权限等。 将共享进程计数count加1表示又有一个进程开始共享该分段。 二、共享分段的回收 释放分段 当某个进程不再需要共享某个分段时会执行释放操作。 系统会撤销该进程段表中与该分段对应的表项。 在共享段表中将该分段的共享进程计数count减1。 回收内存 如果共享进程计数count减为0表示没有任何进程在共享该分段。 此时系统会回收该分段所占用的物理内存区域。 同时在共享段表中删除该分段的表项表示该分段已被完全回收。 注意事项 在共享分段被多个进程共享时应尽量避免淘汰该分段以保证系统的稳定性和性能。 对于共享分段应严格控制其存取权限以确保信息的安全性和完整性。 通过上述过程系统实现了对共享分段的有效分配和回收。这有助于提高内存利用率、保证系统的稳定性和安全性并满足多个进程对同一分段进行共享的需求。