OS 复习提纲
1. OS的概念、特性
概念
操作系统是计算机系统中的一个系统软件,是一些程序模块的集合。
特性
- 并发/并行
- 共享:操作系统与多个用户程序共同使用计算机系统中资源,其中分为:
- 互斥共享:资源不能同时使用。
- 同时共享:资源可以同时使用。
- 虚拟:一个物理实体映射为若干个对应逻辑实体(分时或分空间)。存储器中每个进程都有独立的虚拟地址空间(存代码、数据、堆栈)。
- 随机:OS要对不可预测的事件进行响应处理。
2. OS的功能
1. 资源分配
- 静态分配策略:把进程所有需要的资源先都分配给它,但这可能导致资源浪费。
- 动态分配策略:进程什么时候需要资源就什么时候分配,如果该资源已被占用,进程会阻塞并进入相应的等待队列。
2. 资源管理
- 进程/线程管理
- 存储管理
- 文件管理
- 设备管理
- 用户接口管理
3. OS的发展历史及分类
1) 批处理操作系统
工作方式
- 用户将作业(作业:由作业说明书、用户程序、数据组成,且通常为卡片形式,输入设备为卡片机)交给系统操作员。
- 系统操作员将多个作业组成一批作业,输入到计算机系统中,形成一个自动转接的连续作业流。
- 启动OS。
- OS自动执行每个作业,用户无法干预。
- 执行结果交给用户。
追求目标
- 提高资源利用率,增加作业处理吞吐量。
总体过程
- 从卡片机读入用户作业和编译链接程序,编译链接生成可执行程序,执行程序并输出执行结果。
问题
- 慢速I/O设备与CPU处理速度差异过大,导致CPU在等待数据时空闲。
2) Spooling技术
利用磁盘做缓冲,将输入、计算、输出分别组成独立的任务流,使I/O和计算并行(假脱机:磁盘在高效的计算机上)。
工作流程
- 用户作业输入磁盘输入。
- 按照某种调度策略,选几个搭配得当的作业调入内存。
- 作业运行结果输出到磁盘的输出。
- 运行结果从输出井到打印机。
备注:输入输出只到输入或输出井,主机不用直接与慢速的I/O打交道,能提高效率和速度。
现代打印机仍然使用这种技术。
应用Spooling技术后:
3) 分时操作系统
工作方式
多个终端(只有I/O设备没有计算能力)连接到同 一主机中,然后OS将CPU时间分成若干个片段,OS以时间片为单位,轮流为每个终端用户服务,每次服务使用掉一个时间片。
追求目标
- 及时响应。
- 响应时间:指从终端发出命令到系统给予回答所经历的时间。
4) 实时操作系统
指计算机能及时响应外部时间请求,在规定的严格时间内完成对该事件的处理。
追求目标
- 对外部请求在严格时间范围内做出响应。
第二章 OS硬件环境
1. 管态与目态
通常CPU执行两种不同性质的程序:一种是操作 系统内核程序;另一种是 用户自编程序或系统外层的应用程序。对操作系统而言,这两种程序的作用不同,前者是后者的管理者,因此“管理程序”要执行一些特权指令(不允许用户直接使用的指令,如I/O指令、置中断指令等),而“被管理程序”出于安全考虑不能执行这些指令。所以我们将机器分为两种状态,通过状态的切换来保护操作系统程序。
- 管态( 核心态、系统态):在此状态下,CPU可以执行指令系统的全集,是一种具有较高特权的执行状态,可以访问所有寄存器和存储区。另外OS内核通常是运行在系统态的,进程控制是由OS内核实现。
- 目态(用户态):在此状态下,CPU只能执行非特权指令。可访问指定的寄存器和存储区,只具有较低的特权。一般的用户程序在此状态下执行。
所谓特权指令是指有特权权限的指令,由于这类指令的权限最大,如果使用不当,将导致整个系统崩溃。比如:清内存、置时钟、分配系统资源、修改虚存的段表和页表,修改用户的访问权限等。
为了保证系统安全,这类指令只能用于操作系统或其他系统软件,不直接提供给用户使用。因此,特权执行必须在核心态执行。实际上,cpu在核心态下可以执行指令系统的全集。形象地说,特权指令就是 那些儿童不宜的东西,而非特权指令则是老少皆宜。
为了防止用户程序中使用特权指令,用户态下只能使用非特权指令,核心态下可以使用全部指令。当在用户态下使用特权指令时,将产生中断以阻止用户使用特权指令。所以把用户程序放在用户态下运行,而操作系统中必须使用 特权指令的那部分程序在核心态下运行,保证了计算机系统的安全可靠。从用户态转换为核心态的唯一途径是中断或异常
2. 多级存储体系
原因
计算机采用多级存储,主要是基于 容量、速度、成本 这三个因素考虑的。
多级存储结构 从上到下,容量越来越大,速度越来越慢,成本越来越低;
同时这种多级存储的模式有利于计算机CPU发挥其性能,还解决了数据存储的问题;
因为外存虽然成本低,但是比较慢;它的运行频率、工作频率,数据的传送情况都是比较慢的;
寄存器虽然速度很快,但是成本高,容量小;
Cache
Cache是现代计算机在CPU和主存之间设置的一个高速、小容量的缓冲存储器,填补了CPU和主存在速度上的巨大差距,可用用于提高整个计算机系统的性能。
Cache先被访问,如果不命中,内存后被访问
cache 映射
◆ 直接映像 ➢ 某一主存块只能固定映射到某一缓冲块 ◆ 全相联映像 ➢ 某一主存块能映射到任一缓冲块 ◆ 组相联 ➢ 某一主存块只能映射到某一缓冲组中的任一块
靠近CPU的Cache要求高速,采用直接相联或路数较少的组相联;中 间层次采用组相联;距离CPU最远的Cache采用全相联,对利用率强调越高。
cache 优化
①强制性失效:当第一次访问一个块时,需要从下一级存储器中调入Cache,这种失效称为强制性失效。也称为冷启动失效或首次访问失效。强制性失效发生在对初始空Cache的访问中。 ②容量失效:由于Cache容量有限,使得程序执行所需的块不能全部调入Cache中,所以当某些块被替换后如果重新被访问就会发生失效。这种失效就称为容量失效。 ③冲突失效:在组相联或直接映像Cache中,多个块映像到同一组(个)块中,则会出现该组中的某一个块被别的块替换后又被重新访问的情况,这就发生了冲突失效。冲突失效也称为碰撞失效或干扰失效。
关于Cache失效的一些结论:
①Cache容量对失效的影响:强制性失效不受到Cache容量的影响,但是容量失效随着容量的增加而减少; ②相联度对失效的影响:强制性失效和容量失效不受相联度的影响,但是相联度越高冲突失效就越少; ③经验规则:大小为N的直接映像Cache的失效率约等于大小为N/2的2路组相联Cache的失效率。
在一个存储层次中如果高一级的存储器的容量比程序所需的空间小得多,就有可能出现由于过多容量失效而产生的抖动现象:大量数据要进行替换,程序执行的大部分时间都用于在两级存储器之间移动数据,机器的运行速度接近于只有第二级存储器的情况,甚至更慢。
局部性原理表现在以下两个方面:
- 时间局部性 :如果程序中的某条指令一旦执行,不久以后该指令可能再次执行;如果某数据被访问过,不久以后该数据可能再次被访问。产生时间局部性的典型原因,是由于在程序中存在着大量的循环操作。
- 空间局部性 :一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址,可能集中在一定的范围之内,这是因为指令通常是顺序存放、顺序执行的,数据也一般是以向量、数组、表等形式簇聚存储的。