题型:
- 选择题 11题*2分 基本概念以及数据结构
- 名词解释 5题*3分
- 解答题 5题*5分
- 问答与计算题 12 13 13 分
- 5 6 9 11
- 非标准试题
1
-
了解:
- 计算机系统的状态——CPU用户态,系统态,状态、概念以及引入原因
- 用户态:一些内存区域受到保护;特权指令不能执行
- 系统态:受保护的内存区域可以访问;特权指令可以执行
- 引入原因:当在系统中执行一个程序时,大部分时间是运行在用户态下的,在其需要操作系统帮助完成一些用户态自己没有特权和能力完成的操作时就会切换到内核态。长时间位于系统态会使得危险的特权指令可能危害计算机执行。
- 中断产生原因:最根本原因:程序并发,提高程序效率。
- 中断处理流程:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JuMiIW2p-1593666814636)(./img/中断处理.png)]
- 中断线程保存以及恢复:
- 程序寄存器和程序状态寄存器的值保存系统栈
- 栈顶指针直指向新的栈顶,程序计数器的值也更新到中断处理程序的开始。
- 从系统栈恢复状态。
- 计算机系统的状态——CPU用户态,系统态,状态、概念以及引入原因
-
理解:
- 指令的周期:概念、组成阶段。引入中断以及没有引入中断。
- PC:程序计数器,保存下一条执行指令的地址,每次执行之后+1
- IR:指令寄存器,保存正在执行的指令。
- 指令的执行周期:一条指令的执行时间。不同指令执行周期不同。取码,译码,执行。
- 中断的概念:一个正在执行的程序被突发的事件打断,转而去执行其他事件,突发事件执行完了再回到中断点继续执行。最根本原因:程序并发,提高程序效率。(不可预测/随机性,可屏蔽性,可嵌套性)
- 存储的层次结构:
- 引入的原因:对存储器成本,性能,容量进行折中,使得效率最高并且成本较低。
- 概念:越快的,越贵,容量越小,内存访问越多。快速设备与慢速设备,按照一定关系组成逻辑体系。
- 三级存储结构
- 板上存储器(inboard)
- 板外存储器(outboard)
- 离线存储器(offline storage)
- 局部性原理:概念以及工作的基础
- 时间局部性:最近访问的指令在不远的将来会再次访问。大量的函数与循环语句。
- 空间局部性:访问的指令的临近指令会很快被访问到。程序是顺序存储的。
- 冯诺依曼,指令顺序存储
- 大量函数以及循环
- IO通信的三种方法
- 可编程IO
- CPU向IO设备发送指令
- CPU一直查询知道IO完成,完成后CPU再执行后面的操作
优点:简单直接,容易实现
缺点:IO工作的时候,CPU不断查询,盲等待
- 中断IO:
- CPU发送给IO以后,IO独立执行
- CPU继续执行IO语句之后的语句
- IO完后操作之后,发送一条指令给CPU,CPU再与IO进行数据交换
优点:避免忙等待,提高效率
缺点:数据通信还是要CPU参与,没有解放出来
- DMA直接内存访问
- 增加DMA模块
- CPU首先通过DMA向IO发送通信指令,DMA充当秘书
- DMA将要读取的数据加入到内存的时候,或者全部传递给IO之后,DMA发送中断到1. CPU,表示数据通信已经全部结束。
优点:将CPU从琐碎的数据通信解放出来,提高效率
缺点:增加DMA模块,增加硬件成本
- 可编程IO
- 指令的周期:概念、组成阶段。引入中断以及没有引入中断。
2
-
了解:
- 中断在多道程序的作用:中断是为了提升计算机系统的效率,IO设备多。
- 多道程序:当一个程序需要调用 I/O 设备的时候,CPU 不会进行盲等待,而是转而去执行其他的程序。这样会大大提高计算机的效率。
- 操作系统的类型:概念,优缺点,区别
- 串行系统:用户直接对系统进行顺序操作
- 典例:ENIAC
- 特点:程序员直接操作硬件。
- 优点:简单直接
- 缺点:硬拷贝,时间无法控制;用户交互性不好;准备时间较长,资源浪费,人机矛盾。预约时间长:浪费;时间短,做不完程序。
- 批处理:使用监控程序来控制事件执行序列(原因:IO设备使得CPU不忙)
- 缺点:监控程序占用内存;监控程序占用机器时间
- 优点:提高计算机系统的利用率
- 多道系统:当需要等待I / O的作业时,处理器可以切换到其他作业
- 缺点:内存管理;计划/保存和还原;竞争资源;依赖硬件资源(支持IO中断,有DMA)
- 优点:提高效率
- 分时系统:处理器的时间在多个用户/作业之间共享。将系统处理时间与内存空间轮流切换给各个用户,时间短,就像是单独使用计算机。(硬件支持。问题:内存管理;调度;竞争资源)
- 操作系统以及一般程序之间的差异:
- 是控制程序执行的程序
- 主动释放以及获取CPU控制权
-
理解:
- 操作系统概念:对运行计算机上面的各种应用程序行为进行调度,并对计算机中的资源进行管理。操作系统是一组程序,计算机接口,对资源进行有效管理。
- 多道
- 分时系统
- 批处理系统
-
掌握:
-
操作系统的主要目标/设计原则:
-
方便性:能够让用户方便实用计算机
-
有效性:能够对计算机上面的各类资源进行有效管理,使得计算机使用效率同等条件最大化。
-
易于扩展性:提供便利的升级接口,对系统功能完善扩充。
-
操作系统的功能
- 程序开发:提供了编辑器,编译器
- 程序执行:从辅存调用程序执行
- I/O访问功能:屏蔽I/O差异,体统统一方式使用I/O
- 文件访问控制功能:长期保存数据的技术手段,方便用户将逻辑数据存储器在物理外存储器中
- 操作系统访问控制技术,保证合法用户在合法权限内对计算机技能进行高效访问。
- 检测错误并且进行响应
- 审计:对计算机使用的情况进行检测
-
分时系统以及批处理系统的产生类型:为什么引入分时系统以及批处理系统:多道程序使得批处理更加有效,但是对于许多作业,需要用户与计算机直接交互。
-
分时系统以及批处理系统异同联系,一张表。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pjAvCF4J-1593666814641)(./img/分时系统批处理比较.png)]
-
3进程的介绍
-
了解:
- 操作系统为了实现进程需要CPU提供的硬件支持。以及为什么需要硬件支持。
- 进程概念:
- 程序的一次执行
- 是包含指令序列,运行状态,相关资源的活动单位。
- 进程由指令、数据以及相关运行状态组成。
- 引入进程的原因:能够同时运行多个程序,保证进行有效的切换。
- 进程以及程序之间的差异。概念,结构差异。
- 进程包含:指令序列,执行需要的各种数据,上下文(操作系统管理控制进程执行需要的各种内部数据)。
- 程序:静概念,没有上下文。
- 进程的生命周期:7状态图
- 阻塞函数的含义:
- 进程概念,以及进程的组成(见上面)
- PCB进程控制块
- 包含进程元素
- 由操作系统创建和管理
- 允许支持多个进程
- PCB详细功能
- 进程ID
- 处理器状态信息
- 用户可见的寄存器
- 控制和状态寄存器
- 堆栈指针
- 进程控制信息
- 计划和状态信息
- 数据结构
- 进程间通讯
- 进程权限
- 内存管理
- 资源所有权和利用
- CPU模式
- 进程的状态以及引入的原因
- 用户可见寄存器
- 控制和状态寄存器
- 栈指针
- 原因:操作系统是一种控制软件,为了对计算机系统中多个程序进行控制,要对程序运行状态有清楚地认识。
-
理解:
- PCB构成,一张图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f3CR3QB4-1593666814644)(./img/PCB.png)]
- 进程的5/7状态图:
- 状态名字
- 状态概念。
- 运行态:进程获得了 CPU,正在执行。
- 就绪态:具备一切的执行条件。CPU 被其他进程使用,不得不等待。
- 阻塞态:I/O 事件导致无法执行。
- 这个进程无法立即执行。
- 这个进程正在等待其他事件(I/O 操作,键盘输入等等)
- 进程被 agent(包括自己、父进程、或者操作系统)挂起,目的是防止这个进程的执行。
- 在挂起这个进程的 agent 没有命令改变挂起状态的时候,这个进程会一直保持挂起状态。
- 新建态:有一个程序即将演变成进程,已经分配了 PID。刚新建,但是内存不够,无法加载进入内存。
- 退出态:程序的指令和数据释放,PCB 留在内存中。
- 5/7状态图的状态变化
A.可能的
新建->就绪/挂起:新建进程,根据内存的空间是否排队,太多就放入二级存储
新建->就绪:新建进程,根据内存的空间是否排队
就绪->就绪/挂起:有高优先级的进程出现,挂起低优先级进程到二级存储。
就绪/挂起->就绪:高优先级执行结束,从二级存储中提取出就绪的内存,继续正常执行低优先级进程。
就绪->执行:结束排队等待,开始执行。
执行->就绪/挂起:进程的执行时间过长,超过时间片要求,操作系统将它挂起到二级存储。
执行->退出:执行完毕或者执行出现错误。
执行->阻塞:进程调用 I/O 操作等。
阻塞->阻塞/挂起:为其他进程让出空间,
阻塞/挂起->阻塞:内存空间比较空。
除了执行外的其他状态->退出:执行错误。
阻塞/挂起->就绪/挂起:等待处理的事件已经处理完毕。
B.不可能的
任何状态->新建:不合常理的
就绪->阻塞 or 挂起/阻塞:进程只有先运行才能被阻塞。
就绪/挂起->阻塞 or 挂起/阻塞:进程只有先运行才能被阻塞。
就绪->阻塞 or 阻塞/挂起:进程只有先运行才能被阻塞。
新建->除了就绪之外的状态:操作系统先对这个进程加入排队序列才能进行后续操作。
阻塞 or 阻塞/挂起->执行:要先进行排队。
退出->任何状态:时间不可能逆转。
阻塞/挂起->就绪:先改变状态为就绪/挂起,才能从二级存储提取到内存。
执行->阻塞/挂起:要先阻塞,才能移动到二级存储中。
阻塞->就绪/挂起:先变为阻塞挂起才能存入二级存储器中,再能改变状态。
就绪/挂起->执行:先从二级存储中取出,才能执行。 - 进程切换以及模式切换
- 概念
- 进程切换:一个进程执行过程中因为某些事件导致这个进程被终止,CPU交给其他进程执行。
- 模式切换:用户态到内核态,内核态到用户态。
- 差异
- 进程切换是,一个正在运行的进程被中断,操作系统指定另一个进程为运行态,并把控制权交给这个进程。进程切换可以在操作系统从当前正在运行的进程中获得控制权的任何时刻发生,由于进程之间不同状态的切换,需要重新分配各种资源,操作系统需要做更多的工作。
- 模式切换是,用户态和内核态之间的切换。因为他们的资源是共享的,所以效率高并且不改变正在运行的进程的状态。
- 概念
- 进程的创建流程
- 操作系统为内存分配一个整数作为PID来标识进程。
- 分配内存并加载。
- PCB初始化。
- 申请到的PID填入PCB。
- 初始化PCB中寄存器信息(初始化状态)
- 初始化进程的调度信息与控制信息。就绪状态、优先级等等。
- 设置连接:加入到就绪队列中去
- 产生进程中会用到的其他数据结构。比如日志。
- 进程切换的时期:
- 中断:进程执行过程被外部中断(可能产生进程切换,也可能不会)
- 时钟中断:时间片满了,程序被暂时终止
- I/O中断:调用I/O指令
- 内存失效中断:访问的指令数据不再内存中
- 陷阱:由于进程自身操作导致程序被终止(eg:除0)(可能产生进程切换,也可能不会)
- 系统操作:eg:open操作等等
- 进程切换流程:
- 保存处理器的上下文(包括程序计数器和其他寄存器)
- 更新当前处于“运行”状态的进程的PCB
- 将进程控制块移至适当的队列–准备,就绪,阻塞 准备/挂起
- 选择另一个进程执行
- 更新选择的进程的PCB
- 更新内存管理的数据结构
- 恢复所选进程的上下文
- 发生了进程切换一定有模式切换:调用操作系统。
4
- 了解:
- 理解:
- 什么叫做线程:程序当中独立执行的指令序列,及数据的集合。运行的程序中的具体函数或者方法。(创建快、结束快、切换快、通信快)
- 引入线程/进程原因:进程是资源拥有者,CPU的分配单位。引入线程提高并发度。
- 什么叫做SMP,对称多处理。概念,形式。紧密耦合:集群,松散耦合:smp,主从模式。
- 概念:内核可以再任何处理器上执行。每个处理器可以从可用的进程或者线程池中进行自己的调度。
- 形式:
- SISD单指令单数据流:单处理器执行单个指令流以操作存储在内存中的内存
- SIMD:每个指令由不同的处理器在不同的数据集上执行
- MISD:数据序列被传输给处理器,每个处理器都执行不同的指令序列。(不可实现)
- MIMD:一组处理器在不同的数据集上同时执行不同的指令序列
- 松散的耦合方式/分布式系统:将多个独立的计算机系统组合成逻辑独立的系统。集群。
- 紧密耦合的方式:总线连接,共享内存,I/O。
- 主从:CPU多个核心当中只有一个或者多个处于主模式,能够运行操作系统,并对计算机系统的资源进行分配。其余处于从模式,只能接受主给他的任务。
- SMP对称多处理:每个核心地位相同,可以运行操作系统,任务分配。资源管理。内核可以再任何处理器上执行。每个处理器可以从可用的进程或者线程池中进行自己的调度。
- 微内核
- 内核:常驻内存的一部分
- 微内核:操作系统中少部分核心功能常驻内存,其他的部分放在内核实现。
- 统一接口,调用操作系统中的各种服务。
- 可扩展性。在用户态对操作系统实现扩展。
- 灵活性。大部分在用户态,增加删除修改操作系统功能十分容易。
- 移植性,只用内核中与硬件相关的代码,大部分功能在用户态不用修改。
- 可靠性,非常小,测试很充分。常驻内存的性能很可靠,及时用户态出现问题,也不会影响整个操作系统运行。
- 分布式。消息机制同信,适合不同主机中的进程通信。
- 面向对象封装、支持、多态:提高可靠性、正确性、可扩展性。
- 单一内核/宏内核:将操作系统所有功能放到内存中。
- 掌握:
-
进程以及线程的关系
- 概念
- 组成上说明差异:线程:私有数据以及寄存器,其他共享进程
- 引入线程的原因:线程提高并发度。进程是资源分配单位,线程是CPU调度单位。
- 进程是资源分配单位。有一个虚拟地址空间(虚拟地址空间)它保存过程映像(代码,数据,堆栈和PCB);保护访问处理器,其他进程文件和I / O资源;包含一个或多个线程
- 线程有执行状态;上下文;执行栈;局部变量;共享所在进程的资源;
-
线程实现的方法:
- 用户态:稳定性。
- 线程的实现是通过用户的函数库实现。
- 线程对于操作系统而言是透明的。操作系统不知道线程存在,对OS而言,进程还是调度最基本单位。
- 内核态:用户态验证了线程的性能,技术以及相对成熟。
- 派生的内核状态,在操作系统的内核态中实现。
- 分配的基本单位:线程。
- 混合型:同时结合用户态以及内核态的优点
- 用户态:稳定性。
-
用户态进程,内核态的优缺点
用户态优点:- 不会涉及到模式切换,用户开销较小
- 方便用户的修改
- 方便移植,可以在任何系统上使用
- 应用程序专用
缺陷:
- 一个线程阻塞可能导致整个进程阻塞。
- 进程当中多线程的并发是没有真正实现的
解决: - 将多线程退化为多进程。针对第二个。
- 无塞系统调用。等待的时候可以执行I/O下面一条指令。
内核态优点:
- 解决两个问题
- 阻塞一个线程不会阻塞其他线程或进程
- 操作系统自己内核的实现,提升性能。
- 多个线程可以在多个处理器同时处理
缺点:
- 开销更大:模式切换。时间更多。
- 切换时间更多
-
使用微内核的好处,一张图——操作系统的执行模式。
- 缺点:增加模式切换的次数。
- 改进方式:内核更小。
-
5 同步互斥
-
了解:
- 并发以及并行的异同
- 并发:同一个时间段同时执行,交替执行。
- 并行:同一个时刻,时间点,多个进程同时运行。
- 计算机系统中为了解决并发程序存在的问题,引入的机制
- 软件方式:
- 优:用户态实现,灵活;
- 缺:对程序员较高的要求,实际可能会失效。
- 硬件:
- 屏蔽中断;多核失效。
- 硬件指令。原子操作。
- 操作系统.编译器
- 软件方式:
- 互斥同步概念。
- 并发以及并行的异同
-
理解:
- 并发:在同一个时刻,我们有若干个进程同时运行。
- 并行:同一个时刻,时间点,多个进程同时运行。
- 覆盖概念
- 同步:对临界资源访问有排他性访问与顺序限制。
- 互斥:一个进程在临界区访问资源,其他进程不能进入临界区进行访问。
- 条件竞争:多个进程的执行结果依赖于执行顺序。
- 表上的概念
- 原子操作:一个或者多个指令的序列,对外不可分割。没有其他进程可以看到中间状态或者中断这个操作。
- 信号量:组成。3中原子性操作。原子变量。队列。
- 临界区:是一段代码,访问共享资源。一个进程已经在这段代码中执行的时候,其他进程不能执行这段代码。
- 死锁:都在等待其他进程而不能完成自己工作。
- 活锁:持续改变自己状态而不能做有用工作
- 饥饿:可运行的进程能继续执行但是被调度器无限期忽略。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aBTwI08D-1593666814648)(./img/并发.png)]
-
掌握:
- 并发中要解决4个问题
- OS能掌握操作系统各种进程的状态
- OS为进程资源有效分配和回收。
- OS保护分配给进程的资源。
- 保证并发的进程有可再现性、与执行速度没有关系。
- 信号量的类型
- 一般信号量/计数信号量:进程间传递信号的整数值。递减可以阻塞进程,递增可以解除阻塞。
- 互斥量:加锁解锁的必须是同一个进程
- 强信号量:先进先出:被阻塞时间最久的先从队列中移除。
- 弱信号量:没有规定进程从队列中移除顺序的信号量。
- 实现互斥的三种方法
- 管程:语言结构。封装了变量,访问过程以及初始化代码
- 消息:两个进程交换信息的方式。
- 自旋锁:进程在死循环执行,等待锁条件为可用。
- 硬件上面实现互斥的描述。88
- 临界区问题
- 互斥(Mutual Exclusion)——如果进程Pi正在其临界区执行,其它任何进程都不允许在他们的临界区中
- 空闲让进/前进(Progress)——如果没有进程处于其临界区,并且某些进程申请进入其临界区,只有那些不在剩余区(remainder sections)的进程,才能参与能否进入临界区的选取,同时这个选举不允许无限期推迟。
- 有限等待(Bounded Waiting)——某一进程从起提出要求,至它获准进入临界区的这段时间内,其他进程进入他们临界区的次数有上界。
- 并发中要解决4个问题
-
计算题:
- 读者写者
- 生产者消费者
6 死锁饥饿
- 了解:
- 死锁的4中数据结构
- 死锁:都在等待其他进程而不能完成自己工作。
- 活锁:持续改变自己状态而不能做有用工作
- 饥饿:可运行的进程能继续执行但是被调度器无限期忽略。
- 理解:
- 死锁的必要/充分条件*3
- 互斥:计算机的资源不能共享访问。资源有限,不互斥会条件竞争(资源状态由最后一个进程决定)。
- 占有且等待:等待的时候,已经获得的资源不会释放
- 非抢占:不会抢占其他进程拥有的资源
- 充要条件:循环等待:一个进程等待其他进程释放事件,但是这个进程也在这个等待环之中。
- 解决死锁的方法*3
- 死锁检测:在每一次资源请求的时候,看进程中有没有死锁发生,如果有就用消除算法消除。周期性运行:定时。
- 退出死锁进程
- 回滚到检查点再重启
- 连续终止进程直到没有死锁
- 连续抢占资源直到没有死锁
- 死锁避免:资源被请求的时候查看是否可能会发生死锁,会的话不分配资源
- 进程启动拒绝:如果一个进程的请求会导致死锁,则不启动此进程
- 资源分配拒绝:如果一个进程增加资源的请求会导致死锁,则不容许此分配
- 死锁预防:死锁发生的条件避免一个就可以
- 间接
- 互斥不可预防,是操作系统基本要求
- 占有等待:一次请求所有资源
- 非抢占:被拒绝后释放所有资源\被高优先级进程抢占
- 直接
- 循环等待:线性顺序
- 间接
- 死锁检测:在每一次资源请求的时候,看进程中有没有死锁发生,如果有就用消除算法消除。周期性运行:定时。
- 死锁饥饿的关系,异同点:死锁是饥饿的子集。
- 死锁的必要/充分条件*3
- 掌握:
- 哲学家就餐
- 银行家算法
- 死锁检测算法
7
- 了解:
- 段表:
- 对应内存中的段
- 每一个记录包含段长度
- 1 bit表示段是否已经载入内存
- 1 bit表示段是否被修改过
- 页表:
- 每一个进程都有页表
- 每个页表项包含与内存中页对应的帧号
- 1 bit表示这个页是否已经载入内存
- 1 bit表示是否被修改
- 页表与虚拟地址空间成比例,占用主存;页表也存储在虚拟内存中;部分页表在主存中
- 构造页表以及段表,什么时候构造,数据结构,使用的时候遇到的问题(when who how)
- 段表:
- 理解:
- 重定位:作业装入与其逻辑地址空间不同的物理空间引起的地址变换过程。特点:硬件实现;程序运行过程中进行地址变换。
- 程序员不知道程序在执行时将在内存中的哪个位置
- 程序执行时,可以将其交换到磁盘上并返回到其他位置的主内存(已重定位)
- 内存引用必须在代码中转换为实际的物理内存地址
- 覆盖overlaying:可供程序使用的内存不足。程序员使用覆盖的方法,将不同的模块分配到内存中的同一个位置,主程序负责在需要的时候还如或者换出模块。
- 逻辑地址,物理地址,相对地址
- 物理地址:是在内存中的绝对地址或者是实际位置
- 相对地址:是相对某某些已知点的存储单元(通常是程序开始处)的存储单元。
- 逻辑地址:是指与程序当前在内存分配没有关系的访问地址,在使用的时候要转换为物理地址。用户角度看到的地址,根据用户角度不同而不同。
- 交换:程序执行时,它可能会交换到磁盘上并返回到主内存的不同位置(已重定位)
- 碎片:内部碎片以及外部碎片
- 内部零头:一个进程加载到指定区域,这个区域没有用的空间叫做内部零头。
- 外部零头:每个区域之间形成大小很小的内存区域,这些区域无法加载任何进程。
- 伙伴系统概念
- 伙伴系统引入原因:固定分区限制了活动进程的数目,并且如果可用分区的大小与进程的大小不匹配,空间利用率低。动态分区维护麻烦,压缩的额外开销。
- 重定位:作业装入与其逻辑地址空间不同的物理空间引起的地址变换过程。特点:硬件实现;程序运行过程中进行地址变换。
- 掌握:
- 内存管理的方法以及联系
- 固定分区:相同大小;不同大小
- 分页
- 动态分区
- 分段
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SLgmGyfc-1593666814650)(./img/内存管理技术.png)]
- 内存管理算法
- 最佳适配(Best-fit algorithm):遍历内存空间,内存空间最接近需要的。目的减少内存的浪费,性能最差。产生的外部零头最小,但是这些外部零头使得其他进程无法使用。
- 首次适配(First-fit algorithm):遍历内存空间,找到第一块可以分配的。性能最优,在内存头部产生许多外部碎片。
- 邻近适配(Next-fit):上次分配的位置开始寻找一个可以分配的。性能第二。导致后面大空间被切分为小的内存区域。
- 最坏适配:选择最大的区域分配给内存。
- 伙伴系统的分配以及回收
- 简单分区以及分页的要点
- 表的构造以及具体的使用
- 逻辑地址到物理地址的转换
- 页号->页内偏移
- 查询页表得到偏移
- 物理地址+相对地址
- 内存管理的方法以及联系
8 虚拟存储器
- 了解:
- 7种分配方法的演变历程
- 如何理解虚拟存储器:进程的部分分配在磁盘上
- 分块好处
- 主存中可以保存更多进程
- 只载入某个进程的部分
- 某个时刻存在就绪态进程可能性更大
- 支持大于主存的部分
- 主存中可以保存更多进程
- 引入虚拟存储的地址空间:
- 利用磁盘存储,扩大内存空间
- 允许高效的多道程序设计
- 接触用户与主存之间的紧密联系
- 虚拟存储器的内存保护以及共享:段表页表
- 实现虚拟存储器硬件支持:
- 分页
- 块表
- 多级页表
- 反向页表
- 分段;段大小可能不同
- 段页式:结合分段与分页
- 分页对用户透明,分段对用户可见
- 每个段会被分为固定大小的页
- 每个进程有一个段表以及多个页表,每个段有一个页表
- 分页
- 理解
- 虚拟中断:所需地址不在内存
- 抖动:马上需要的进程块被换出:程序执行设计大量I/O操作。根本原因:置换算法选择不当。
- 反向页表:虚拟地址的页号使用一个简单的散列函数映射到散列表里面。散列表包含一个倒排表指针,倒排表有一个页表项。
- 存储转换表TLB:最近访问的页表项存储到块表(TLB)当中去,是页表的副本。
- 页缓冲:被替换的页加入到队列中。空闲页表;修改页表。
- 加载策略:决定一个进程块在实存的位置。
- 清除策略:
- 请求式清除:一页被选择用于置换的时候才写入辅存
- 预约式清除:被修改的多个页在需要用到他们所占据的页框之前成批写入辅存。
- 页缓冲
- 修改过的周期性写入
- 没有修改的丢失
- 虚拟存储器地址空间的分布
- 掌握
- 虚拟存储器实现的方法*3,优缺点
- 请求式分页:仅在引用页面上的某个位置时将页面带入主存储器。缺点:程序刚开始执行会有许多缺页中断。
- 请求式分段:载入比需要的更多的页。优点:引入连续位于磁盘上的页面的效率更高
- 段页式:
- 缺页中断的处理流程
- 产生缺页中断
- 阻塞中断进程
- 确实片段载入内存
- 发出读取请求
- 调度另一个进程执行
- 载入确实片段之后,变为就绪态
- 分页机制分段机制的地址翻译过程:逻辑->物理
- 段表.页表的数据结构(PPT)
- 多级页表的原因以及优缺点
- 驻留集的策略
- 固定分配:每个进程固定分配页的数量
- 可变分配:每个进程分配的页的数量可以变化
- 局部置换:被置换出只是这个进程内部的页
- 全局置换:被置换出的是所有运行进程的页
- 固定分配,局部置换:提前确定分配给流程的数量
- 如果分配太小,页面错误率就会很高
- 如果分配太大,则主存储器中的程序将太少
- 可变分配,全局置换
- 最容易实施
- 被许多操作系统采用
- 操作系统保留空闲帧的列表
- 发生缺页时,将空闲帧添加到驻留的进程集
- 如果没有空闲框架,从任何驻留程序中替换一个
- 可变分配,局部置换:
- 新的进程添加到内存之后:请根据应用程序类型,程序请求或其他条件分配页面框架数
- 出现缺页的时候,从发出缺页请求的程序中选择
- 动态评估,增加或者减少分配的页的数量
- TLB:转移后备缓冲器/旁视缓冲器/块表:包含最近使用的页表项
- 每次访问虚拟内存会两次访问物理存储
- 访问页表
- 访问数据
- 访问操作
- 检查TLB
- 命中就得到帧号与物理地址
- 没有命中
- 检查页表(页不在主存中就发生错误缺页中断)
- 更新TLB
- 检查TLB
- 每次访问虚拟内存会两次访问物理存储
- 置换策略
- 帧锁定:不允许置换
- Optimal policy( OPT, 最佳):选择未来最远使用的页
- Least Recently Used (LRU, 最近最少使用):最近最少使用的页
- First-in, first-out (FIFO, 先进先出)
- Clock Policy(时钟策略):
- 加载控制:
- 确定将驻留在主内存中的进程数
- 进程太少,很多情况下所有进程都将被阻塞,并且将花费大量时间进行交换
- 进程太多将导致抖动
- 确定将驻留在主内存中的进程数
- 虚拟存储器实现的方法*3,优缺点
- 计算题
- 页面调度算法,一张图。最开始的3个要计算。
9 进程调度
-
了解
- 抢占:当前运行的程序被操作系统中断,并挂为就绪态
- 调度关系
-
理解
- 长程调度:程序变为进程,处于就绪态;分配pid,但是由于内存满了等等原因,处于挂起就绪状态。新建->就绪;新建->就绪挂起。控制并发度。
- 中程调度:将进程调入内存。就绪挂起->就绪;阻塞挂起->阻塞。
- 短程调度:CPU空闲,决定哪个进程被执行。就绪->执行
- 抢占:
- 运行可以中断
- 较好服务,避免进程独占处理机太长时间
-
掌握
- 3个调度算法的关系,状态图变化
- 到达时间,服务时间,周转时间
- 到达时间:
- 周转时间:从用户提出请求到完成的时间
- 服务时间:运行的实际时间
- 响应时间:提交请求到开始接受响应
- 调度算法
- First-Come-First-Served (FCFS,先来先服务):非抢占
- Round-Robin (RR,轮转):抢占
- Shortest Process Next (SPN,最短进程优先):非抢占
- Shortest Remaining Time (SRT,最短剩余时间):抢占
- Highest Response Ratio Next (HRRN,最高响应比优先):非抢占。(等待时间+执行时间)/执行时间
- Feedback反馈:抢占。优先级逐渐降低。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-djLdx4QN-1593666814652)(./img/调度策略比较.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5ybb55r4-1593666814654)(./img/调度策略比较_表.png)]- 甘特图
11 IO管理
- 了解
- IO分类
- 程序IO:实现计算机与IO设备的数据传递,CPU重复测试IO设备,IO为准备好状态才进行通信。需要不断查询。优点:实现简单;缺点:CPU盲等待。
- 中断驱动IO:先向IO发送指令,CPU与IO设备并行执行,IO设备执行完之后,发送中断,CPU停止工作区处理中断。解决忙等待,仍然依赖CPU。
- 直接存储器访问DMA:DMA模块充当CPU与IO设备的中介。
- CPU要调用IO的时候,向DMA发送指令
- DMA从内存读取信息
- 执行完毕之后,中断发送到DMA。
- IO模块的功能
- 处理器直接控制
- 控制器和I/O模块加入:非中断的可编程IO。此时处理器从外部设备接口中分离出来。
- 中断:处理器无需花费等待执行一次IO操作的时间
- DMA:IO通过DMA直接控制存储器。没有处理器参与的情况下,从内存中移入数据,仅在传输开始与结束使用处理器。
- 处理器:IO模块成为一个处理器。有专门为IO设计的指令集。CPU指导IO模块执行内存中的IO程序。
- 存储器:IO模块有自己的局部存储器。
- IO模块的层次设计
- 单机
- 远程
- 文件系统
- IO分类
- 理解
- 掌握
- 引入IO缓冲原因
- I/O完成之前必须等待。IO设备速度实在太慢了,导致与内存的运行速度不匹配,需要引入缓冲机制解决这个问题。
- 某些页必须驻留主存
- 引入IO原因:提供计算机与用户的交互通道。
- IO缓冲:预输入,缓输出
- 块设备
- 数据存储固定大小
- 传输以块为单位
- 用于磁盘磁带
- 流设备
- 以字节传输数据
- 在中断,打印机,端口鼠标等非辅存中使用。
- IO缓冲的实现方式
- 单缓冲:操作系统控制的区域,由操作系统代理模块放到这个空间中去。满了再加载到用户空间。缺点:操作系统对缓冲区维护,额外开销;对交换技术逻辑有影响;
- 双缓冲:使用两个系统缓冲区。第一个满了使用第二个。
- 循环缓冲:大于等于两个以上IO设备。一个空闲的时候,对多个IO排队,那个空闲就对那个操作。
- 涉及到的时间延迟*5
- 排队延迟:等待IO的时间
- 寻道时间:磁头到达指定磁道
- 旋转时间:扇区到达磁头
- 存取时间:寻道时间与旋转时间的总和
- 传输时间:扇区在磁头下数据传输的时间
- 总平均存取时间:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SBC8ZKNh-1593666814655)(./img/平均总时间.png)]
- 磁盘调度算法*5,一张表
- First-in, first-out (FIFO)
- 顺序请求
- 公平对待
- 多进程环境,性能接近随机调度
- Last-in, first-out (LIFO)
- 有利于事物处理系统
- 设备给最近用户使用,较少磁头臂移动
- 可能饿死
- Shortest Service Time First (SSTF,最短服务时间优先)磁头臂从当前位置移动最短时间
- SCAN:磁头臂向一个方向运动
- C-SCAN (circular SCAN, 循环SCAN):到达终点后,返回起点重新扫描
- N-step-SCAN
- 磁盘请求队列被分为长度为N的子队列
- 每次用SCAN扫描一个子队列
- FSCAN
- 两个队列
- 新请求进入空队列
- First-in, first-out (FIFO)
- 表9.5,图9.5
- 引入IO缓冲原因
- 解答题:
- 块设备
- 流设备
12 文件系统
- 了解
- 为什么需要:探讨的是计算机系统中文件有效长期存储的问题。
- 文件管理系统概念:一组有系统特权的工作程序,提供用户与磁盘的接口,应用程序读取数据作为输入,程序结果为输出写到磁盘。
- 功能
- 目录管理
- 用户访问控制
- 访问方法(w/r)
- 目标
- 满足文件管理与用户需求
- 保证有效性
- 优化系统的性能
- 支持各类存储设备
- 减少或消除丢失或者破坏数据的可能性
- 标准的IO接口
- 提供多用户IO支持
- 理解
- 什么是文件:关注的一组对象的属性的集合。
- 文件管理系统概念:一组有系统特权的工作程序,提供用户与磁盘的接口,应用程序读取数据作为输入,程序结果为输出写到磁盘。
- 用户和程序访问文件的唯一方式。程序员无须开发文件管理软件。
- 满足文件管理以及用户需要
- 保护文件中数据的有效性
- 优化性能
- 为各类存储设备提供IO
- 减少或消除丢失或者破坏数据的可能性
- 提供标准的I/O接口
- 提供多用户I/O支持
- 文件系统的层次结构:主目录和其下的用户目录。每个用户目录可有子目录、文件项
- 文件分配表:FAT
- 预分配
- 连续分配:文件名,开始块号,长度
- 链式分配:文件名,开始块号,长度
- 索引分配:文件名,索引块号,长度
- 相对路径:根据工作目录对文件定位
- 绝对路径:从根目录开始的分支进行定位
- 掌握
- 文件的组织形式*5
- 堆文件:
- 文件到达方式进行组织。
- 积累大量数据之后在进行保存。
- 记录有不同的域。
- 非结构化存储。
- 穷举搜索。
- 序列文件:
- 记录格式固定
- 记录长度固定
- 有一个关键域作为唯一标志
- 按照关键域存储。
- 新的记录先存储到日志文件或者事物文件中
- 成批更新日志文件到主文件中
- 索引序列文件:提供目录能够迅速到达指定记录
- 包含一个指针域与指向主文件的指针
- 搜索关键字小于或者等于目标关键字的最大记录
- 新记录存储在溢出文件
- 主文件之前的记录会更新,以包含指向新记录的指针
- 在批量更新期间,溢出与主文件合并
- 可以为同一关键字段设置多个级别索引,以提高效率
- 索引文件:
- 对不同关键域有不同的索引
- 可能存在一个包含每个记录的完全索引
- 可能有部分索引
- 哈希文件:
- 直接访问数据块
- 每一个记录需要一个关键域。
- 存在哈希冲突。
- 堆文件:
- 目录的实现方式
- 简单目录
- 两级目录
- 层次/树状目录
- 文件的组织形式*5