本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对
操作系统
知识点的理解的总结。希望对新一届的计算机考研人提供帮助!!!
关于对 “计算机概述” 章节知识点总结的十分全面,涵括了《操作系统》课程里的全部要点(本人来来回回过了三遍视频),其中还陆陆续续补充了许多内容,所以读者可以相信本篇博客对于考研操作系统 “计算机概述” 章节知识点的正确性与全面性;但如果还有自主命题的学校,还需额外读者自行再观看对应学校的自主命题材料。
食用说明书:
第一遍学习王道课程时,我的笔记只有标题和截图,后来复习发现看只看图片,并不能很快的了解截图中要重点表达的知识点。
在第二遍复习中,我给每一张截图中 标记了重点,以及 每张图片上方总结了该图片 对应的知识点 以及自己的 思考 。
最后第三遍,查漏补缺。
所以 ,我把目录放在博客的前面,就是希望读者可以结合目录结构去更好的学习知识点,之后冲刺复习阶段脑海里可以浮现出该知识结构,做到对每一个知识点熟稔于心!
请读者放心!目录展示的知识点结构是十分合理的,可以放心使用该结构去记忆学习!
注意(⊙o⊙)!,每张图片上面的文字,都是该图对应的知识点总结,方便读者更快理解图片内容。
《操作系统》第1章 计算机系统概述
【考纲内容】
王道 P13 ~ 47
(一) 操作系统的基本概念
(二) 操作系统的发展历程
(三) 程序运行环境
- CPU运行模式:内核模式 与 用户模式;
- 中断和异常的处理:系统调用;
- 程序的链接与装入
- 程序运行时内存映像与地址空间
(四) 操作系统结构
- 分层、模块化、宏内核、微内核、外核
(五) 操作系统引导
(六) 虚拟机
【复习提示】
本章通常以 选择题 的形式考察,重点考察 操作系统的功能、运行环境和提供的服务;
要求读者从 宏观上把握 操作系统各部分的功能,微观上掌握细微的知识点;
因此,复习操作系统是,首先要形成一个大体 框架, 并通过反复复习和做题巩固知识体系,然后将所有内容串成一个整体;
本章主要让读者 初步认识操作系统,有助于后面的学习;
1.1 操作系统的基本概述
1.1.1 操作系统的概念
1. 操作系统的定义
操作系统是系统资源的管理者;
操作系统要向上提供方便易用的服务;
操作系统是最接近硬件的一层软件;
课本原始定义:操作系统是一组 控制和管理 计算机软硬件资源,合理地 组织 多道程序的运行,方便 用户使用的程序的集合;
(管家、调度、桥梁)
2. 操作系统的功能和目标
(1) 作为系统资源的管理者
提供的功能:
- 处理机管理
- 存储器管理
- 文件管理
- 设备管理
(2) 向上层提供方便易用的服务
操作系统提供简单、易用的 交互接口 是一种很好的封装思想;
操作系统提供的接口主要分为两类:
- ==命令接口(联机、脱机命令接口),==用户利用这些操作命令来组织和控制作业的执行;
- ==程序接口,==变成人员使用它们来请求操作系统服务;
接下来看看操作系统提供的哪些服务:
① GUI接口
GUI最终是通过调用 程序接口 实现的
② 联机命令接口 = 交互式命令接口
③ 脱机命令接口 = 批处理命令接口
==④ 程序接口:==由一组 ==系统调用(广义指令)==组成;
用户在程序中使用这些 系统调用 来请求操作系统为其提供服务;
操作系统 向上层提供了 各类不同的服务
(3) 作为最接近硬件的层次
操作系统需要实现 对硬件机器的拓展 ;
实质:整合资源、功能拓展
小结
1.1.2 操作系统的基本特征
并发、共享、虚拟、异步 是操作系统的 基本特征;
1.2 操作系统发展历程 介绍的各类操作系统都有独特的特征:
- 批处理系统有着高的 资源利用率 和 系统吞吐量;
- 分时系统能 及时响应;
- 实时系统具有 实时特征;
1. 并发
并发 vs 并行
操作系统的并发性
2. 共享
并发性 与 共享性 互为存在条件
3. 虚拟
eg:虚拟存储器技术 - 空间复用技术
eg:虚拟处理器技术 - 时分复用技术
没有并发性,实现虚拟性就没有意义
4. 异步
小结
1.2 操作系统发展历程
1. 手工操作阶段
缺点:
- 用户独占全机;
- CPU等待手工操作,人机速度差异,导致CPU利用率极低
2. 批处理阶段
单道批处理系统
主要特征:自动性、顺序性、单道性
优点:一定程度缓解人机速度矛盾;(作业的输入输出过程所占的比例下降了)
缺点:内存中仅能有一道程序运行,CPU经常等待I/O,导致CPU利用率低;
多道批处理系统
主要特征:多道、宏观上并行、微观上串行
多道程序设计技术的实现遇到解决的问题(后续学习中会一一介绍):
- 如何分配处理器;
- 多道程序的内存分配问题;
- I/O设备如何分配;
- 如何组织和存放大量的程序和数据,以方便用户使用并保证其安全性与一致性;
优点:
- ==资源利用率高,==多道程序共享计算机资源;
- ==系统吞吐量大,==CPU和其它资源保持“忙碌”状态;
缺点:
- 用户响应的时间较长;
- 没有人机交互功能;
3. 分时操作系统
分时:计算机按 时间片轮转 给各个用户提供服务;
特征:同时性、交互性、独立性、及时性;
优点:用户请求可以被即时响应,解决了 人机交互 问题;
缺点:不能优先处理一些紧急任务(每个用户的优先级是相同的);
4. 实时操作系统
优点:能 优先响应 一些紧急任务;
硬实时系统:必须严格响应处理;
软实时系统:较短时间内及时的响应处理;
5. 其它操作系统
大致了解即可
小结
1.3 操作系统运行环境
1.3.1 操作系统的运行机制
预备知识:认识程序在计算机内是如何运行的?
答:C语言代码(高级语言) 被编译器翻译成对应的 ==机器指令,==这些指令是 ==二进制机器指令,==是CPU能识别、执行的最基本命令;
1. 内核程序 vs 应用程序
CPU执行的程序分为两种:操作系统内核程序、用户程序;
内核 是操作系统最基础、核心的那部分;
2. 特权指令 vs 非特权指令
内核程序,在计算机中的地位充当 ==管理程序,==所以可以执行 特权指令;
用户程序,在计算机中的地位充当 ==被管理程序,==出于安全考虑只能执行 非特权指令;
3. 内核态 vs 用户态
【问题】CPU可以区分 特权指令 和 ==非特权指令,==但是CPU无法识别正在执行的指令是 应用程序 的指令,还是 内核程序 的指令;
答:为了让CPU能够区分 应用程序 和 ==内核程序,==CPU会被划分为两种状态:内核态 和 用户态
内核态 - 内核程序 - 可以执行特权指令;
- 对 I/O 设备操作指令、有关访问程序状态的指令、存取特殊寄存器指令、其它……
用户态 - 应用程序 - 只能执行非特权指令;
CPU使用 程序状态字寄存器(PSW) 实现对CPU状态的标记;
==如何变态:==内核态 与 用户态 相互切换,所要完成的操作
小结
补充
具体内容查看 ==王道课程 P16 和 1.4 操作系统体系结构,==这里就简单介绍
- ① 时钟管理
- ② 中断机制
- ③ 原语
- ④ 系统控制的数据结构及处理(操作)
以上面介绍的4个部分可知,内核态指令包括:系统调用类指令、针对时钟、中断 和 原语 的操作指令
1.3.2 中断和异常的概念
1. 中断的作用
中断的作用:使CPU由 用户态 变为 ==内核态,==让操作系统重新夺回对CPU的控制权;
2. 中断的类型
① 内中断
例子1:CPU在 用户态 下执行特权指令,触发中断;
例子2:CPU执行非特权指令,也有可能引发中断,例如除0操作;
例子3:应用程序想要请求内核的服务,会执行 ==陷入指令,==这个指令也会引发一个内部中断信号;
② 外中断
例子1:由外部 时钟部件 向CPU发送中断信号;
- CPU用户态,处理应用程序1;
- 过了50ms,时间部件到时间了,就会给CPU发送一个时钟中断信号;
- CPU收到中断信号,暂停应用程序1,立马转为内核态,去处理中断;
- 内核程序 发现 应用程序1 已经工作了50ms,就会把CPU使用权交给 应用程序2,之后切换回用户态;
- 如此往复,直到运行结束……
例子2:I/O中断,由输入/输出设备发来的中断信号;
中断的具体分类
外中断可分为 可屏蔽中断(时钟中断、I/O中断请求) 和 不可屏蔽中断(硬件故障、停电);
==软件中断:==故障异常 和 自陷异常;
==硬件中断:==终止异常 和 外部中断;
3. 中断机制的基本原理
小结
1.3.3 系统调用
1. 什么是系统调用 ?
2. 系统调用与库函数的区别
3. 为什么系统调用是必须的 ?
4. 什么功能要用到系统调用 ?
凡是与 共享资源 有关的操作,都必须通过 系统调用 的方式向 操作系统内核 提出服务请求;
5. 系统调用的过程
一个应用程序运行在 ==用户态,==那么它的指令会CPU被一条条执行;
当他想发出 系统调用 的时候,他需要 传参指令 给CPU的寄存器传入某个参数,这个参数指明要进行哪种系统调用;
传参指令可能多条,主要看需要的 系统调用 要求几个参数;
当参数都传入寄存器之后,用户程序就会执行 ==陷入指令,==这个陷入指令得到执行会引发一个内中断;
CPU检测到内部中断,发现这个内中断是由 trap指令 引起的,就会暂停处理应用程序,转入 相应的 中断处理程序;
CPU转为内核态,处理 ==系统调用入口程序,==根据参数判断需要哪种系统调用;
对应 系统调用的处理程序 根据传入的其它参数,看看用户程序需要哪些具体服务;
系统调用处理完,CPU切换为用户态,继续之前的用户程序;
注意下图中箭头,好好理解系统调用的过程
小结
1.4 操作系统体系结构
1. 操作系统的内核
2. 大内核 vs 微内核
【注意】
- 操作系统 内核 需要运行在 内核态
- 操作系统的 非内核 功能运行在 用户态
内核、非内核 分别运行在 内核态、用户态, 会对系统的性能造成影响,因为 变态 需要消耗时间
注意下面两种内核的变态次数
每一次应用程序请求内核的服务,都需要CPU进行 ==变态,==但变态是需要花费时间的;所以频繁变态,会降低系统性能
3. 分层结构
每一层只能调用 更低、相邻 的那一层提供的功能接口;
4. 模块化
将操作系统分成多个模块,各模块之间协调工作
内核 = 主模块(eg:进程管理模块、内存管理模块)+ 可加载内核模块(eg:驱动程序)
5. 外核
小结
==这张图非常、非常重要,==其中 标⭐号 的是重点
1.5 操作系统引导
1. 磁盘里面有哪些相关数据 ?
2. 操作系统引导(开机过程)
操作系统要启动运行,操作系统的数据就需要被放进 主存 里面;
计算机的主存,由 RAM 和 ROM 组成;
ROM存储芯片里存储BIOS(基本输入输出系统),BIOS里包含 ROM引导程序
执行ROM引导程序,它会指示CPU去把 主引导记录 读入内存,CPU再去执行内存的 磁盘引导程序
磁盘引导程序会根据 分区表 去找到C盘的位置,之后CPU读入C盘的 引导记录PBR
PBR本身也是一种程序,CPU就执行PBR里的程序,PBR程序的主要作用就是找到 启动管理器
启动管理器是在 根目录 里的一个程序,找到启动管理器,CPU运行它,就开始了操作系统初始化的一系列操作
1.6 虚拟机
虚拟机 大概率以选择题形式考察,主要考察 两类VMM的对比
==1. 传统计算机:==一个机器上只能运行一个操作系统;
2. 虚拟机 + 虚拟机管理程序
第一类VMM,直接运行在硬件上。
对硬件资源进行划分,分给各个操作系统:单核CPU按照时间片划分、内存和磁盘直接按空间划分即可;
只有VMM是运行在 ==内核空间,==各个操作系统在 ==用户空间。==不过对于各个操作系统来说,他们自己认为自己在内核空间,当操作系统想进行某个特权指令时,发出的特权指令会被VMM截获,VMM对该特权指令进行模拟转换,来满足操作系统的要求;
第二类VMM,运行在宿主操作系统上。
在主操作系统上,套娃运行一个 客户操作系统
当VMM要给客户操作系统分配资源时,只能请求主操作系统分配资源,再由VMM自己去分配资源;
两类虚拟机管理程序(VMM)的对比 ⭐
常见的虚拟机软件
近几年,对于CPU的特权指令,细分成不同级别的特权指令
1.7 常见问题和易混淆知识点
1. 并行性与并发性的区别和联系
并行性和并发性是既相似又有区别的两个概念。
并行性是指两个或多个事件在同一时刻发生,并发性是指两个或多个事件在同一时间间隔内发生。
在多道程序环境下,并发性是指在一段时间内,宏观上有多个程序同时运行,但在单处理器系统中每个时刻却仅能有一道程序执行,因此微观上这些程序只能分时地交替执行。
若在计算机系统中有多个处理器,则这些可以并发执行的程序便被分配到多个处理器上,实现并行执行,即利用每个处理器来处理一个可并发执行的程序。
2. 特权指令与非特权指令
所谓特权指令,是指有特殊权限的指令,由于这类指令的权限最大,使用不当将导致整个系统崩溃,如清内存、置时钟、分配系统资源、修改虚存的段表或页表、修改用户的访问权限等。
若所有程序都能使用这些指令,则系统一天死机n次就不足为奇。
为保证系统安全,这类指令只能用于操作系统或其他系统软件,不直接提供给用户使用。
因此,特权指令必须在核心态执行。实际上,CPU在核心态下可以执行指令系统的全集。形象地说,特权指令是那些儿童不宜的东西,而非特权指令是老少皆宜的东西。
为了防止用户程序中使用特权指令,用户态下只能使用非特权指令,核心态下可以使用全部指令。
在用户态下使用特权指令时,将产生中断以阻止用户使用特权指令。
所以把用户程序放在用户态下运行,而操作系统中必须使用特权指令的那部分程序在核心态下运行,保证了计算机系统的安全可靠。从用户态转换为核心态的唯一途径是中断或异常。
3. 访管指令与访管中断
访管指令是一条可以在用户态下执行的指令。
在用户程序中,因要求操作系统提供服务而有意识地使用访管指令,从而产生一个中断事件(自愿中断),将操作系统转换为核心态,称为访管中断。
访管中断由访管指令产生,程序员使用访管指令向操作系统请求服务。
为什么要在程序中引入访管指令呢 ?
这是因为用户程序只能在用户态下运行。若用户程序想要完成在用户态下无法完成的工作,该怎么办 ?
解决这个问题要靠访管指令。访管指令本身不是特权指令,其基本功能是让程序拥有“自愿进管”的手段,从而引起访管中断。
处于用户态的用户程序使用访管指令时,系统根据访管指令的操作数执行访管中断处理程序,访管中断处理程序将按系统调用的操作数和参数转到相应的例行子程序。完成服务功能后,退出中断,返回到用户程序断点继续执行。
4. 定义微内核结构OS的四个方面
① 足够小的内核;
② 基于客户/服务器模式;
③ 应用“机制与策略分离”原理。机制是指实现某一功能的具体执行机构。
策略则是在机制的基础上借助于某些参数和算法来实现该功能的优化,或达到不同的功能目标;
在传统的OS 中,将机制放在OS内核的较低层中,把策略放在内核的较高层中。
而在微内核OS 中,通常将机制放在OS的微内核中。正因如此,才可以将内核做得很小。
④ 采用面向对象技术。基于面向对象技术中的“抽象”和“隐蔽”原则能控制系统复杂性,进一步利用“对象"“封装”和“继承”等概念还能确保操作系统的正确性、可靠性、易扩展性等。
正因如此,面向对象技术被广泛应用于现代操作系统的设计之中。