王道 操作系统 知识点整理 第一章
一、操作系统概述
目录
1.1.1 操作系统的概念
操作系统(OperatingSystem,OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。
1.1.2 操作系统的功能和目标
计算机系统的层次结构

1.系统资源的管理者
功能:文件管理、存储器管理、处理机管理、设备管理
目标:安全、高效
eg. 用QQ和朋友视频聊天
步骤1:在各个文件夹中找到QQ安装的位置——找
逐层打开文件夹,找到QQ.exe的存放位置(文件管理)
步骤2:双击打开QQ.exe——存
执行一个程序前需要将该程序相关数据放入内存,才能被CPU处理(存储器管理)
步骤3:QQ程序正常运行——运行
对应的进程被处理机(CPU)处理(处理机管理)
步骤4:开始和朋友视频聊天——用
需要将摄像头设备分配给进程(设备管理)
2.向上层提供方便易用的服务——封装思想:用户无需关注底层硬件原理,只对操作系统发出命令即可。
服务:
图形化用户接口(GUI,Graphical User Interface)
联机命令接口/交互式命令接口
特点:用户说一句,系统做一句
脱机命令接口/批处理命令接口
特点:用户说一堆一句,系统跟着做一堆
以上三种用户均可直接使用。
程序接口:可以在程序中进行系统调用/广义指令来使用程序接口。普通用户不能直接使用程序接口,只能通过程序代码间接使用。
其中,命令接口和程序接口可以统称为“用户接口”。
3.最近硬件的一层软件
功能:实现对硬件机器的拓展。
裸机(没有任何软件支持的计算机) + 操作系统 = 扩充机器/虚拟机
1.1.3 操作系统的特征
特征:并发、共享、虚拟、异步
其中并发和共享是操作系统两个最基本的特征,二者互为存在条件。
1.并发
并发与并行
并发:两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。
并行:两个或多个事件在同一时刻同时发生。
操作系统的并发性:计算机系统中“同时”运行着多个程序,这些程序宏观上看是同时运行着的,而微观上看是交替运行的。
ps.
单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行。
多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行。
例如,4核CPU意味着可以并行地执行4个程序
即使是对4核CPU来说,只要有4个以上的程序需要“同时”运行,那么并发性依然是必不可少的,因此并发性是操作系统一个最基本的特性。
2.共享
共享:资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
共享方式
互斥共享方式:系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源。例如,摄像头。
同时共享方式:系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问。例如,使用不同软件发送不同文件,即多个进程同时访问硬盘;扬声器。
所谓的“同时”往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问的(即分时共享)。
3.虚拟
虚拟:把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。
例如,虚拟存储器技术——空分复用技术(切分空间,用户感知的空间大于实际空间);虚拟处理器技术——时分空复用技术(切分时间,单核感觉像多核)。
4.异步
异步:在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进。
操作系统提供“进程同步机制”来解决并发进程的异步性带来的问题。
1.2 操作系统的发展与分类
手工操作阶段——无系统
缺点:用户独占全机、人机速度矛盾导致资源利用率极低。

批处理阶段——单道批处理系统
引入脱机输入/输出技术(用外围机+磁带完成),并由监督程序负责控制作业的输入、输出。
主要优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升。
主要缺点:内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序。
CPU有大量的时间是在空闲等待I/O完成。资源利用率依然很低。

批处理阶段——多道批处理系统
主要优点:多道程序并发执行,共享计算机资源。资源利用率大幅提升,CPU和其他资源更能保持“忙碌”状态,系统吞吐量增大。
主要缺点:用户响应时间长,没有人机交互功能(用户提交自己的作业之后就只能等待计算机处理完成,中间不能控制自己的作业执行。eg:无法调试程序/无法在程序运行过程中输入一些参数)

分时操作系统
计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。
主要优点:用户请求可以被即时响应,解决了人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
主要缺点:不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性。

实时操作系统
在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件。实时操作系统的主要特点是及时性和可靠性。
主要优点:能够优先响应一些紧急任务,某些紧急任务不需时间片排队。
分类
硬实时系统:必须在绝对严格的规定时间内完成处理。例如,导弹控制系统、自动驾驶系统。
软实时系统:能接受偶尔违反时间规定。例如,12306。
其他
网络操作系统:是伴随着计算机网络的发展而诞生的,能把网络中各个计算机有机地结合起来,实现数据传送等功能,实现网络中各种资源的共享(如文件共享)和各台计算机之间的通信。(如:Windows NT 就是一种典型的网络操作系统,网站服务器就可以使用)
分布式操作系统:主要特点是分布性和并行性。系统中的各台计算机地位相同,任何工作都可以分布在这些计算机上,由它们并行、协同完成这个任务。
个人计算机操作系统:如Windows XP、MacOS,方便个人使用。
1.3.1 操作系统的运行机制
预备知识:程序如何运行?
高级语言(代码)->(编译器,翻译)机器指令(二进制)
一条高级语言的代码翻译过来可能会对应多条机器指令,“指令”是处理器(CPU)能识别、执行的最基本命令。程序运行的过程是CPU执行一条一条的机器指令的过程。
内核程序、应用程序
由很多内核程序组成了“操作系统内核”,或简称“内核(Kernel)”。内核是操作系统最重要最核心的部分,也是最接近硬件的部分。操作系统的功能未必都在内核中。
特权指令、非特权指令
应用程序只能使用“非特权指令”,如:加法指令、减法指令等。
操作系统内核作为“管理者”,有时会让CPU执行一些“特权指令”,如:内存清零指令。这些指令影响重大,只统许“管理者”——即操作系统内核来使用。
在CPU设计和生产的时候就划分了特权指令和非特权指令,因此CPU执行一条指令前就能判断出其类型。
内核态、用户态
CPU有两种状态,“内核态”和“用户态”。
处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令;
处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令。
CPU中有一个寄存器叫程序状态字寄存器(PSW),其中有个二进制位,1表示“内核态”,0表示“用户态”。
别名:内核态=核心态=管态;用户态=目态
内核态、用户态的切换
内核态->用户态:执行一条特权指令——修改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权;
用户态->内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权。(触发中断信号:非法使用特权指令。但凡需要操作系统介入的地方,都会触发中断信号 )
1.3.2 中断和异常
中断的作用
“中断”会使CPU由用户态变为内核态,使操作系统重新夺回对CPU的控制权。
“中断”是让操作系统内核夺回CPU使用权的唯一途径。
中断的类型
内中断/异常/例外:与当前执行的指令有关,中断信号来源于CPU内部。
例如,试图在用户态下执行特权指令;
执行除法指令时发现除数为0;
有时候应用程序想请求操作系统内核的服务,此时会执行一条特的指令——陷入指令(非特权指令),该指令会引发一个内部中断信号。
外中断/中断:与当前执行的指令无关,中断信号来源于CPU外部。每一条指令执行结束后,CPU都会例行检查是否有外中断信号。
例如,时钟中断——由时钟部件发来的中断信号;
I/O中断——由输入/输出设备发来的中断信号。
异常的分类
1.陷阱、陷入(trap)
由陷入指令引发,是应用程序故意引发的。
2.故障(fault)
由错误条件引起的,可能被内核程序修复。内核程序修复故障后会把 CPU使用权还给应用程序,让它继续执行下去。如:缺页故障。
3.终止(abort)
由致命错误引起,内核程序无法修复该错误,因此一般不再将CPU使用权还给引发终止的应用程序,而是直接终止该应用程序。如:整数除0、非法使用特权指令。
中断机制的基本原理
不同的中断信号,需要用不同的中断处理程序来处理。当CPU检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。
1.3.3 系统调用
系统调用:系统调用是操作系统提供给应用程序(程序员/编程人员)使用的接口,可理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务。
系统调用与库函数的区别

系统调用的必须性
生活场景:去学校打印店打印论文,你按下了WPS 的“打印”选项,打印机开始工作。
你的论文打印到一半时,另一位同学按下了Word 的“打印”按钮,开始打印他自己的论文。
思考:如果两个进程可以随意地、并发地共享打印机资源,两个进程并发运行,打印机设备交替地收到WPS 和Word两个进程发来的打印请求,两篇论文的内容混杂在一起。
解决方法:由操作系统内核对共享资源进行统一的管理,并向上提供“系统调用”,用户进程想要使用打印机这种共享资源,只能通过系统调用向操作系统内核发出请求。内核会对各个请求进行协调处理。
系统调用(按功能分类)
设备管理、文件管理、进程控制、进程通信、内存管理
系统中的各种共享资源都由操作系统内核统一掌管,因此凡是与共享资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。
系统调用的过程
应用程序(高级语言视角)调用库函数(内部封装了系统调用的复杂细节)->(编译)
应用程序(机器语言视角,用户态)前期处理相关指令、传参指令(将系统调用需要的参数放到某些通用寄存器中。指明系统调用类型,如"fork")、陷入指令/trap指令/访管指令、后续处理相关指令 -> CPU
-> 系统调用入口程序(根据寄存器中的参数判断用户需要的系统调用服务)
-> fork系统调用的处理程序
-> 返回
1.4 操作系统体系结构
操作系统的内核
内核是操作系统最基本、最核心的部分。实现操作系统内核功能的程序就是内核程序。
操作系统分为内核功能
对系统资源管理的功能(这些管理工作更多的是对数据结构的操作操伦,不会直接涉及硬件):进程管理、存储器管理、设备管理
与硬件关联最紧密的模块:时钟管理(利用时钟中断实现计时功能)、中断处理、原语(设备驱动、CPU切换等。原语是一种特殊的程序,具有原子性)
和非内核功能(GUI)
两种体系结构
大内核/宏内核/单内核:内核中含系统资源管理功能和与硬件关联最紧密的模块。
微内核:内核中只含与硬件关联最紧密的模块。即系统资源管理功能为非内核功能。
非内核功能运行在用户态。
不同体系结构对操作系统性能的影响
应用程序想要请求操作系统的服务,这个服务的处理同时涉及到进程管理、存储管理、设备管理。
各种体系结构
大内核/宏内核
所有的系统功能都放在内核里(大内核结构的OS通常也采用了“模块化”的设计思想)
优点:性能高,内核内部各种功能都可以直接相互调用。
缺点:内核庞大功能复杂,难以维护;
大内核中某个功能模块出错,就可能导致整个系统崩溃。

微内核
优点:内核小功能少、易于维护,内核可靠性高;
内核外的某个功能模块出错不会导致整个系统崩溃。
缺点:性能低,需要频繁的切换用户态/核心态;
用户态下的各功能模块不可以直接相互调用,只能通过内核的"消息传递"来间接通信。

变态的过程是有成本的,要消耗不少时间,频繁地变态会降低系统性能。
“变态”的正规术语:CPU状态的转换
分层结构
内核分多层,最底层是硬件,最高层是用户接口,每层可单向调用更低一层提供的接口。
优点:便于调试和验证,自底向上逐层调试验证;
易扩充和易维护,各层之间调用接口清晰固定。
缺点:仅可调用相邻低层,难以合理定义各层的边界;
效率低,不可跨层调用,系统调用执行时间长。

模块化
将内核划分为多个模块,各模块之间互相协作。
模块化是将操作系统按功能划分为若干个具有一定独立性的模块。每个模块具有某方面的管理功能,并规定好各模块间的接口,使各模块之间能通过接口进行通信。还可以进一步将各模块细分为若干个具有一定功能的子模块,同样也规定好各子模块之间的接口。把这种设计方法称为模块-接口法。

内核 = 主模块 + 可加载内核模块
主模块:只负责核心功能,如进程调度、内存管理
可加载内核模块:可以动态加载新模块到内核,而无需重新编译整个内核
优点:模块间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发;
支持动态加载新的内核模块(如:安装设备驱动程序、安装新的文件系统模块到内核),增强
OS适应性;
任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高。
缺点:模块间的接口定义未必合理、实用;
模块间相互依赖,更难调试和验证。
外核
内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全。

优点:外核可直接给用户进程分配“不虚拟、不抽象”的硬件资源,使用户进程可以更灵活的使用硬件资源;
减少了虚拟硬件资源的“映射层”,提升效率。
缺点:降低了系统的一致性;
使系统变得复杂。
1.5 操作系统引导
操作系统引导(开机过程)
- CPU从一个特定主存地址开始,取指令,执行ROM中的引导程序(先进行硬件自检,再开机)
- 将磁盘的第一块——主引导记录读入内存,执行磁盘引导程序,扫描分区表
- 从活动分区(又称主分区,即安装了操作系统的分区)读入分区引导记录,执行其中的程序
- 从根目录下找到完整的操作系统初始化程序(即启动管理器,例如Windows系统 C:/Windows/Boot)并执行,完成“开机”的一系列动作
1.6 虚拟机
传统计算机

可能会导致对硬件资源利用不充分,运行多个进程可能相互影响、有安全隐患。
虚拟机
使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器(Virtual Machine,VM),每个虚拟机器都可以独立运行一个操作系统。
虚拟机管理程序 / 虚拟机监控程序/ Virtual Machine Monitor(VMM)/ Hypervisor
第一类VMM

第二类VMM

两类VMM对比
| 第一类VMM | 第二类VMM | |
| 对物理资源的控制权 | 直接运行在硬件上,能直接控制和分配物理资源 | 运行在Host OS上,依赖于Host OS为其分配物理资源 |
| 资源分配方式 | 在安装Guest OS时,VMM要在原本的硬盘上自行分配存储空间,类似于“外核”的分配方式,分配未经抽象的物理硬件 | Guest OS拥有自己的虚拟磁盘,该盘实际上是Host OS文件系统中的一个大文件,Guest OS分配到的内存是虚拟内存 |
| 性能 | 性能更好 | 性能更差,需要Host OS作为中介 |
| 可支持的VM数量 | 更多,不需要和Host OS竞争资源,相同的硬件资源可以支持更多的VM | 更少,Host OS本身需要使用物理资源,Host OS上运行的其他进程也需要物理资源 |
| VM的可迁移性 | 更差 | 更好,只需导出VM镜像文件即可迁移到另一台Host OS上,商业化应用更广泛 |
| 运行模式 | 第一类VMM运行在最高特权级(Ring 0),可以执行最高特权的指令 | 第二类VMM部分运行在在用户态、部分运行在内核态。Guest OS发出的系统调用会被VMM截获,并转化为VMM对Host OS的系统调用 |
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)