操作系统考研复习 第三章内存管理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章存储器管理
1 源程序变为内存中可执行的程序需要经过哪些步骤?这些步骤分别有哪几种方式?
A编译:源代码编译成目标模块.obj
B链接:与库函数链接在一起,形成装入模块(静态链接、装入内存时动态链接、运行时动态链接)
C装入:装入内存运行。有绝对装入(绝对地址)、可重定位装入(静态重定位;装入时地址重定位)、动态运行时装入(动态重定位;运行时地址重定位,需要重定位寄存器支持);
2 什么叫重定位?动态重定位特点是什么?(重定位的好处)
在存储器管理中什么是重定位?为什么要引进重定位技术?2014
当装入程序将可执行代码装入内存时,把逻辑地址转换成物理地址的过程,叫重定位。(一般没特殊说明,指的就是动态重定位)
1将程序分配到不连续的存储器中;
2只需投入部分代码即可运行;
3运行期间,根据代码需求动态申请内存;
4便于程序段的共享,可用向用户提供一个比存储空间大很多大地址空间。
3内存是如何进行保护的?(访问内存的地址是如何识别正确性的?)
(内存保护是为了确保操作系统的地址区不受用户进程的影响)
使用重定位寄存器(含最小物理地址)和界地址寄存器(逻辑地址)来保护的。
首先将逻辑地址与界地址比较,小于则与重定位地址相加映射成物理地址;大于则出现越界中断。
4什么是覆盖技术、交换技术?
覆盖:把用户空间分成一个固定区和若干的覆盖区,经常活跃的放在固定区,其他按需要调入覆盖区。
覆盖优缺点:打破了将进程全部信息装入内存才能运行的限制;
当同时运行的程序代码量大于内存仍不能运行、并且用户需给出覆盖区的结构交换:即中级调度的进程的换入和换出。
(现在已经不使用覆盖技术,现在是通过虚拟存储技术来解决的)
1内存分配管理有哪些方式?
根据作业是否在同一分区划为连续分配和非连续分配。
A连续分配:1单一连续分配、2固定分区、3动态分区。
B非连续分配:1分页、2分段、3段页式(每个又根据是否使用虚拟内存技术分为基本和请求)
2简述连续分配管理的方式有哪些?优缺点有什么?
A单一连续分配:分为系统区和用户区。无需内存保护。
优缺点:有内部碎片,内存利用率低,且只适用于单任务单用户的OS中。
B固定分区分配:将内存空间划分为固定大小区域,每个区域只装入一道作业。
缺点:程序太大放不进去、主存利用率低、产生内部碎片。
C动态分区分配:根据进程大小动态建立分区,使分区大小正好适应进程需要。
缺点:刚开始的时候是比较好的,后面会导致外部碎片的产生。
3什么是内部碎片?外部碎片、通过什么技术来解决?
内部碎片:程序小于固定分区大小,导致分区内部空间有剩余。
外部碎片:在分区外部产生难以使用的碎片。
外部碎片通过“紧凑”技术来解决。
4动态分区分配的空闲分区的分配策略有哪些?优缺点是什么?
首次适应算法First Fit:空闲分区按地址顺序次序链接起来,每次都分配第一个;
最佳适应算法Best Fit:空闲分区按从小到大链接起来,每次分配最能适应程序大小的那一个;
最坏适应算法Worst Fit:空闲分区按从大到小顺序链接起来,每次分配最大的空间;
循环首次适应算法Next Fit:首次适应算法;只不过下一次寻找是从上一次结束位置开始。
First Fit:最简单,且效果最好、最快的。
缺点是内存低址部分出现很多小的分区,且每次查找都要经过这些分区。
Best Fit:实际上比较差,因为每次分配都留下难以利用的内存块,产生最多的碎片。Worst Fit:导致很快没有可用的大的内存块。
Next Fit:它试图解决首次适应算法的问题,但实际上会导致在内存末尾分配空间。比首次还差。
1 连续分配的固定分区分配与非连续的分页管理有什么不同?
分页在形式上看与固定分区一样,但实际上不一样;
分页的大小比固定分区小很多,且分页是按进程分页,内存分块(页框),进程按块为单位申请空间,所以只会在最后一块中产生页内碎片,所以不会产生外部碎片。这会使一个作业的进程可能被分到了不同的块中。
2什么是页表?
分页存储管理系统中,页表的主要作用是什么?现代大多数计算机系统都支持非常大的逻辑地址空间,这给页表设计带来什么问题?(页表太大)2014
页表是为了便于在内存中找到进程中每个页面对应的物理块号,系统为每一个进程建立一张页表,记录在内存中物理块号,页表也一般放在内存中。
3分页管理方式存在哪两种主要的问题?
每次访问内存需要逻辑地址转化到物理地址,所以转化速度必须快;【快表】
每个进程引入页表机制,页表不能太大,否则内存利用率低【多级分页和请求分页】(见下)
4页表太大会带来什么问题?解决方法有哪些?
难以在内存中找到一块连续的地址,放下这么大的页表。即便是找到,也会占用内存很大的空间,内存的空间利用率下降。
1采用离散分配方式解决难以找到一块连续的大内存空间;【多级页表】
2只需将当前需要的部分页表项调入内存,其余页表项驻留在外存上。【请求分页】
5 页表是什么组成的?分页的地址结构?
整张页表,是由一个个页表项组成。每一个页表项由页号和所对应的块号组成。
分页的地址结构由“页号”+“页内偏移量”组成。例如地址长度32位(页号31~12,页内偏移11~0)则
1“页号”就是整张页表中页表项的偏移量。(现在页号20位,即能支持的页表项个数为220个。最大页表项所对应的页号是220-1。
2如果把一页里面放满页表编号(不是页号,页号是一页里面的页表项的偏移量),即该一页中的页号中的一位对应一张页表,就是能支持最大页数。(地址空间所允许的最大页数为220页)
3“页内偏移量”就是一页的大小。(现在页内偏移量为12位,即212B=4KB。即现在一页的大小为4KB)
6慢表的地址变换过程?(整个过程由硬件自动完成)