-
2015-12-05 16:50:58
地址映射:地址映射就是将进程的逻辑地址变换为内存中的物理地址,地址映射需要重定位技术和地址变换机构的支持。
逻辑地址:逻辑地址就是指令在程序中的地址,源程序经编译(或解释)后编排的地址。逻辑地址也叫虚拟地址
物理地址:物理地址就是进程中的指令和数据在内存中的地址,即指令和数据存放在内存中的内存单元地址。物理地址也叫实地址。
地址空间:逻辑地址空间就是某程序的逻辑地址的集合,逻辑地址空间可简称为地址空间。
存储空间:物理地址空间是指进程已经装入内存中的一系列存储信息的物理单元地址的集合。物理地址空间可简称为存储空间。
重定位:为了保证CPU执行指令时可正确访问存储单元,需将用户程序中的逻辑地址转换为运行时内存中的物理地址的技术就叫重定位。重定位技术包括静态重定位和动态重定位。
动态重定位:进程在装入内存时不进行地址绑定,在指令执行期间CPU每次访问内存时进行地址重定位,这种重定位方法需要硬件的支持,系统中需设置一个地址变换机构。
碎片:碎片一般可分为内碎片和外碎片。前者是指分区内不可利用的内存空间,后者是指分区之间难以利用的小空闲分区。
伙伴系统:伙伴系统是一种限制外碎片的产生的一种存储管理技术。该技术克服了固定分区和动态分区存储管理技术的缺陷,对半分裂或合并内存空间,选择合适的两个伙伴中的任何一个伙伴分配给进程。在一个伙伴系统中,内存的用户可用空间为2U。进程申请存储空间时,系统总是为其分配大小为2I的一个空闲分区,其中2S≤2I≤2U,2S是系统允许的最小分区尺寸。
覆盖技术:覆盖(overlay)技术就是在较小的可用内存中运行较大的程序。将程序中的若干程序段或数据段按照时间先后使用内存的某个区域。
交换技术:交换(swapping)技术是在多个进程并发执行时,将暂时不能执行的进程换出到备用存储空间,从而获得内存空间来装入新的进程,或换入保存在备用存储空间中需要执行的进程,交换单位为整个进程。
页:在分页存储管理方式中,将一个进程的逻辑地址空间分成若干个大小相等的片,称之为页(page)或页面。
页帧:相应地,内存空间也分成与页相同大小的若干个存储块,称之为帧、页帧(page frame)或页框,有些教材称之为物理块。
段:每个进程的地址空间可按其逻辑意义分成一些逻辑段,段定义一个完整逻辑意义的信息,为每段编排的段号,且每段都是连续的地址空间。
页表:为了便于找到进程的每个页号对应的内存帧号,系统为每个进程建立一张页面映象表,简称页表。
段表:为了实现分段管理,系统为每个进程建立一个段表,用于描述组成进程地址空间的各个段在内存的物理位置,来实现进程的逻辑地址空间到内存存储空间的映射。
虚拟存储器:虚拟存储器就是将用户逻辑内存与物理内存分离,具有请求换入功能和置换功能,为用户提供了一个存储容量比实际内存大得多的存储器管理系统。
工作集:在某段时间间隔“Δ“里,进程实际要访问的页面集合。
活跃页面:进程在一段时间内总是集中访问一些页面,这些页面称为活跃页面。
1.存储管理的主要功能是什么?
内存分配和回收、、内存保护、扩充内存、地址映射
2.为什么要引入动态重定位?如何实现?
动态重定位技术不同于静态重定位,进程在装入内存时不进行地址绑定,在指令执行期间CPU每次访问内存时进行地址重定位,这种重定位方法需要硬件的支持,系统中需设置一个地址变换机构。进程的指令和数据在内存中的物理地址在执行时通过地址变换机构确定,该技术在进程运行时允许移动和附加存储空间。
3.在多任务操作系统中,为什么必须采用动态重定位?
在多任务操作系统中,多个进程在内存中并发执行,进程的创建与撤消,多个进程之间频繁的上下文切换,其内存分配呈现离散性,动态性和随机性。而静态重定位仅适应于连续分配,不能满足多任务操作系统对内存需求的离散性,动态性和随机性等要求,因此多任务操作系统存储管理必须采用动态重定位。
4.伙伴系统有什么技术特点?伙伴系统如何对内存进行管理的?
伙伴系统是一种限制外碎片的产生的一种存储管理技术。该技术克服了固定分区和动态分区存储管理技术的缺陷,对半分裂或合并内存空间,选择合适的两个伙伴中的任何一个伙伴分配给进程。
在一个伙伴系统中,内存的用户可用空间为2U。进程申请存储空间时,系统总是为其分配大小为2I的一个空闲分区,其中2S≤2I≤2U,2S是系统允许的最小分区尺寸。
伙伴系统的内存分配:如果进程申请的存储空间大小为K,且2I-1<K≤2I,则将整个2I大小的分区分配给该进程;否则,该分区被分割成两个大小相等的伙伴分区,大小为2I-1;再判断K是否满足条件:2I-2<K≤2I-1,若满足条件,则将两个伙伴中的任何一个分配给该进程。否则,将其中一个伙伴又分成两个大小相等的伙伴分区;此过程一直继续进行,直到产生的分区满足条件I-J>S并2I-J-1<K≤2I-J,将2I-J大小的分区分配给该进程;当I-J≤S时,系统不再分割成两个大小相等的伙伴分区,将系统允许的最小分区2S分配给该进程。
伙伴系统的内存回收:当进程执行完毕,释放一个尺寸为2I的分区时,系统用下面的算法回收该分区。
⑴如果被回收空闲分区没有空闲伙伴分区,那么保留该分区为一个独立的空闲分区,否则执行⑵;
⑵合并回收分区及其伙伴分区,从而得到一个尺寸(2I+1)更大的回收空闲分区,转移到⑴;
5.在系统中引入对换后可带来哪些好处?为实现对换,系统应具备哪几方面的功能?
好处:可以增加并发运行进程的数目,并且给用户提供适当的响应时间。不要求程序员给出程序段之间的覆盖结构,不影响程序结构。交换技术主要在进程之间进行。系统中引入对换技术后可以腾出足够的空间,把已具备运行条件的进程或进程所需要的程序和数据换入内存,从而提高内存利用率乃至系统吞吐量。
为实现进程对换,系统应具备对换空间管理、进程的换出及进程的换入等三方面的功能。
6.为实现分页存储管理,需要哪些硬件支持?
为实现分页存储管理,需要页表、地址转换机构(包括逻辑地址寄存器、物理地址寄存器、页表寄存器、快表)等硬件支持。
7.较详细地说明引入分段存储管理是为了满足用户哪几方面的需要。
推动存储管理方式从固定分区到动态分区,进而又发展到分页存储管理方式的主要动力在于满足内存利用率提高的系统管理需求。而分段存储管理的引入则主要是为了满足用户在以下五方面的需要:
①方便编程。通常,一个作业由若干个自然段构成。为此,用户希望能把自己的作业按照逻辑关系划分为若干个段,每个段都由自己的名字和长度。因而,规定每个段都从0开始编址,则访问的逻辑地址可由段名(段号)和段内偏移量(段内地址)决定。这样,用户程序在执行中便可用段名和段内地址进行访问。
②分段共享。通常,在实现程序和数据的共享时,都是以信息的逻辑单位为基础的。为了实现段的共享,应使内存管理功能与用户程序分段的组织方式相适应。
③分段保护。在多道程序环境下,为了防止其它程序对某程序在内存中的数据有意无意的破坏,必须采取保护措施。对内存中信息的保护,同样时对信息的逻辑单位进行保护。因此,采用分段的组织和管理方式,对于实现保护功能,将是更有效和方便的。
④动态链接。动态链接也要求以信息的逻辑单位即分段作为管理的单位。
⑤动态增长。实际使用中,往往有些段特别是数据段会不断地增长,而事先又无法确切地知道数据段会增长到多大。这种动态增长的情况是其它存储管理方式都难于应付的,但分段存储管理方式却能较好地解决这一问题。
8.在具有快表的分页存储管理方式中,如何实现地址变换?
具有快表的地址变换过程如下:
⑴CPU给出有效地址后,由地址变换机构自动将页号送入快表,并将此页号与快表中的所有关键字(页号)进行比较,而且这种比较是同时进行的。若其中有与此页号相匹配的关键字,表示要访问页描述子在快表中。于是可直接读出该页所对应的帧号,则快速形成物理地址。这样就无需访问内存中的页表,由于快表的访问速度比内存的访问速度快得多,这样就可以大大减少访问内存的时间。
⑵如果快表中没有记录,即TLB脱靶,从页表中查找所需的页描述子中的帧号,形成物理地址,同时更新快表,把该页描述子及相邻的页描述子写入快表。页号在快表(TLB)中被查找到的百分比称为命中率(h)。
9.试说明分段系统和分页系统的区别与联系?
⑴页帧是信息的物理单位,分页是系统管理的需要,以解决内存的外碎片问题;段是信息的逻辑单位,分段的目的是为了更好地满足用户的需要,但分段存储管理存在外碎片问题。
⑵页的大小是固定的,由系统硬件决定;段的长度是不固定的,大小由用户决定。
⑶分页系统进程的地址空间是一维的,即该地址空间是单一的线性地址空间,程序员只需利用一个标识符,即可表示一个地址;分段系统进程的地址空间是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内偏移。
⑷分页对于用户是透明,它仅仅用于对内存的管理;分段则对用户是可见的。
⑸分段存储管理可以利用段的共享来实现内存共享;分页存储管理较难实现内存共享。
10.虚拟存储器有哪些特征?其中最本质的特征是什么?
虚拟存储器具有四方面的特征:
⑴离散性,即采用离散分配方式;
⑵多次性,指进程被分成多次调入内存运行;
⑶对换性,指允许进程的段或页,在进程运行过程中换进和换出;
⑷虚拟性,指能够从逻辑上扩充内存容量。
其中,最本质的特征是离散性。
11.实现虚拟存储器需要哪些硬件支持?需要哪几个关键技术?
实现虚拟存储器需要三方面的硬件支持:⑴请求分页/段的页表或段表机制;⑵缺页/段中断机构;⑶地址变换机构。
实现虚拟存储器的关键技术包括请求调页/段功能、页面/分段置换功能等。
12.一个计算机系统采用了虚拟存储器,它给系统带来了那些好处?同时系统又必须付出那些代价?
所谓虚拟存储器就是将用户逻辑内存与物理内存分离,具有请求换入功能和置换功能,为用户提供了一个存储容量比实际内存大得多的存储器管理系统。虚拟存储器既方便了用户,以提高了内存的利用率和系统的吞吐量。
虚拟存储器的访问内存的速度会降低,如果使用不当可能会降低系统性能。
13.在请求分页系统中,如何扩充页描述子?扩充项的作用是什么?
在请求分页系统中,页描述子扩充如下:
①页号和物理块号,用于实现用户作业虚拟地址空间页面到物理地址内存空间物理块的映射;
②状态位,用于表征相应分页是否调入内存以便于程序访问;
③访问字段,用于记录相应分页在最近一段时间内被访问的次数或未被访问的时间间隔,以作为页面置换算法被淘汰页面选择依据;
④修改位,表征对应页面本次调入内存以来是否被修改过,以作为页面是否重写回外存的系统决策依据及页面置换算法被淘汰页面选择的依据;
⑤外存地址,表征对应分页在外存空间的物理盘块号,以便页面置换时调入该页使用。
14.为什么说分段系统比分页系统更易于实现信息的共享和保护?
程序往往具有逻辑自然段构成的特点,而分页系统是基于计算机系统硬件机构决定的物理块及其大小对应的分页概念来进行内存管理的。为此,同一逻辑意义相对完整的程序段或数据段不仅可能占用多个内存分页而需在页表中设置多个页表项,而且它们也可能被不合理地错落分散开来,对应于地址转换过程势必复杂化和增大系统开销,信息共享过程中必要的代码或数据访问所耗费的时空开销必然急剧加大,信息保护实施同样非常困难。对于分段系统来说,由于其是基于程序构成的逻辑信息单位即分段来进行内存管理的,同一逻辑意义相对完整的程序段或数据段不会被分割,而是在内存空间对应一个连续分段,故仅需在段表中设置一个段表项,所以对应的地址转换过程和信息保护要相对简单得多,信息共享过程中必要的代码或数据访问所耗费的时空开销也要少些。因此,分段系统比分页系统更易实现信息共享和保护。
15.在请求分页系统中,常采用哪几种页面置换算法?
在请求分页系统中,常采用以下页面置换算法:最佳置换算法、先进先出置换算法、最近最久未使用置换算法、Clock置换算法(又可细分为分简单Clock置换算法和改进Clock置换算法两种)、最少使用置换算法及页面缓冲算法。
16.使用伙伴系统管理1MB的内存分区:
⑴画图说明下面顺序的结果:进程1请求70KB;进程2请求35KB;进程3请求80KB;进程1结束;进程4请求60KB;进程2结束;进程4结束;进程3结束。
⑵给出进程2结束之后的二叉树表示。(参考教材147-148)
17. 在段页式存储管理中,进程的逻辑地址由三部分组成,即段号、页号和偏移量,其逻辑地址变换为物理地址的过程如图5-44所示,请说明三个关键词段号、页号和偏移量在地址变换过程中的作用?请描述段页式存储管理的地址变换过程?
如图5-44 逻辑地址变换为物理地址的过程
段页式存储管理地址变换具体过程如下:
⑴从段表地址寄存器读取段表始址,找到该进程的段表。
⑵段号s+段表始址,得到段描述子地址。
⑶读取段描述子,得到页表始址。页号+页表始址,得到页描述子地址。
⑷读取页描述子,得到帧号。
⑸由帧号f和偏移量拼成物理地址。
18.为什么引入虚拟存储器概念?虚拟存储器的容量由什么决定的?受什么影响?根据什么说一个计算机有虚拟存储系统?
虚拟存储器技术允许进程部分装入内存,如图5-34所示,这种方案的一个很大的优点就是进程的逻辑地址空间可以比物理内存大。虚拟存储器将物理内存和备用外存抽象成一个巨大的、统一的存储空间,虚拟存储器将用户看到的逻辑内存与物理内存分开,这种技术允许程序员不受内存存储的限制,虚拟存储器也允许程序很容易地共享文件和地址空间。
虚拟存储器的容量并非无限大,一个虚拟存储器的容量由以下两个因素决定:
⑴虚拟存储器的容量受CPU的寻址能力的限制,CPU的寻址能力由计算机CPU地址总线结构确定的,它是影响虚拟存储器最大容量的重要参数。例如:某计算机CPU的地址总线长度为32位,则CPU可以寻址范围是0~232-1,即4G。
⑵一般来说,虚拟存储器的容量由内存和外存对换区容量之和所确定;有些虚拟存储器技术还要考虑加上进程文件区的容量。
如果程序员不受内存存储的限制,说明该计算机有虚拟存储系统。
19.什么是工作集,如何利用工作集模型控制抖动?
所谓工作集是指在某段时间间隔△里,进程实际要访问的页面集合。
为了防止抖动,就要控制缺页中断频率。当缺页中断频率太高时,进程需要更多页帧;类似地,如果缺页中断频率太低,那么进程可能占有过多的页帧。可以为所期望的缺页中断频率设置上限和下限,如果实际缺页中断频率超过上限,那么要为进程分配更多页帧;如果实际缺页中断频率低于下限,那么可从该进程中移走页帧。因此,可以直接控制缺页中断频率以防止颠簸。如图5-43所示,缺页中断频率与已分配页帧数关系图,M分配帧数的下限,N为进程的总页数,W为工作集的大小,W应该介于M和N之间。
图5-43 缺页中断频率与已分配帧数关系图
与工作集策略一样,如果缺页中断频率增加且没有可用的页帧,也可以挂起一个进程。接着,可将释放的页帧分配给那些具有高缺页中断频率的进程。为进程提供多于活跃页面数的帧数,预防抖动。
20.为什么只需将部分进程和数据装入内存,便能完成整个进程的运行。
根据局部性原理,在进程装入时,不必将其全部装入内存,而只要将当前需要执行的部分页或段装入内存,就可以让进程执行了。在进程执行过程中,如果需要执行的指令或访问的数据尚未在内存(称为缺页或缺段),则由操作系统将相应的页或段换入内存,然后继续执行进程。同时操作系统可以将内存中暂时不使用的页或段换出,保存在外存上,从而腾出空间存放将要装入的进程以及将要换入的页或段。
21.某虚拟存储器的用户编程空间共32个页,每页1KB,内存为16KB。假定某时刻某用户进程已换入内存的页表如表5-2所示。
页号
0
1
2
3
帧号
5
10
4
7
表5-2 页表
该用户进程长度为6页,将下面的虚拟地址0AEFH、10CDH、1AADH变换成物理地址,并写出地址变换过程。
[分析] 由已知条件“用户编程空间共32个页面”,可知页号部分占5位;由“每页为1KB”。
页式存储管理的逻辑地址分为两部分:页号p(5位)|偏移量d(10位)。
物理地址结构为:帧号f(4位)|偏移量d(10位),
逻辑地址0AEFH所对应的二进制表示形式是:000 1010 1110 1111 ,根据上面的分析,下划线部分为偏移量d,页号=“000 10”=2(十进制),查页表,得到帧号f =4(十进制),即帧号f=0100 ,拼接帧号f和偏移量d,得01 0010 1110 1111,求得对应的物理地址为12EFH。
逻辑地址10CDH所对应的二进制表示形式是:001 0000 1100 1101 ,根据上面的分析,下划线部分为偏移量d,页号= 00100=4(十进制),查页表,该页不在内存,发生缺页中断。
逻辑地址1AADH所对应的二进制表示形式是:001 1010 1010 1100 ,根据上面的分析,下划线部分为偏移量d,页号=“00110”=6(十进制),由于用户进程长度为6页,发生越界中断。
22.在一个请求页式存储管理系统中,一个进程的页面走向为:6,5,4,3,2,1,5,4,3,6,5,4,3,2,1,6,5。请分别采用FIFO和LRU近似算法,对M=4和M=5的情况,用页面走向分析图求出访问中发生的缺页次数和缺页率,并比较其结果。
23.试讨论了下述几种存储管理技术。单一连续区分配,固定分区,动态分区,分页存储管理,分段存储管理,段页式存储管理,请求分页存储管理。请回答:
⑴给出每一种管理方法存在的主要问题。
⑵把每一种方法与它的前一种方法对比,指出哪些问题得到了解决?
更多相关内容 -
(存储管理)存储管理的四大基本功能
2021-08-15 21:10:38存储管理的四大基本功能 1、内存分配与回收 当有作业进入系统时,存储管理模块就会根据当前内存情况来分配内存给它;当作业完成后,就会回收作业占用的内存,将这部分内存设置为可分配状态。 分配方式主要有两种: ...存储管理的四大基本功能
1、内存分配与回收
当有作业进入系统时,存储管理模块就会根据当前内存情况来分配内存给它;当作业完成后,就会回收作业占用的内存,将这部分内存设置为可分配状态。
分配方式主要有两种:
静态分配:作业在运行之前,已经明确所需内存的大小,并且一次性分配;作业在运行的时候,不可以重新申请或移动内存。
动态分配:作业在运行期间,可以根据需要动态申请内存。比静态分配灵活,并且能够提高内存的利用率,避免因静态分配导致不必要的信息加载到内存中。
2、地址重定位
实现程序的逻辑地址和物理地址转换,并根据物理地址重定位到物理空间。
程序中,基本都是用符号名来访问存储单元的。而符号名存储的是逻辑地址,而逻辑地址可以转化为物理地址,最后可以通过物理地址直接定位存储单元。
其中重定位一共有两种方式:
3、存储保护
存储保护是为了防止程序越界访问、破坏其他程序或系统的存储区。较为普遍的存储保护方法是:硬件的界限存储器保护法,并且还分为两种实现方法。
4、虚拟存储
程序的局部性分为:时间和空间的局部性。
时间局部性:某条指令被执行,那么在不久的将来也会被再次执行。
空间局部性:一旦程序访问某个存储单元的数据,那么不久的将来,这个存储单元附近的存储单元也可能会被访问。
由于程序的局部性原理,很多数据没有必要全部加载到内存。因此就将那些不必要的数据暂存在外存中,等到需要的时候再调入到内存中。这部分外存就充当虚拟内存,也叫虚拟存储。
-
操作系统存储管理
2021-10-24 09:11:23目录 - 3.1 内存的基础知识 - 3.1.1 什么是内存,有何作用 - 3.1.2 进程运行的基本原理 - 3.2 内存管理的概念 ... - 3.3 覆盖与交换 ... - 3.4 连续分配管理... - 3.10 基本分段存储管理方...目录
- 3.9 两级页表
3.1 内存的基础知识
3.1.1 什么是内存,有何作用
- 内存:用于存放数据的硬件。程序执行前需要先放到内存中才能被CPU处理。
- 存储单元
- 内存地址从0开始,每个地址对应个存储单元
- 内存中也有一个一个的“小房间”,每个小房间就是一个“存储单元”
- 如果计算机“按字节编址”则每个存储单元大小为1字节,即1B,即8个二进制位
- 如果字长为16位的计算机“按字编址”,则每个存储单元大小为1个字;每个字的大小为16个二进制位
- 一台手机/电脑有4GB内存,是什么意思?
- 是指该内存中可以存放4*230个字节。如果是按字节编址的话,也就是有4*230 = 232个“小房间”
- 内存地址
3.1.2 进程运行的基本原理
- 指令的工作原理
- 我们写的代码要翻译成CPU能识别的指令。这些指令会告诉CPU应该去内存的哪个地址存/取数据,这个数据应该做什么样的处理。在这个例子中,指令中直接给出了变量x的实际存放地址(物理地址)。但实际在生成机器指令的时候并不知道该进程的数据会被放到什么位置。所以编译生成的指令中一般是使用逻辑地址(相对地址)
- 逻辑地址VS物理地址
- 指令中的地址也可以采用这种思想。编译时产生的指令只关心“相对地址”,实际放入内存中时再想办法根据起始位置得到“绝对地址”。
- Eg:编译时只需确定变量x存放的相对地址是100(也就是说相对于进程在内存中的起始地址而言的地址)。CPU想要找到x在内存中的实际存放位置,只需要用进程的起始地址+100即可。
- 相对地址又称逻辑地址,绝对地址又称物理地址。
- 从写程序到程序运行:编辑--编译--链接--装入
- 编译:由编译程序将用户源代码编译成若干个目标模块(编译就是把高级语言翻译为机器语言)
- 链接:由链接程序将编译后形成的一组目标模块,以及所需库函数链接在起,形成一个完整的装入模块
- 装入(装载):由装入程序将装入模块装入内存运行
- 三种链接方式
- 静态链接:在程序运行之前,先将各目标模块及它们所需的库函数连接成一个完整的可执行文件(装入模块),之后不再拆开。
- 装入时动态链接:将各目标模块装入内存时,边装入边链接的链接方式。
- 运行时动态链接:在程序执行中需要该目标模块时,才对它进行链接。其优点是便于修改和更新,便于实现对目标模块的共享。
- 三种装入方式
- 绝对装入---(只适用于单道程序环境)
- 绝对装入:在编译时,如果知道程序将放到内存中的哪个位置,编译程序将产生绝对地址的目标代码。装入程序按照装入模块中的地址,将程序和数据装入内存。
- 静态重定位---(早期的多道批处理系统)
- 静态重定位:又称可重定位装入。编译、链接后的装入模块的地址都是从0开始的,指令中使用的地址、数据存放的地址都是相对于起始地址而言的逻辑地址。可根据内存的当前情况,将装入模块装入到内存的适当位置。装入时对地址进行“重定位”,将逻辑地址变换为物理地址(地址变换是在装入时一次完成的)。
- 动态重定位----(现代操作系统)
- 动态重定位:又称动态运行时装入。编译、链接后的装入模块的地址都是从0开始的。装入程序把装入模块装入内存后,并不会立即把逻辑地址转换为物理地址,而是把地址转换推迟到程序真正要执行时才进行。因此装入内存后所有的地址依然是逻辑地址。这种方式需要一个重定位寄存器的支持。(允许程序在内存中移动)
- 绝对装入---(只适用于单道程序环境)
3.2 内存管理的概念
操作系统作为系统资源的管理者,当然也需要对内存进行管理,要管些什么呢?
操作系统要怎么记录哪些内存区域已经被分配出去了,哪些又还空闲?
当进程运行结束之后,如何将进程占用的内存空间回收?
很多位置都可以放,那应该放在哪里?
- 内存空间的分配与回收
- 连续分配管理方式
- 单一连续分配
- 固定连续分配
- 分区大小相等
- 分区大小不等
- 动态分区分配
- 非连续分配管理方式
- 基于分页存储管理
- 基于分段存储管理
- 段页式存储管理
- 连续分配管理方式
- 内存空间的扩充
- 覆盖技术
- 交换技术
- 虚拟存储技术
- 地址转换
- 操作系统负责实现逻辑地址到物理地址的转换
- 三种方式:
- 绝对装入
- 可重定位装入
- 动态运行时装入
- 存储保护
- 各个进程只能访问自己进程对应的内存空间,而不能访问操作系统或其他进程的内存空间。
- 保证各进程在自己的内存空间运行,不能越界访问。
- 方法一:在CPU中设置一对上、下限寄存器,存放进程的上、下限地址。进程的指令要访问某个地址时,CPU检查是否越界。
- 方法二:采用重定位寄存器(又称基址寄存器)和界地址寄存器(又称限长寄存器)进行越界检查。重定位寄存器中存放的是进程的起始物理地址。界地址寄存器中存放的是进程的最大逻辑地址。
3.3 覆盖与交换
3.3.1覆盖技术
- 早期的计算机内存很小,比如 IBM推出的第一台PC机最大只支持1MB大小的内存。因此经常会出现内存大小不够的情况。
- 后来人们引入了覆盖技术,用来解决“程序大小超过物理内存总和”的问题
- 覆盖技术的思想:将程序分为多个段(多个模块)。常用的段常驻内存,不常用的段在需要时调入内存。
- 内存中分为一个“固定区”和若干个“覆盖区”。
- 需要常驻内存的段放在“固定区”中,调入后就不再调出(除非运行结束)
- 不常用的段放在“覆盖区”,需要用到时调入内存,用不到时调出内存
- 必须由程序员声明覆盖结构,操柞系统完成自动覆盖。缺点:对用户不透明,增加了用户编程负担。
3.3.2交换技术
- 交换(对换)技术的设计思想:内存空间紧张时,系统将内存中某些进程暂时换出外存,把外存中某些已具备运行条件的进程换入内存(进程在内存与磁盘间动态调度)
- 具有对换功能的操作系统中,通常把磁盘空间分为文件区和对换区两部分。
- 文件区主要用于存放文件,主要追求存储空间的利用率,因此对文件区空间的管理采用离散分配方式;
- 对换区空间只占磁盘空间的小部分,被换出的进程数据就存放在对换区。由于对换的速度直接影响到系统的整体速度,因此对换空间的管理主要追求换入换出速度,因此通常对换区采用连续分配方式(学过文件管理章节后即可理解)。总之,对换区的I/O速度比文件区的更快。
- 交换通常在许多进程运行且内存吃紧时进行,而系统负荷降低就暂停。例如:在发现许多进程运行时经常发生缺页,就说明内存紧张,此时可以换出一些进程;如果缺页率明显下降,就可以暂停换出。
- 可优先换出阻塞进程;可换出优先级低的进程;为了防止优先级低的进程在被调入内存后根快又被换出,有的系统还会考虑进程在内存的驻留时间..
3.3.3 覆盖技术与交换技术的区别
- 覆盖是在同一个程序或进程中的
- 交换是在不同进程(或作业)之间的
3.4 连续分配管理方式
- 连续分配管理方式 -- 用户进程分配的必须是一个连续的内存空间
- 单一连续分配
- 在单一连续分配方式中,内存被分为系统区和用户区。系统区通常位于内存的低地址部分,用于存放操作系统相关数据;用户区用于存放用户进程相关数据。
- 内存中只能有一道用户程序,用户程序独占整个用户区空间。
- 优点:实现简单;无外部碎片;可以采用覆盖技术扩充内存;不一定需要采取内存保护(eg:早期的PC操作系统MS-Dos) 。
- 缺点:只能用于单用户、单任务的操作系统中;有内部碎片;存储器利用率极低。
- 固定连续分配(无外部碎片,有内部碎片)
- 20世纪60年代出现了支持多道程序的系统,为了能在内存中装入多道程序,且这些程序之间又不会相互干扰,于是将整个用户空间划分为若干个固定大小的分区,在每个分区中只装入一道作业,这样就形成了最早的、最简单的一种可运行多道程序的内存管理方式。
- 操作系统需要建立一个数据结构―一分区说明表,来实现各个分区的分配与回收。每个表项对应一个分区,通常按分区大小排列。每个表项包括对应分区的大小、起始地址、状态(是否已分配)。
- 分区大小相等
- 分区大小相等:缺乏灵活性,但是很适合用于用一台计算机控制多个相同对象的场合(比如:钢铁厂有n个相同的炼钢炉,就可把内存分为n个大小相等的区域存放n个炼钢炉控制程序)
- 分区大小不等
- 分区大小不等:增加了灵活性,可以满足不同大小的进程需求。根据常在系统中运行的作业大小情况进行划分(比如:划分多个小分区、适量中等分区、少量大分区)
- 动态分区分配(有外部碎片,无内部碎片)
- 动态分区分配又称为可变分区分配。这种分配方式不会预先划分内存分区,而是在进程装入内存时,根据进程的大小动态地建立分区,并使分区的大小正好适合进程的需要。因此系统分区的大小和数目是可变的。(eg:假设某计算机内存大小为64MB,系统区8MB,用户区共56 MB.….)
- 动态内存分配的内部碎片与外部碎片
- 内部碎片,分配给某进程的内存区域中,如果有些部分没有用上。
- 外部碎片,是指内存中的某些空闲分区由于太小而难以利用。
- 系统要用什么样的数据结构记录内存的使用情况?
- 空闲分区表
- 每个空闲分区对应一个表项。表项中包含分区号、分区大小、分区起始地址和状态等信息
- 空闲分区链
- 每个分区的起始部分和末尾部分分别设置前向指针和后向指针。起始部分处还可记录分区大小等信息
- 空闲分区表
- 当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配?
- 动态分区分配算法:
- 从空闲分区表(或空闲分区链)中选出一个分区分配给该作业。由于分配算法算法对系统性能有很大的影响,因此人们对它进行了广泛的研究。
- 动态分区分配算法:
- 如何进行分区的分配与回收操作?
- 第一个情况:重写内存分区表/链
- 第二种情况:删除内存分区表/链
- 如何进行分区的分配与回收操作?
- 修改内存分区表
- 合并内存分区表
- 单一连续分配
- 非连续分配管理方式
3.5 动态分区分配算法
- 首次适应算法(First Fit)
- 算法思想:每次都从低地址开始查找,找到第一个能满足大小的空闲分区。
- 如何实现:空闲分区以地址递增的次序排列。每次分配内存时顺序查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。
- 最佳适应算法(Best Fit)
- 算法思想:由于动态分区分配是一种连续分配方式,为各进程分配的空间必须是连续的一整片区域。因此为了保证当“大进程”到来时能有连续的大片空间,可以尽可能多地留下大片的空闲区,即,优先使用更小的空闲区。
- 如何实现:空闲分区按容量递增次序链接。每次分配内存时顺序查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。
- 最坏适应算法(Worst Fit)
- 算法思想:为了解决最佳适应算法的问题――即留下太多难以利用的小碎片可以在每次分配时优先使用最大的连续空闲区,这样分配后剩余的空闲区就不会太小,更方便使用。
- 如何实现:空闲分区按容量递减次序链接。每次分配内存时顺序查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。
- 邻近适应算法(Next Fit)
- 算法思想:首次适应算法每次都从链头开始查找的。这可能会导致低地址部分出现很多小的空闲分区,而每次分配查找时,都要经过这些分区,因此也增加了查找的开销。如果每次都从上次查找结束的位置开始检索,就能解决上述问题。
- 如何实现:空闲分区以地址递增的顺序排列(可排成一个循环链表)。每次分配内存时从上次查找结束的位置开始查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。
3.6 基本分页存储管理的基本概念
- 将内存空间分为一个个大小相等的分区(比如:每个分区4KB),每个分区就是一个“页框”,或称“页帧”、“内存块”、“物理块”。每个页框有一个编号,即“页框号”(或者“内存块号”、“页帧号”、“物理块号”)页框号从0开始。
- 将用户进程的地址空间也分为与页框大小相等的一个个区域,称为“页”或“页面”。每个页面也有一个编号,即“页号”,页号也是从0开始。
- (注:进程的最后一个页面可能没有一个页框那么大。因此,页框不能太大,否则可能产生过大的内部碎片)
- 操作系统以页框为单位为各个进程分配内存空间。进程的每个页面分别放入一个页框中。也就是说,进程的页面与内存的页框有一一对应的关系。
- 各个页面不必连续存放,也不必按先后顺序来,可以放到不相邻的各个页框中。
- 计算步骤:
- 要算出逻辑地址对应的页号(页号 = 逻辑地址 / 页面长度 )取整
- 要知道该页号对应页面在内存中的起始地址
- 要算出逻辑地址在页面内的“偏移量”(页内偏移量 = 逻辑地址 % 页面长度)取余
- 物理地址 = 页面地址 + 页内偏移量
- 页表
- 为了能知道进程的每个页面在内存中存放的位置,操作系统要为每个进程建立一张页表。
- 一个进程对应一张页表
- 进程的每一页对应一个页表项
- 每个页表项由“页号”和“块号”组成
- 页表记录进程页面和实际存放的内存块之间的对应关系
- 每个页表项的长度是相同的,页号是“隐含”的
3.7 基本地址变换机构
- 用于实现逻辑地址到物理地址转换的一组硬件机构
- 通常会在系统中设置一个页表寄存器(PTR),存放页表在内存中的起始地址F和页表长度M。进程未执行时,页表的始址和页表长度放在进程控制块(PCB)中,当进程被调度时,操作系统内核会把它们放到页表寄存器中。
- 设页面大小为L,逻辑地址A到物理地址E的变换过程如下:
- 计算页号Р和页内偏移量w(如果用十进制数手算,则P=A/L,W=A%L;但是在计算机实际运行时,逻辑地址结构是固定不变的,因此计算机硬件可以更快地得到二进制表示的页号、页内偏移量)
- 比较页号P和页表长度M,若P>M,则产生越界中断,否则继续执行。(注意:页号是从O开始的,而页表长度至少是1,因此P=M时也会越界)
- 页表中页号p对应的页表项地址=页表起始地址F+页号p*页表项长度,取出该页表项内容b,即为内存块号。(注意区分页表项长度、页表长度、页面大小的区别。页表长度指的是这个页表中总共有几个页表项,即总共有几个页;页表项长度指的是每个页表项占多大的存储空间;页面大小指的是一个页面占多大的存储空间)
3.8 具有快表的地址变换机构
- 局部性原理
- 什么是快表(TLB)
- 引入快表后,地址的变换过程
-
操作系统储存管理功能
2019-05-12 11:32:59操作系统的存储管理功能分为四个部分 地址映射 虚拟储存 内存分配 储存保护 一:地址映射 1. 固定地址映射 在编程或编译确定逻辑地址和物理地址的映射关系 特点:程序加载时必须放在指定的内存区域 容易产生地址冲突...操作系统的存储管理功能分为四个部分
- 地址映射
- 虚拟储存
- 内存分配
- 储存保护
一:地址映射
1. 固定地址映射
在编程或编译确定逻辑地址和物理地址的映射关系
特点:程序加载时必须放在指定的内存区域
容易产生地址冲突,运行失败2. 静态地址映射
程序装入时由操作系统完成逻辑地址到物理地址的映射
MA = VA + BA
特点:程序运行之前确定映射关系,装入后不能移动,占用连续的内存空间3. 动态地址映射
在程序执行过程中把逻辑地址转换为物理地址
MA = VA + BA
特点:程序占用的内存空间可动态变化,不要求连续的内存空间,便于多个进程共享代码,缺点是硬件支持(MMU),软件复杂二:虚拟存储
借助辅存在逻辑上扩充内存,解决内存不足的问题
过程:- 迁入:将要运行的部分装入内存
- 迁出:把不运行的部分暂时放在辅存
前提
短时间内进程不运行的部分往往占大部分
程序局部性原理
时间局部性
空间局部性实现虚拟存储的前提:
足够的辅存
适当容量的内存
地址变换机构三:内存分配
为程序分配足够的内存空间
1. Windows虚拟地址空间分配
在32位的机器上,地址空间从
0x00000000~ 0xFFFFFFFF
,总大小为4GB。一般而言,低地址空间,从0x00000000~ 0x7FFFFFFF
使用户空间,高地址空间被分配给系统。总体:
虚拟内存范围 功能 0x00000000 ~ 0x0000FFFF 这段内存为空指针区,不可以同时访问 0x00010000 ~ 0x7FFEFFFF 这段供进程使用,包括所有的数据,静态或动态加载的exe和dll模块,以及内存映射文件 0x7FFF0000 ~ 0x7FFFFFFF 此64KB是禁止访问的,因为它挨着内核区域,防止内核区域被覆盖,以破坏内核的正确性和完整性,试图改写此区域,会产生异常,以阻拦进一步改写内存区域 0x80000000 ~ 0xFFFFFFFFF 内核区域,用于线程调度,内存管理,文件系统支持,网络支持和所有设备驱动的代码全部在次分区加载,驻留在这个分区中的一切均可被所有进程共享 用户低2GB空间分配:
虚拟内存地址范围 功能 0x0 ~ 0xFFFF 拒绝访问区域,用于帮助程序员避免引用错误的指针 0x00010000 ~ 0x7FFEFFFF 专用进程地址空间 0x7EFDE000 ~ 0x7EFDEFFF 用于第一个线程的线程环境块(TEB),系统会在这一页的前面创建附加的TEB(从0x7FFDD000开始向上) 0x7FFDF000 ~ 0x7FFDFFFF 进程环境块(PEB) 0x7FFE0000 ~ 0x7FFE0FFF 共享的用户数据页,这个只读方式的页面被映射到系统空间中包含系统时间,时钟计数和版本号信息的一个页面,这个页面的存在使数据在用户态下可以直接读取而不必请求核心态的转换 0x7FFE1000 ~ 0x7FFEFFFF 拒绝访问区域 0x7FFF0000 ~ 0x7FFFFFFF 拒绝访问区域,用于防止线程跨越用户/系统空间边界传送缓存区,在变量MmUserProbeAddress中包含此页的起始地址 核心高2GB空间分配:
虚拟内存地址范围 功能 0x80000000 ~ 0xc0000000 内核执行体,HAL和硬件驱动程序 0xc0000000 ~ 0xc0800000 进程页和超空间 0xc0800000 ~ 0xFFBE000 系统高速缓存,分页缓冲池,非分页缓冲池 0xFFBE000 ~ 0xFFC0000 崩溃储存驱动程序区域 0xFFC0000 ~ 0xFFFFFFF 留给HAL使用 2. Linux虚拟地址空间分配
在 Linux 操作系统中,虚拟地址空间的内部又被分为内核空间和用户空间两部分,不同位数的系统,地址空间的范围也不同。比如最常见的 32 位和 64 位系统,如下所示:
用户空间与内存空间
通过这里可以看出:
32
位系统的内核空间占用1G
,位于最高处,剩下的3G
是用户空间;64
位系统的内核空间和用户空间都是128T
,分别占据整个内存空间的最高和最低处,剩下的中间部分是未定义的。
再来说说,内核空间与用户空间的区别:
- 进程在用户态时,只能访问用户空间内存;
- 只有进入内核态后,才可以访问内核空间的内存;
虽然每个进程都各自有独立的虚拟内存,但是每个虚拟内存中的内核地址,其实关联的都是相同的物理内存。这样,进程切换到内核态后,就可以很方便地访问内核空间内存。
Linux进程在内存中的详细存储方式:
通过这张图你可以看到,用户空间内存,从低到高分别是 7 种不同的内存段:
- 程序文件段,包括二进制可执行代码;
- 已初始化数据段,包括静态常量;
- 未初始化数据段,包括未初始化的静态变量;
- 堆段,包括动态分配的内存,从低地址开始向上增长;
- 共享库内存映射段,包括动态库、共享内存等,从低地址开始向上增长(跟硬件和内核版本有关);
- 栈段,包括局部变量和函数调用的上下文等。栈的大小是固定的,一般是
8 MB
。当然系统也提供了参数,以便我们自定义大小;
在这 7 个内存段中,堆和享库内存映射段的内存是动态分配的。比如说,使用 C 标准库的
malloc()
或者mmap()
,就可以分别在堆和文件映射段动态分配内存。内存管理
每个进程都拥有自己的4G(32位机)虚拟内存地址,各个进程之间是相互独立的,每个进程的数据可由其中线程共享。虚拟内存地址本身不对应任何物理地址,直接引用会引发错误,虚拟内存地址必须映射物理地址后才能储存数据。内存分配其实指的是虚拟内存地址映射物理内存,内存回收就是指解除映射关系。
四:储存保护
保证在内存中的多道程序只能在给定的储存区域内活动并互不干扰
- 防止访问越界
- 防止访问越权
方法:界址寄存器
在CPU中设置一对下限寄存器和上限寄存器存放程序在内存中的下限地址和上限地址
程序访问内存时硬件自动将目的地址与下限寄存器和上限寄存器中存放的地址界限进行比较,判断是否越界关于计算机硬件存储系统详细见计算机存储系统
-
操作系统 存储管理实验报告
2020-06-19 10:05:40本实验的目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。 二、实验内容 (1) 通过计算不同算法的命中率比较算法的优劣。同时也考虑了用户内存容量对... -
存储管理——页式存储管理
2020-01-16 15:07:38一、页式存储管理的基本思想 *把主存划分成多个大小相等的页架 *程序受页架尺寸限制,程序的逻辑地址也自然分成页 *不同的页可以放在不同页架中不需要连续 *页表用于维系进程的主存完整性。 1、页式存储管理中的地址... -
使用T-SQL语句完成存储过程的创建和管理
2020-06-06 09:40:22创建一个名为 Query_student 的存储过程,该存储过程的功能是根据学号查询学生表中某一学生的学号、姓名、性别及出生日期。 create proc Query_student @snum varchar(10) as select snum,sname,ssex,2020-sage as ... -
TF存储卡“格式化没有顺利完成”问题解决的方法
2021-07-13 01:13:54今天给大家带来TF存储卡“格式化没有顺利完成”问题解决的方法,让您轻松解决问题。 今天在使用TF卡的时候总是出现无法格式化的现象,不知道大家有没有遇到过,本来想用TF做一个U盘启动系统的,结果怎么也无法格式化... -
操作系统存储管理之页式存储管理、段式存储管理
2019-04-13 14:47:16页式存储管理 ** 一、页式存储管理的基本原理 【页式存储管理的基本原理】 分页存储器将主存划分成多个大小相同的页架 受页架尺寸限制,程序的逻辑地址也自然分页 不同的页可以放在不同页架中,不需要连续 页表用于... -
存储管理的功能
2017-05-29 08:57:02存储管理主要是完成如下功能: 存储分配 , 存储共享 , 存储保护 , 存储扩充 , 地址映射 。 存储分配 我们知道,当一个作业进入内存时,操作系统会将其转变为进程,同时为其分配存储空间以供运行,而进程... -
分页存储管理方式
2018-12-05 18:28:54存储管理的离散分配方式 基本分页存储管理 基本分段存储管理 段页式存储管理 二.基本分页存储管理 离散分配内存: 作业规定大小划分成小份;内存也按同样大小划分成小份 作业的任一小份可分散放入内存任意未... -
段页式存储管理方式详解
2020-05-12 15:34:32段页式存储管理方式详解分段存储方式引入目的:基本原理分段段表地址变换机构信息保护信息共享分页与分段的主要区别:段页式存储管理方式引入原因:基本原理段表与页表地址变换机构 分段存储方式 引入目的: 满足用户在... -
信息存储与管理(一)
2020-03-18 14:31:541.存储系统 第1章 信息存储与管理 数据类型,数据可以根据如何存储和管理...存储区域网SAN:专用的、高性能的FC网络,用来完成服务器和存储设备之间块级别的通信。 网络互联存储NAS:专用于文件服务类应用的存储设... -
网络存储技术Windows server 2012 (项目四 存储池的高级配置与管理)
2021-05-18 19:51:54网络存储技术Windows server 2012(项目四 存储池的高级配置与管理) 网络存储技术Windows server 2012 (项目四 存储池的高级配置与管理) 存储池的高级配置与管理一、项目实训题二、环境准备三、操作步骤1... -
存储管理之分页存储管理方式C语言模拟(实验五)
2016-12-13 11:32:37分页存储管理方式,将程序划分为若干个大小固定的区域(页),也把物理内存划分为大小和页相等的块,通过页表完成页到块的映射。 分页存储管理之C语言模拟: #include #include #include #define PAGE 20 int ... -
操作系统 - 虚拟存储管理技术之虚拟页式存储管理
2018-09-16 19:55:23请求分页式存储管理是基于分页式存储管理的一种虚拟存储器 1. 相同点 a. 把内存空间划分成尺寸相同、位置固定的块 b. 按照内存块大小,把作业的虚拟地址空间(相对地址空间)划分成页(划分过程对用户透明) c. ... -
操作系统——分区存储管理
2019-10-16 20:16:40分区存储管理是把主存储器中的用户区作为一个连续区或分成若干个连续区进行管理,每个连续区中可装入一个作业。 多道程序系统一般都采用多个分区的存储管理,具体可分为固定分区和可变分区两种方式。 一、固定分区... -
【操作系统】分页存储管理方式
2016-12-12 21:16:25离散分配方式连续分配存储管理方式产生的问题: 要求连续的存储区 碎片问题 变连续分配为离散分配,允许将作业离散放到多个不相邻接的分区中。 分页式存储管理:离散分配的基本单位是页 分段式存储管理:离散分配的... -
计算机操作系统 电子科技大学 第三章:存储管理(测试1)
2020-06-15 11:23:401.内存管理的主要目的是( ) 编号 选项 A 方便用户 B 增加内存物理容量 C 方便用户和提高内存利用率 D 提高内存利用率 2.关于内存管理,下列叙述中正确的是( ) 编号 选项 A 内存保护的... -
操作系统-页式虚拟存储管理中地址转换和页式中断
2020-03-05 11:15:00通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解。熟悉虚存管理的各种页面淘汰算法。通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。深入了解页式存储管理如何实现地址转换;进一步... -
操作系统存储管理之分段存储
2017-04-23 14:57:56而分段存储管理的引入,则满足用户(程序员)编程和使用上的要求,这些要求其它各种存储管理技术难以满足。需求解析: 在分页存储管理中,经连结编辑处理得到了一维地址结构的可装配模块,这是从0开始编址的一个单一连续的... -
操作系统实验五 存储管理—页面置换算法模拟
2020-10-21 09:33:45通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟存储技术的特点,掌握虚拟存储请求页式存储管理中几种基本页面置换算法的基本思想和实现过程,并比较它们的效率。 [实验学时] 4学时 [实验类型] 设计... -
操作系统实验三 可变分区存储管理
2019-05-19 15:27:43实验三 可变分区存储管理 一.实验目的和要求 通过这次实验,加深对内存管理的认识,进一步掌握内存的分配、回收算法的思想。 二.实验目的和要求 阅读教材《计算机操作系统》第四章,掌握存储器管理相关概念和... -
操作系统基础(存储管理)
2018-09-20 04:10:503.存储管理中,对存储空间的浪费是以 内部碎片 和 外部碎片 两种形式表现出来的。 4.地址重定位可分为 静态重定位 和 动态重定位 两种方式。 5.在可变分区存储管理中采用最佳适应算法时,最好按 尺寸 法来组织... -
用Python写一个任务管理器进行工作协调
2021-08-13 09:03:58文章目录用Python写一个任务管理器进行工作协调介绍一、添加任务二、删除任务三、标记任务完成四、查看所有的任务五、退出系统六、主程序七、代码汇总 介绍 现在有很多工作管理的系统,我们此次使用Python来自己构建... -
分段存储管理+逻辑地址转化为物理地址+例题
2021-04-25 21:49:39访问次数 每访问一个数据,需要访问内存两次 4. 逻辑地址转化为物理地址 为了实现进程,从逻辑地址到物理地址的转换功能,在系统中设置了段表寄存器,用于存放段表始址和段表长度TL。最进行地址转换时,系统将逻辑... -
用python写:完成一个员工管理系统 要求存储员工的工号、姓名、年龄、性别、工资 1、员工录入 2、查询...
2018-11-27 08:24:43完成一个员工管理系统 要求存储员工的工号、姓名、年龄、性别、工资 1、员工录入 2、查询员工信息 3、修改员工信息 4、删除 5、根据工号查看 6、退出 Emp.py #!/usr/bin/python # -*- coding: UTF... -
请求分页存储管理方式
2017-10-08 10:22:57在采用请求分页存储管理的系统中,如果页面不在内存则发生缺页中断,它属于() 外部设备中断 硬件故障中断 .I/O中断 程序中断 解答:D 程序中断是指:CPU在执行程序的过程中,因出现某种随机事件而收到... -
表单式工作流功能模块设计方案
2021-08-26 13:48:41最近一个项目中需要独自设计一个表单式工作流功能模块,在此将整个功能模块的设计思路分享出来。 -
U盘的工作原理(读取和存储数据)
2021-01-04 17:40:14U盘设计 “USB闪存盘”(以下简称“U盘”)是基于USB接口、以闪存芯片为存储介质的无需驱动器的新一代存储设备。...主控芯片负责各部件的协调管理和下达各项动作指令,并使计算机将U盘识别为“可移动磁盘”.