写作目的:为了应对考研复试中的面试,我整理了导师可能提问的地方,力求用口语化的语言描述出来。
这只是一部分,陆续还有操作系统的其它章节,还会推出数据结构、计算机网络、数据库的复试题整理
思维导图在我的processon。如果对你有帮助就打赏一下吧。
https://www.processon.com/view/link/5e79c7ede4b06b852ff3a8e2
目录
内存管理的功能?
内存回收和分配功能,使程序员摆脱手动分配回收的麻烦,提高效率。
地址转换功能,如逻辑地址和物理地址的转换。
内存空间扩充,利用虚拟存储技术和覆盖技术扩充内存。
存储保护,使多道程序运行时不发生越界。
程序装入和链接?
编译、链接、装入
编译:编译程序将源码编译成目标模块;
链接:链接程序将目标模块和函数库链接,形成装入模块;
装入:装入程序将装入模块装入内存运行。
链接又分为:静态链接、装入时动态连接、运行时动态连接。
静态链接:装入前一次性链接完成。
装入时动态链接:边装入边链接。
运行时动态链接:在程序要执行到目标模块时才进行链接,优点是易于更新和修改,便于实现目标模块的共享。
装入又分为:绝对装入、可重定位装入、动态运行时装入。
绝对装入:知道程序在内存中驻留的位置,编译程序产生绝对地址。
可重定位装入:多道环境中,多个模块的起始地址都从0开始,程序中的其它地址都是相对起始地址的。特点是:作业装入内存必须给它一次性分配所需空间,运行期间不可移动,不可再次申请内存空间。
动态运行时装入:程序装入内存后,并不立刻转化成绝对地址,而是到真正要运行这段程序时在转换。特点是:可以将程序分配到不连续的内存;可以只装入部分代码就能运行;可动态申请内存;需要重定位寄存器支持。
内存保护如何实现的?
内存保护采用两种方法:①上下限寄存器法;②重定位寄存器和界地址寄存器组合法。
第二种方法中:界地址寄存器含有逻辑地址的最大地址,是用来“比较”的;重定位寄存器含有物理地址最小值,是用来“加”的。
逻辑地址和物理地址
逻辑地址:编译后每个目标模块都从0开始编制,叫做相对地址或逻辑地址。
物理地址:是地址转换后的最终地址。装入程序将代码装入内存,必须将逻辑地址变成物理地址,称为地址重定位。
单一连续分配、固定分区分配、动态分区分配的比较?
单一连续分配:将内存分成系统区和用户区。优点:简单、无外部碎片;缺点:适用于单道程序,有内部碎片,内存利用率非常低。
固定分区分配:将内存空间划分成大小固定的分区,每个分区只装入一个作业。分区大小可以相等也可以不等。优点:可以多道程序;缺点是:分区固定不变,程序不能太大,否则放不进去,有内部碎片;内存利用率低。
动态分区分配:不预先划分分区,而是等程序装入内存时再划分。优点是:可以使分区大小刚好合适。缺点是:会产生较小的外部碎片分配不出去。
动态分区有哪些策略?
首次适应算法、最佳适应、最坏适应、邻近适应算法。
覆盖与交换的概念?
覆盖是在同一程序或进程中进行的。交换是在不同进程之间进行的。
多级页表解决了什么问题,带来了什么问题?
解决了当逻辑地址空间大时,页表的长度会大大增加的问题。带来了采用多级页表时,一次访盘需要多次访问内存甚至磁盘,会增加一次访问的时间。
描述页式存储管理。
思想:把主存空间划分成大小相等且固定的块,块相对较小,作为主存的基本单位。每个进程也以块为单位划分。不会产生外部碎片,平均只会产生半个块大小内部碎片。
进程中的页称为页,内存中的页称为页框。外存中也进行划分称为块。
页式存储管理由:页及相关概念、地址结构、页表、地址变换机构组成。
地址结构包括:页号、页内偏移。
页表的组成包括:页号、块号。
地址变换是硬件自动完成的;分页机制是对用户完全透明的。
描述段式存储管理
这种管理方式考虑到了程序员的感受,以满足方便变成、信息保护和共享、动态增长及动态链接等要求。它按用户进程中的自然段划分逻辑空间,每个段从0开始编址,并分配连续的地址空间。段内连续,段之间可以不连续。
段式存储管理由:分段、段表、地址结构、地址变换机构组成。
段表结构包括:段号,段长,段的起始地址
段地址的组成:段号、段内的偏移。
虚拟存储器的定义和特性
定义:基于局部性原理,只需要把程序的一部分装入内存就可运行起来。在执行过程中,程序要访问的信息不在内存,由操作系统将所需的部分调入内存执行。操作系统将暂时不用的内容换出到外存上,空闲空间存放从外存换入的信息。这样操作系统就好像为用户提供了一个比实际内存大得多的存储器。
特性:多次性、对换性、虚拟性
虚拟内存技术的实现需要的硬件支持
1、一定容量的内存和外存 ;2、页表机制;3、中断机构,产生中断;4、地址变换机构
页面置换算法
最佳置换算法:最优,但由于无法预测未来,只能是理想中的算法,可以用来作为参考评估其他算法的性能。
先进先出算法:最公平,但会出现belady现象。
最近最久未用算法(LRU):算法原理是,如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。算法性能好,需要寄存器和堆栈的支持。
时钟置换算法clock算法(又称为NRU最近未用算法):时钟轮转法将所有的页组成一个圆,圆心的指针指向下一个要被置换的页面,置换前检查使用位,如果使用位为1,同样将其使用位置为0,随后将顺指针旋转,检查下一个页面,直到发现某页的使用位为0,将此页置换出内存。
描述三种页面分配策略
固定分区局部置换:系统为每个进程分配一定数量的物理块,在整个运行期间都不改变。若进程在运行过程中发生缺页,则只能从该进程在内存中的页面中选出一页换出,然后再调入需要的页面。缺点:难以确定进程所需的合适的物理块数。
可变分区全局置换:刚开始会为每个进程分配一定数量的物理块。操作系统会保持一个空闲物理块队列。当某个进程发生缺页时,从空闲的物理块中取出一块分配给该进程;缺点,有可能会盲目的给进程增加物理块,导致多道程序并发能力下降。
可变分区局部置换:刚开始会为每个进程分配一定数量的物理块。当某进程发生缺页时,只允许从该进程自己的物理块中选出一个进行换出外存。如果进程中运行中频繁缺页,系统会为该进程多分配几个物理块,直至该进程缺页率趋势适当程度;反之,如果进程在运行中缺页率特别低,则可适当减少分配给该进程的物理块。
抖动、工作集的定义
抖动:刚换出的块又被换出到外存中。主要因为频繁访问的页面数高于可用的物理页数目。
工作集:某段时间间隔内,程序要访问的页面集合。