赞
踩
目录
4.3 - 最近最久未使用 (Least Recently Used,LRU) 置换算法
4.4 - 最少使用 (Least Frequently Used,LFU) 置换算法
(5)页面缓冲算法 (Page Buffering Algorithm,PBA)
传统存储器管理方式,具有如下两个共同的特征:
由此可以看出,上述的一次性及驻留性特征使得许多在程序运行中不用或暂时不用的程序占据了大量的内存空间,而一些需要运行的作业又无法装入运行,显然,这是在浪费宝贵的内存资源。
程序在执行时将呈现出局部性规律,即在一较短的时间内,程序的执行仅局限于某个部分,相应地,它所访问的存储空间也局限于某个区域。
原因:首先,程序在大多数情况下是顺序执行的,而且过程调用的深度一般都不超过 5,其次程序中存在许多循环结构,对许多数据结构的处理也都局限于很小的范围内。//补充:过程调用会转移程序的执行区域,程序循环和数据结构往往都只是一个很小的范围
局限性又表现在下述两个方面:
基于局部性原理可知,应用程序在运行之前没有必要将之全部装入内存,而仅须将那些当前要运行的少数页面或段先装入内存便可运行,其余部分暂留在盘上。//部分装入内存
程序在运行时,如果它所要访问的页已调入内存,便可继续执行下去;但如果程序所要访问的页尚未调入内存(称为缺页或缺段),便发出缺页中断请求,此时 OS 将利用请求调页功能将它们调入内存,以使进程能继续执行下去。如果此时内存已满,无法再装入新的页,OS 还须再利用页的置换功能,将内存中暂时不用的页调至盘上,腾出足够的内存空间后,再将要访问的页调入内存,使程序继续执行下去。//缺页 -> 缺页中断 -> 内存满 -> 页面置换
这样,便可使一个大的用户程序在较小的内存空间中运行,也可在内存中同时装入更多的进程,使它们并发执行。
所谓虚拟存储器,是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。其逻辑容量由内存容量和外存容量之和所决定,其运行速度接近于内存速度,而成本却又接近于外存。//虚拟存储 = 请求调入 + 页面置换
与传统的存储器管理方式比较,虚拟存储器具有以下三个重要特征:
虚拟性以多次性和对换性为基础,仅当系统允许将作业分多次调入内存,并能将内存中暂时不运行的程序和数据换至盘上时,才有可能实现虚拟存储器;而多次性和对换性又必须建立在离散分配的基础上。// 离散分配 -> 多次性和对换性 -> 虚拟性
(1)分页请求系统
分页请求系统是在分页系统的基础上增加了请求调页功能和页面置换功能所形成的页式虚拟存储系统。它允许用户程序只装入少数页面的程序即可启动运行。以后,再通过调页功能及页面置换功能陆续地把即将运行的页面调入内存,同时把暂不运行的页面换出到外存上。
置换时以页面为单位。为了能实现请求调页和页面置换功能,系统必须提供必要的硬件支持和实现请求分页的软件。
(2)请求分段系统
请求分段系统是在分段系统的基础上,增加了请求调段及分段置换功能后所形成的段式虚拟存储系统。
为了实现请求分页,系统必须提供一定的硬件支持。计算机系统除了要求一定容量的内存和外存外,还需要有请求页表机制、缺页中断机构以及地址变换机构。
在请求分页系统中需要的主要数据结构是请求页表,其基本作用仍然是将用户地址空间中的逻辑地址映射为内存空间中的物理地址。为了满足页面换进换出的需要,在请求页表中又增加了四个字段。这样,在请求分页系统中的每个页表应含以下诸项:
现对其中各字段说明如下:
缺页中断作为中断,它们同样需要经历诸如保护CPU环境、分析中断原因、转入缺页中断处理程序进行处理,以及在中断处理完成后再恢复 CPU 环境等几个步骤。// 在此,不做过多描述,仅知道是一种中断硬件即可
请求分页系统中的地址变换机构是在分页系统地址变换机构的基础上,为实现虚拟存储器,再增加了某些功能所形成的,如产生和处理缺页中断,以及从内存中换出一页的功能等等。// 在此,也不做过多描述
在为进程分配内存时,将涉及到三个问题:
随着为每个进程所分配的物理块的减少,将使进程在执行中的缺页率上升,从而会降低进程的执行速度。所以为使进程能有效地工作,应为它分配合理数目的物理块。
最小物理块数是指能保证进程正常运行所需的最小物理块数,当系统为进程分配的物理块数少于此值时,进程将无法运行。至于进程应获得的最少物理块数,与计算机的硬件结构有关,取决于指令的格式、功能和寻址方式。// 跟具体计算机有关,不做深入描述
在请求分页系统中,可采取两种内存分配策略,即固定和可变分配策略。在进行置换时,也可采取两种策略,即全局置换和局部置换。于是可组合出以下三种适用的策略:
(1)固定分配局部置换(Fixed Allocation,LocalReplacement)
所谓固定分配,是指为每个进程分配一组固定数目的物理块,在进程运行期间不再改变。所谓局部置换,是指如果进程在运行中发现缺页,则只能从分配给该进程的 n 个页面中选出一页换出,然后再调入一页,以保证分配给该进程的内存空间不变。
实现这种策略的困难在于:应为每个进程分配多少个物理块难以确定。若太少,会频繁地出现缺页中断,降低了系统的吞吐量。若太多,又必然使内存中驻留的进程数目减少,进而可能造成 CPU 空闲或其它资源空闲的情况,而且在实现进程对换时,会花费更多的时间。//难以实现,或者实现后性能不稳定
(2)可变分配全局置换(VariableAllocation,GlobalReplacement)
所谓可变分配,是指先为每个进程分配一定数目的物理块,在进程运行期间,可根据情况做适当的增加或减少。所谓全局置换,是指如果进程在运行中发现缺页,则将 OS 所保留的空闲物理块取出一块分配给该进程,或者以所有进程的全部物理块为标的,选择一块换出,然后将所缺之页调入。这样,分配给该进程的内存空间就随之增加。
可变分配全局置换是最易于实现的一种物理块分配和置换策略,已用于若干个 OS 中。在采用这种策略时,凡产生缺页的进程,都将获得新的物理块,仅当空闲物理块队列中的物理块用完时,OS 才能从内存中选择一页调出。被选择调出的页可能是系统中任何一个进程中的页,因此这个被选中的进程拥有的物理块会减少,这将导致其缺页率增加。//缺点是会影响其他程序
(3)可变分配局部置换(VariableAllocation,LocalReplacement)
该策略基于进程的类型或根据程序员的要求,为每个进程分配一定数目的物理块,但当某进程发现缺页时,只允许从该进程在内存的页面中选择一页换出,这样就不会影响其它进程的运行。
如果进程在运行中频繁地发生缺页中断,则系统须再为该进程分配若干附加的物理块,直至该进程的缺页率减少到适当程度为止。反之,若一个进程在运行过程中的缺页率特别低,则此时可适当减少分配给该进程的物理块数,但不应引起其缺页率的明显增加。//不会影响其他程序
在采用固定分配策略时,如何将系统中可供分配的所有物理块分配给各个进程,可采用下述几种算法:
为了使进程能够正常运行,必须事先将要执行的那部分程序和数据所在的页面调入内存,现在的问题是:
预调页策略:采用一种以预测为基础的预调页策略,将那些预计在不久之后便会被访问的页面预先调入内存。// 预先判断,缺点是预测率不高
预调页策略的使用:首先,在第一次将进程调入内存时,将程序中指出的页先调入内存。然后,在采用工作集的系统中,每个进程都具有一张表,表中记录有运行时的工作集,每当程序被调度运行时,将工作集中的所有页调入内存。// 使用了工作集的概念
请求调页策略:当进程在运行中需要访问某部分程序和数据时,若发现其所在的页面不在内存,便立即提出请求,由 OS 将其所需页面调入内存。//用到采取调用,缺点是I/O频率高
由请求调页策略所确定调入的页是一定会被访问的,再加之请求调页策略比较易于实现,故在目前的虚拟存储器中,大多采用此策略。但这种策略每次仅调入一页,故须花费较大的系统开销,增加了磁盘 I/O 的启动频率。
将请求分页系统中的外存分为两部分:用于存放文件的文件区和用于存放对换页面的对换区。
通常,由于对换区是采用连续分配方式,而文件区是采用离散分配方式,所以对换区的数据存取(磁盘I/O)速度比文件区的高。这样,每当发生缺页请求时,系统应从何处将缺页调入内存,可分成如下三种情况进行:
每当程序所要访问的页面未在内存时(存在位为 “0” ),便向 CPU 发出一缺页中断,中断处理程序首先保留 CPU 环境,分析中断原因后转入缺页中断处理程序。
该程序通过查找页表得到该页在外存的物理块后,如果此时内存能容纳新页,则启动磁盘 I/O,将所缺之页调入内存,然后修改页表。如果内存已满,则须先按照某种置换算法,从内存中选出一页准备换出。//调入或置换
如果该页未被修改过(修改位为 “0”),可不必将该页写回磁盘;但如果此页已被修改(修改位为 “1”),则必须将它写回磁盘,然后再把所缺的页调入内存,并修改页表中的相应表项,置其存在位为 “1”,并将此页表项写入快表中。//处理修改数据
在缺页调入内存后,利用修改后的页表形成所要访问数据的物理地址,再去访问内存数据。
整个页面的调入过程对用户是透明的。
如果在进程的运行过程中,访问页面成功(即所访问页面在内存中)的次数为 S,访问页面失败(即所访问页面不在内存中,需要从外存调入)的次数为 F,则该进程总的页面访问次数为 A = S + F,那么该进程在其运行过程中的缺页率即为://页面不在内存中即为缺页
通常,缺页率受到以下几个因素的影响:
事实上,在缺页中断处理时,当由于空间不足,需要置换部分页面到外存时,选择被置换页面还需要考虑到置换的代价,如页面是否被修改过。没有修改过的页面可以直接放弃,而修改过的页面则必须进行保存。
不适当的算法可能会导致进程发生“抖动”(Thrashing),即刚被换出的页很快又要被访问,需要将它重新调入,此时又需要再选一页调出;而此刚被调出的页很快又被访问,又需将它调入,如此频繁地更换页面,以致一个进程在运行中把大部分时间都花费在页面置换工作上,我们称该进程发生了“抖动”。
最佳置换算法所选择的被淘汰页面将是以后永不使用的,在未来不再被访问的页面。
采用最佳置换算法通常可保证获得最低的缺页率。但是,该算法是一种理想化的算法,它具有最好的性能,但实际上是无法实现的。通常使用最佳置换算法作为标准,来评价其它算法的优劣。//无法实现,仅作为评价标准
FIFO 算法是最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。
该算法实现简单,只需把一个进程已调入内存的页面按先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。但该算法与进程实际运行的规律不相适应,因为在进程中,有些页面经常被访问,比如含有全局变量、常用函数、例程等的页面,FIFO 算法并不能保证这些页面不被淘汰。
//由于与通常页面的使用规律不符,可能是性能最差的算法,实际应用极少。
//页面调入的先后并不能反映页面的使用情况
最近最久未使用(LRU)的页面置换算法,根据页面调入内存后的使用情况进行决策,LRU 置换算法选择最近最久未使用的页面予以淘汰。
该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t。当需淘汰一个页面时,选择现有页面中 t 值最大的页面予以淘汰。// 需记录访问时间
在采用 LFU 算法时,应为在内存中的每个页面设置一个移位寄存器,用来记录该页面被访问的频率。
该置换算法选择在最近时期使用最少的页面作为淘汰页。由于存储器具有较高的访问速度,例如 100ns,在 1s 时间内可能对某页面连续访问成千上万次,因此,直接利用计数器来记录某页被访问的次数是不现实的,只能采用较大的时间间隔来记录对存储器某页的访问。在最少使用置换算法中采用了移位寄存器方式。// 使用移位寄存器的原因
每次访问某页时,便将该移位寄存器的最高位置 1,再每隔一定时间右移一次。//定时移位
这种算法并不能真正反映出页面的使用情况,因为在每一时间间隔内,只是用寄存器的一位来记录页的使用情况,因此,在该时间间隔内,对某页访问一次和访问 1000 次是完全等效的。
虽然LRU 是一种较好的算法,但由于它要求有较多的硬件支持,使得其实现所需的成本较高,故在实际应用中,大多采用 LRU 的近似算法。Clock 算法就是用得较多的一种 LRU 近似算法。
Clock 算法为每页设置一位访问位,再将内存中的所有页面都通过链接指针链接成一个循环队列。当某页被访问时,其访问位被置 1。//使用访问位进行记录
置换算法在选择一页淘汰时,只需检查页的访问位。如果是 0,就选择该页换出;若为 1,则重新将它置 0,暂不换出,给予该页第二次驻留内存的机会,再按照 FIFO 算法检查下一个页面。当检查到队列中的最后一个页面时,若其访问位仍为 1,则再返回到队首去检查第一个页面。//循环减到最后,一定有一个页面的访问位为 0
由于该算法是循环地检查各页面的使用情况,故称为 Clock 算法。但因该算法只有一位访问位,只能用它表示该页是否已经使用过,而置换时是将未使用过的页面换出去,故又把该算法称为最近未用算法或 NRU(Not Recently Used)算法。
在将一个页面换出时,如果该页已被修改过,便须将该页重新写回到磁盘上;但如果该页未被修改过,则不必将它拷回磁盘。换而言之,对于修改过的页面,在换出时所付出的开销比未修改过的页面大(置换代价大)。
在改进型 CIock 算法中,除须考虑页面的使用情况外,还须再增加一个因素一一置换代价。这样,选择页面换出时,既要是未使用过的页面,又要是未被修改过的页面。把同时满足这两个条件的页面作为首选淘汰的页面。// 增加置换代价的考虑
该算法与简单 Clock 算法比较,可减少磁盘的 I/O 操作次数。但为了找到一个可置换的页,可能须经过几轮扫描。换言之,实现该算法本身的开销将有所增加。//增加算法的开销
PBA 算法的主要特点是:
为了能显著地降低页面换进、换出的频率,在内存中设置了如下两个链表:
(1)空闲页面链表
实际上该链表是一个空闲物理块链表,是系统掌握的空闲物理块,用于分配给频繁发生缺页的进程,以降低该进程的缺页率。当这样的进程需要读入一个页面时,便可利用空闲物理块链表中的第一个物理块来装入该页。当有一个未被修改的页要换出时,实际上并不将它换出到外存,而是把它们所在的物理块挂在空闲链表的末尾。应当注意,这些挂在空闲链表上的未被修改的页面中是有数据的,如果以后某进程需要这些页面中的数据时,便可从空闲链表上将它们取下,免除了从磁盘读入数据的操作,减少了页面换进的开销。//未修改页面不换出
(2)修改页面链表
它是由已修改的页面所形成的链表。设置该链表的目的是为了减少已修改页面换出的次数。当进程需要将一个已修改的页面换出时,系统并不立即把它换出到外存上,而是将它所在的物理块挂在修改页面链表的末尾。这样做的目的是:降低将已修该页面写回磁盘的频率,降低将磁盘内容读入内存的频率。//修改页面暂不换出,或者一定时间间隔后批量换出
由于虚拟存储器系统能从逻辑上扩大内存,这时,只需装入一个进程的部分程序和数据便可开始运行,故人们希望在系统中能运行更多的进程,即增加多道程序度,以提高处理机的利用率。但处理机的实际利用率却下图中的实线所示。// 缺页率 -> 抖动
其中横轴表示多道程序的数量,纵轴表示相应的处理机的利用率。在横轴的开始部分,随着进程数目的增加,处理机的利用率急剧增加;但到达 N1 时,其增速就明显地减慢了,当到达 N(max) 时,处理机的利用率达到最大,以后先开始缓慢下降,当到达 N2 点时,若再继续增加进程数,利用率将加速下降而趋于 0,见图中的 N3 点,之所以会发生在后面阶段利用率趋于 0 的情况是因为在系统中已发生了 “抖动”。//抖动会使处理机的利用率显著下降
发生“抖动”的根本原因是,同时在系统中运行的进程太多,由此分配给每一个进程的物理块太少,不能满足进程正常运行的基本要求,致使每个进程在运行时,频繁地出现缺页,必须请求系统将所缺之页调入内存。这会使得在系统中排队等待页面调进/调出的进程数目增加。显然,对磁盘的有效访问时间也随之急剧增加,造成每个进程的大部分时间都用于页面的换进/换出,而几乎不能再去做任何有效的工作,从而导致发生处理机的利用率急剧下降并趋于 0 的情况。我们称此时的进程是处于“抖动”状态。
进程发生缺页率的时间间隔与进程所获得的物理块数有关。下图展示了缺页率与物理块数之间的关系。
从图中可以看出,缺页率随着所分配物理块数的增加明显地减少,当物理块数超过某个数目时,再为进程增加一物理块,对缺页率的改善已不明显。可见,此时已无必要再为它分配更多的物理块。反之,当为某进程所分配的物理块数低于某个数目时,每减少一块,对缺页率的影响都变得十分明显,此时又应为该进程分配更多的物理块。// 缺页率和物理块有关系
基于程序运行时的局部性原理得知,程序在运行期间,对页面的访问是不均匀的,在一段时间内仅局限于较少的页面,在另一段时间内,又可能仅局限于对另一些较少的页面进行访问。这些页面被称为活跃页面。如果能够预知程序在某段时间间隔内要访问哪些页面,并将它们调入内存,将会大大降低缺页率,从而可显著地提高处理机的利用率。//工作集理论出现的背景
所谓工作集,是指在某段时间间隔里,进程实际所要访问页面的集合。
虽然程序只需要少量的几页在内存便可运行,但为了较少地产生缺页,应将程序的全部工作集装入内存中。然而我们无法事先预知程序在不同时刻将访问哪些页面,故仍只有像置换算法那样,用程序的过去某段时间内的行为作为程序在将来某段时间内行为的近似。//工作集只是一个对过去行为预估的页面集合,并不一定能准确的反应将来的情况
为了保证系统具有较大的吞吐量,必须防止“抖动”的发生。//少抖动 -> 高吞吐量
在页面分配和置换策略中,如果采取的是可变分配方式,则为了预防发生“抖动”可采取局部置换策略。根据这种策略,当某进程发生缺页时,只能在分配给自己的内存空间内进行置换,不允许从其它进程去获得新的物理块。这样,即使该进程发生了“抖动”也不会对其它进程产生影响,于是可把该进程“抖动”所造成的影响限制在较小的范围内。//把抖动限制在单个进程内
该方法虽然简单易行,但效果不是很好,因为在某进程发生“抖动”后,它还会长期处在磁盘 I/O 的等待队列中,使队列的长度增加,这会延长其它进程缺页中断的处理时间,也就是延长了其它进程对磁盘的访问时间。//实际效果不好,还是会影响整体性能
当调度程序发现处理机利用率低下时,它将试图从外存调入一个新作业进入内存,来改善处理机的利用率。如果在调度中融入了工作集算法,则在调度程序从外存调入作业之前,必须先检查每个进程在内存的驻留页面是否足够多。如果都已足够多,此时便可以从外存调入新的作业,不会因新作业的调入而导致缺页率的增加;反之,如果有些进程的内存页面不足,则应首先为那些缺页率居高的作业增加新的物理块,此时将不再调入新的作业。//通过页面数量判断是否怎加作业数
“L=S”的准则:其中 L 是缺页之间的平均时间,S 是平均缺页服务时间,即用于置换一个页面所需的时间。如果是 L 远比 S 大,说明很少发生缺页,磁盘的能力尚未得到充分的利用;反之,如果是 L 比 S 小,则说明频繁发生缺页,缺页的速度已超过磁盘的处理能力。只有当 L 与 S 接近时,磁盘和处理机都可达到它们的最大利用率。理论和实践都已证明,利用“L=S”准则,对于调节缺页率是十分有效的。// 计算缺页时间
当多道程序度偏高时,已影响到处理机的利用率,为了防止发生“抖动”,系统必须减少多道程序的数目。此时应基于某种原则选择暂停某些当前活动的进程,将它们调出到磁盘上,以便把腾出的内存空间分配给缺页率发生偏高的进程。系统通常都是采取与调度程序一致的策略,即首先选择暂停优先级最低的进程,若需要,再选择优先级较低的进程。当内存还显拥挤时,还可进一步选择暂停一个并不十分重要、但却较大的进程,以便能释放出较多的物理块,或者暂停剩余执行时间最多的进程等。//减少进程数
//一个系统的进程数是有限的,不可能无限量的增加,进程间切换会增加系统开销,进程数量过多也会造成系统抖动,但是抖动应该由系统层去解决
在分页基础上建立的请求分页式虚拟存储器系统,是以页面为单位进行换入、换出的。而在分段基础上所建立的请求分段式虚拟存储器系统,则是以分段为单位进行换入、换出的。它们在实现原理以及所需要的硬件支持上都是十分相似的。在请求分段系统中,程序运行之前,只需先调入少数几个分段便可启动运行。当所访问的段不在内存中时,可请求 OS 将所缺的段调入内存。
在请求分段式管理中所需的主要数据结构是请求段表。在该表中除了具有请求分页机制中有的访问字段 A、修改位 M、存在位 P 和外存始址四个字段外,还增加了存取方式字段和增补位。这些字段供程序在调进、调出时参考。
在段表项中,除了段名(号)、段长、段在内存中的起始地址(段基址)外,还增加了以下字段:
// 缺段中断机构,以及地址变换机构等硬件的支持不再做赘述
分段存储管理方式的优点是便于实现分段的共享与保护。
为了实现分段共享,可在系统中配置一张共享段表,所有各共享段都在共享段表中占有一表项。在表项的上面记录了共享段的段号、段长、内存始址、状态(存在)位、外存始址以及共享计数等信息,接下去就是记录了共享此分段的每个进程的情况。共享段表如下图所示:
其中各项说明如下:
(1)共享段的分配
由于共享段是供多个进程所共享的,因此,对共享段的内存分配方法,与非共享段的内存分配方法有所不同。
在为共享段分配内存时,对第一个请求使用该共享段的进程,由系统为该共享段分配一物理区,再把共享段调入该区,同时将该区的始址填入请求进程的段表的相应项中,还须在共享段表中增加一表项,填写请求使用该共享段的进程名、段号和存取控制等有关数据,把 count 置为 1。
当又有其它进程需要调用该共享段时,由于该共享段已被调入内存,故此时无须再为该段分配内存,而只需在调用进程的段表中增加一表项,填写该共享段的物理地址。在共享段的段表中增加一个表项,填上调用进程的进程名、该共享段在本进程中的段号、存取控制等,再执行 count = count + 1 操作,以表明有两个进程共享该段。//在段表中加记录
以后,凡有进程需要访问此共享段的,都按上述方式在共享段的段表中增加一个表项。
(2)共享段的回收
当共享此段的某进程不再需要该段时,应将该段释放,包括撤消在该进程段表中共享段所对应的表项,以及执行 count = count - 1 操作。若结果为 0,则须由系统回收该共享段的物理内存,以及取消在共享段表中该段所对应的表项,表明此时已没有进程使用该段;否则(减1结果不为0),只是取消调用者进程在共享段表中的有关记录。//在段表中减记录
在分段系统中,由于每个分段在逻辑上是相对独立的,因而比较容易实现信息保护目前,常采用以下几种措施来确保信息的安全。
(1)越界检查
越界检查是利用地址变换机构来完成的。为此,在地址变换机构中设置了段表寄存器用于存放段表始址和段表长度信息。在进行地址变换时,首先将逻辑地址空间的段号与段表长度进行比较,如果段号等于或大于段表长度,将发出地址越界中断信号。此外,还在段表中为每个段设置有段长字段,在进行地址变换时,还要检查段内地址是否等于或大于段长,若大于段长,将产生地址越界中断信号,从而保证了每个进程只能在自己的地址空间内运行。
(2)存取控制检查
存取控制检查是以段为基本单位进行的。为此,在段表的每个表项中都设置了一个“存取控制”字段,用于规定对该段的访问方式。通常的访问方式有:
对于共享段而言,存取控制就显得尤为重要,因而对不同的进程应赋予不同的读写权限。这时,既要保证信息的安全性,又要满足运行需要。例如,对于一个企业的财务账目,应该只允许会计人员进行读或写,允许领导及有关人员去读。而对于一般人员,则既不准读,更不能写。值得一提的是,这里所介绍的存取控制检查是基于硬件实现的,它能较好地保证信息的安全,因为攻击者很难对存取控制字段进行修改。//企业应用程序中也可用软件的方式
(3)环保护机构
这是一种功能较完善的保护机制。在该机制中规定:低编号的环具有高优先权。OS 核心处于 0 号环内;某些重要的实用程序和操作系统服务占居中间环,而一般的应用程序,则被安排在外环上。//用户态和内核态
在环系统中,程序的访问和调用应遵循以下规则
至此,虚拟存储器的介绍到此结束。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。