【操作系统】第一章:操作系统概述
本篇笔记课程来源:王道计算机考研 操作系统
一、操作系统的概念
- 操作系统(Operating System,OS)是指控制和管理整个计算机系统 硬件和软件 资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件更加方便的接口和环境 ;它是计算机系统中最基本的系统软件 。
- 概念中所提到的分别是:
- 负责管理协调硬件、软件等计算机资源的工作
- 为上层用户、应用程序提供简单易用的服务
- 是一种系统软件
二、操作系统的功能和目标
功能简记:处(处理机管理)存(存储器管理)备(设备管理)文(文件管理)用(用户接口)
1. 作为系统资源的管理者
- 需要提供的功能有:
- 处理机(CPU)管理:例如程序运行的进程
- 存储器(存储)管理:例如程序运行时的数据
- 文件管理:例如文件存放
- 设备管理:例如键盘鼠标摄像头
2. 向上层提供服务
- 可以理解为:操作系统把一些难以理解的硬件功能封装成简单易用的服务,使用户能更方便地使用计算机,用户无需关心底层硬件的原理,只需要对操作系统发出命令即可。
- 提供的功能:
- 图形化界面(GUI):用户可以使用形象的图形界面进行操作,而不需要记忆复杂的命令、参数。
- 用户接口:命令接口、程序接口
接口类型 | 特点 | |
---|---|---|
命令接口 | 联机命令接口 / 交互式命令接口 | 说一句做一句,类似于终端命令行 |
脱机命令接口 / 批处理命令接口 | 说一堆做一堆,类似于 .bat 批处理文件 | |
程序接口 | 可以在程序中进行系统调用来使用程序的接口,类似于函数调用 |
- 在提供的功能中,GUI 和 命令接口用户可以直接使用;程序接口只能通过程序间接使用。
3. 对硬件的拓展
- 操作系统需要实现对硬件机器的拓展。
- 没有任何软件支持的计算机称为裸机。
- 经过操作系统的包装,裸机便以虚拟机的形式呈现给用户。与裸机相比,虚拟机更易于理解和使用。通常把覆盖了软件的机器称为扩充机器,也称之为虚拟机。
三、操作系统的四个特征
- 四个特征分别是:并发性、共享性、虚拟性、异步性。其中:
- 并发性和共享性是 最基本的特征,且 互为存在条件
- 没有并发和共享,就谈不上虚拟和异步
1. 并发性
- 并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。
- 另一个概念——并行:指两个或多个事件在同一时刻同时发生。
- 所以操作系统的并发性,是指计算机系统中 “同时” 运行着多个程序,这些程序宏观上看是同时运行着的,而微观上看是交替运行的。
- 操作系统就是伴随着 “多道程序技术” 而出现的。因此,操作系统和程序并发是一起诞生的。
-
需要注意⚠️⚠️⚠️重要
- 单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行
- 多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行
-
如果一个四核CPU需要 “同时” 运行四个以上的程序(核处理不过来),那么并发性依然是必不可少的,因此并发性是操作系统一个最基本的特性。
2. 共享性
- 共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
- 两种资源共享方式:
- 互斥共享方式:系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源。
- 同时共享方式:系统中的某些资源,允许一个时间段内由多个进程 “同时” 访问该资源。
- 所谓的 “同时” 往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问(即分时共享)
- 并发和共享的关系‼️:互为存在条件。
- 并发性,指计算机系统中 “同时” 存在着多个运行着的程序。
- 共享性,指系统中的资源可供内存中多个并发执行的进程共同使用。
- 如果失去并发性,则系统中只有一个程序正在运行,则共享性失去存在的意义;
- 如果失去共享性,则多个进程不能同时访问硬盘资源,就无法实现并发。
3. 虚拟性
- 虚拟是指把一个物理上的实体变成若干个逻辑上的对应物。物理实体是实际存在的,而逻辑上对应物是用户感受到的。
- 比如日常使用计算机,一个程序需要放入内存并给它分配CPU才能执行
- 虚拟存储器技术——空分复用技术:实际只有4GB的内存,在用户看来似乎远远大于4GB
- 虚拟处理器技术——时分复用技术:实际只有一个单核CPU,在用户看来似乎有多个CPU在同时运行。
- 上面的有个印象即可,后面会说。
- 如果失去并发性,则一个时间段内系统只需运行一道程序,那么就失去了实现虚拟性的意义。因此,没有并发性,就谈不上虚拟性。
4. 异步性
- 异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限(进程会争取使用系统资源),进程的执行不是一贯到底的,而是走走停停。
- 以不可预知的速度向前推进,就是进程的异步性。
- 如果失去了并发性,即系统只能串行地运行各个程序,那么每个程序的执行会一贯到底。因此,只有系统拥有并发性,才有可能导致异步性。
四、操作系统的发展与分类
1. 手工操作阶段
- 主要缺点:用户独占全机、人机速度矛盾导致资源利用率极低。
- 人机操作和机器速度之间的矛盾
- CPU和IO设备之间速度不匹配的矛盾
2. 单道批处理系统
- 为了解决人机矛盾和CPU与IO设备之间速度不匹配的矛盾,出现了单道批处理系统。
- 单道批处理系统,引入 脱机输入/输出技术(用外围机+磁带完成),并由监督程序负责控制作业的输入、输出。
- 主要优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升。
- 主要缺点:内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序。CPU有大量的时间是在空闲等待 I/O 完成,资源利用率依然很低。
3. 多道批处理系统
- 为了进一步提高计算机系统的利用率,出现了多道程序设计的思想。把批处理系统和多道程序系统相结合,就形成了多道批处理系统。
- 多道程序设计思想:在内存中同时存放若干道用户作业,这些作业交替地运行。
- 主要优点:多道程序并发执行,共享计算机资源。资源利用率大幅提升,CPU和其他资源更能保持“忙碌”状态,系统吞吐量增大。
- 主要缺点:用户响应时间长,没有人机交互功能(无法调试程序/无法在程序运行过程中输入一些参数)。
4. 分时操作系统
- 在多道批处理系统中,作业运行时用户无法干预,交互能力很弱,由此出现了分时系统。
- 分时操作系统:计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。
- 主要优点:用户请求可以被及时响应,解决了人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。(例如 UNIX)
- 主要缺点:不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性。
5. 实时操作系统
- 主要特点:及时性、可靠性。
- 主要优点:能够优先响应一些紧急任务,某些紧急任务不需要时间片排队。
- 在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件。
分类 | 特点 | 案例 |
---|---|---|
硬实时系统 | 必须在绝对严格的规定时间内完成处理 | 导弹控制系统、自动驾驶系统 |
软实时系统 | 能接受偶尔违反时间规定 | 12306火车订票系统 |
6. 其他操作系统
- 网络操作系统(Windows NT):伴随着计算机网络的发展而诞生的,能把网络中各个计算机有机地结合起来,实现数据传送等功能,实现网络中各种资源的共享(如文件共享)和各台计算机之间的通信。
- 分布式操作系统:主要特点是分布性和并行性。系统中的各台计算机地位相同,任何工作都可以分布在这些计算机上,由他们并行、协同完成这个任务。
- 个人计算机操作系统:如 Windows XP、Mac OS,方便个人使用。
五、操作系统的运行机制
- 程序运行的过程实际上是CPU执行一条一条(二进制)机器指令的过程。
- 指令:是处理器(CPU)能识别、执行的最基本命令。
1. 两类程序
- 程序可以分为应用程序和内核程序:
- 应用程序:普通程序员写的大多是应用程序
- 内核程序:很多内核程序组成了 “操作系统内核”,或简称 ”内核“。内核是操作系统最重要最核心的部分,也是最接近硬件的部分。
- 操作系统的功能未必都在内核中。因此:操作系统 > 内核。
2. 两类指令
- 指令可以分为特权指令和非特权指令:
- 特权指令:只允许 “管理者” (内核)使用,影响重大。
- 非特权指令:应用程序只能使用非特权指令,如加法指令。
- CPU在设计和生产的时候就划分了特权指令和非特权指令,因此CPU执行一条指令前就能判断出其类型。
3. 两种处理器状态
- CPU有两种状态:内核态和用户态:
- 内核态:也称为 核心态、管态。处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令
- 用户态:也称为目态。处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令。
- CPU中有一个寄存器叫 程序状态字寄存器(PSW),其中有个二进制位,1表示“内核态”,0表示“用户态”
4. 内核态和用户态的切换
- 刚开机时,CPU为 内核态,操作系统内核程序先上CPU运行
- 内核态转用户态:执行一条特权指令——修改PSW的标志位为用户态,这个动作意味着操作系统将主动让出CPU使用权。
- 用户态转内核态:由“中断”引发,硬件自动完成变态过程,触发终端信号意味着操作系统将强行夺回CPU的使用权。
- CPU检测到中断信号后,会立即变为核心态;
- 停止运行当前的应用程序,转而运行处理终端信号的内核程序;
- 处理完引发中断的事件后,再把CPU使用权交给别的应用程序。
- 但凡需要操作系统介入的地方,都会触发终端信号。
六、中断和异常
1. 中断的作用
- 中断是让操作系统内核夺回CPU使用权的唯一途径
- 使CPU从用户态转为内核态
- 如果没有中断机制,那么一旦应用程序上CPU运行,CPU就会一直运行这个应用程序。
2. 中断的类型
-
内中断:与当前执行的指令有关,中断信号来源于CPU内部
-
常被称为 异常、例外。
-
陷入(trap):应用程序 主动 将CPU控制权还给操作系统内核,会执行陷入指令,该指令会引发一个中断信号。
-
故障(fault):由错误条件引起的,可能被内核程序修复。修复后 会归还 CPU使用权。
-
终止(abort):由致命错误引起,内核程序无法修复该错误。不会归还 CPU使用权。若当前执行的指令是非法的(用户态执行特权指令、除数为0),则会引发一个中断信号。
-
检查中断信号:CPU在执行指令时会检查是否有异常发生。
-
-
外中断:与当前执行的指令无关,中断信号来源于CPU外部
- 常被称为 中断(狭义)
- 时钟中断:实现多道程序并发,时钟部件每隔一个时间片会给CPU发送一个时钟中断信号。
- I/O中断:当 IO 任务完成时,向CPU发送中断信号。
- 检查中断信号:每一条指令执行结束后,CPU都会例行检查是否有外中断信号需要处理
3. 中断机制的基本原理
- 不同的中断信号,需要用不同的中断处理程序来处理。
- 当CPU检测到中断信号后,会根据中断信号的类型去查询 中断向量表,以此来找到相应的中断处理程序在内存中的存放位置。
- 中断处理程序一定是内核程序,需要运行在内核态。
七、系统调用
1. 系统调用概念
- 在 2-2 (操作系统的功能——向上层提供服务)中说到:程序接口只能通过程序间接使用。程序就是系统调用。
- 系统调用,是操作系统提供给应用程序(编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务。
2. 系统调用的作用
- 当同一资源被不同进程访问时,进程需要通过系统调用向操作系统内核发出请求。内核会对各个请求进行协调处理
- 系统中的各种共享资源都由操作系统内核统一管理,因此凡是与共享资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。
- 保证系统的稳定性和安全性,防止用户进行非法操作。
3. 系统调用和库函数的区别
- 在使用C语言时,会使用一些库函数,例如 math、stdio 中的库函数。
由下向上:
- 裸机
- 操作系统:向上提供系统调用,使上层程序能请求内核的服务
- 编程语言:向上提过库函数。会将系统调用封装成库函数。
- 普通应用程序:可直接进行系统调用,也可使用库函数。
由此可见,有的库函数设计系统调用,有的不涉及。因此,库函数 > 系统调用。
- 设计系统调用的库函数:创建一个新文件
fopen
- 不涉及系统调用的库函数:取绝对值
abs
4. 系统调用的分类
- 系统调用按功能分类
功能 | 说明 |
---|---|
设备管理 | 完成 设备 的 请求、释放、启动 等功能 |
文件管理 | 完成 文件 的 读写、创建、删除 等功能 |
进程管理 | 完成 进程 的 创建、撤销、阻塞、唤醒 等功能 |
进程通信 | 完成 进程之间 的 信息传递、信号传递 等功能 |
内存管理 | 完成 内存 的 分配、回收 等功能 |
5. 系统调用的过程
- 过程:
- 应用程序调用库函数(封装了系统调用的库函数)
- 传递系统调用参数
- 执行陷入指令,引发中断信号(用户态)
- 操作系统内核处理中断事件,执行相应的请求内核程序处理系统调用(核心态)
- 返回应用程序
截图来源于 P7 1.3_3_系统调用 09:52
- 陷入指令,也称之为 trap指令、访管指令。
注意⚠️⚠️
- 陷入指令是在用户态执行的,执行陷入指令后立即引发一个内中断,使CPU进入核心态。
- 发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行。
八、操作系统体系结构
1. 操作系统的内核
- 内核是操作系统最基本、最核心的部分。实现操作系统内核功能的那些程序就是内核程序。
- 操作系统内核与硬件关联较紧密的模块:时钟管理、中断处理、原语。
- 不直接涉及硬件、更多的是对数据结构的操作:进程管理、存储器管理、设备管理等。
截图来源于 P8 1.4_1_操作系统体系结构(上) 02:11
- 内核设计方法有大内核、微内核等。
- 变态(CPU状态的转换)的过程是有成本的,要消耗不好时间,频繁地转换会降低系统性能。
2. 大内核
- 大内核,也叫宏内核、单内核。
- 大内核将操作系统的主要功能模块(上图中内核所示的两层)都作为系统内核,运行在核心层。
- 优点:高性能;
- 缺点:内核代码庞大、结构混乱、难以维护;
- 常见的大内核操作系统有 Linux、UNIX。
截图来源于 P8 1.4_1_操作系统体系结构(上) 06:18
3. 微内核
- 只把最基本的功能(与硬件关联较紧密的模块)保留在内核。
- 优点:内核功能少、结构清晰、方便维护;
- 缺点:需要频繁地在核心态和用户态之间切换,性能低。
- 常见的微内核操作系统有 Windows NT。
截图来源于 P8 1.4_1_操作系统体系结构(上) 06:18
4. 分层结构
- 最底层是硬件,最高层是用户接口
- 每层只能调用更低一层
截图来源于 P8 1.4_1_操作系统体系结构(下) 01:09
5. 模块化
- 模块化设计方法也称为 模块-接口法。
- 模块化是操作系统按功能划分为若干个具有一定独立性的模块。
- 每个模块具有某方面的管理功能,并规定好各模块之间能通过接口进行通信。
- 还可以进一步将各模块细分为若干个具有一定功能的子模块,同样也规定好各子模块之间的接口。
截图来源于 P8 1.4_1_操作系统体系结构(下) 06:55
6. 外核
- 内核负责进程调度、进程通信等功能;外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全。
截图来源于 P8 1.4_1_操作系统体系结构(下) 14:00
7. 六种体系结构总结
体系结构 | 特性、思想 | 优点 | 缺点 |
---|---|---|---|
大(宏)内核 | 所有的系统功能都放在内核里(大内核结构的OS通常也采用了“模块化”的设计思想) | ★ 性能高,内核内部各种功能都可以直接相互调用 | ★ 内核庞大,功能复杂,难以维护 |
★ 大内核中某个功能模块出错,就可能导致整个系统崩溃 | |||
微内核 | 只把中断、原语、进程通信等核心的功能放入内核。进程管理、文件管理、设备管理等功能以用户进程的形式运行在用户态 | ★ 内核小,功能少,易于维护,内核可靠性高 | ★ 性能低,需要频繁地切换用户态/核心态。 |
★ 内核外的某个功能模块出错不会导致整个系统崩溃 | ★ 用户态下的各功能不可以直接相互调用,只能通过内核的“消息传递”来间接通信 | ||
分层结构 | 内核分多层,每层可单向调用更低一层提供的接口 | ★ 便于调试和验证,自底向上逐层调试验证 | 仅可调用相邻低层,难以合理定义各层的边界 |
易扩充和易维护,各层之间调用接口清晰固定 | ★ 效率低,不可跨层调用,系统调用执行时间长 | ||
模块化 | ★ 将内核划分为多个模块,各模块之间相互协作。 内核=主模块+可加载内核模块 主模块:只负责核心功能,如进程调度、内存管理; 可加载内核模块:可以动态加载新模块到内核,而无需重新编译整个内核 | 模块间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发 | 模块间的接口定义未必合理、实用 |
★ 支持动态加载新的内核模块(如:安装设备驱动程序、安装新的文件系统模块到内核),增强OS适应性 | |||
模块间相互依赖,更难调试和验证 | |||
★ 任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高 | |||
外核 | ★ 内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全 | ★ 外核可直接给用户进程分配“不虚拟、不抽象”的硬件资源,使用户进程可以更灵活的使用硬件资源 | 降低了系统的一致性 |
★ 减少了虚拟硬件资源的“映射层”,提升效率 | 使系统变得更复杂 |
九、操作系统引导(Boot)
-
操作系统引导:开机的时候,让操作系统在电脑上运行起来。
-
一个磁盘包含:
- 主引导记录(MBR):包含磁盘引导程序、分区表
- C、D、E、F等盘
-
一般情况下,C盘是这个磁盘的活动分区,安装了操作系统。C盘包含:
- 引导记录(PBR):负责找到“启动管理器”
- 根目录
- 其他
-
完整的操作系统初始化程序(即 启动管理器)可在根目录下找到;
- Windows操作系统完整的开机初始化程序在 “根目录/Windows/Boot” 下
-
操作系统引导步骤:
- CPU从一个特定主存地址开始,取指令,执行ROM中的引导程序(先进行硬件自检,在开机)
- 将磁盘的第一块(主引导记录)读入内存,执行磁盘引导程序,扫描分区表
- 从活动分区(又称主分区,即安装了操作系统的分区)读入分区引导记录,执行其中的程序
- 从根目录下找到完整的操作系统初始化程序(即启动管理器)并执行,完成“开机”的一系列动作
十、虚拟机
-
传统的计算机,一台物理机器上只能运行一个操作系统。
-
虚拟机:使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机起(Virtual Machine,VM),每个虚拟机都可以独立运行一个操作系统。
-
同义术语:虚拟机管理程序 / 虚拟机监控程序 / Virtual Machine Monitor / Hypervisor。
-
虚拟机分类:
-
直接运行在硬件上
-
运行在宿主机操作系统上
-
-
两类虚拟机管理程序(VMM)对比
- Host OS:宿主操作系统;Guest OS:客户操作系统。
- 支持虚拟化的CPU通常分更多指令等级:Ring 0 表示 0环。
截图来源于 P11 1.6_虚拟机 16:15
对比项 | 第一类VMM | 第二类VMM |
---|---|---|
对物理资源的控制权 | 直接运行在硬件之上,能直接控制和分配物理资源 | 运行在 Host OS 之上,依赖于 Host OS 为期分配物理资源 |
资源分配方式 | 在安装 Guest OS 时,VMM 要在原本的硬盘上自行分配存储空间,类似于“外核”的分配方式,分配未经抽象的物理硬件 | Guest OS 拥有自己的虚拟硬盘,该盘实际上是 Host OS 文件系统中的一个大文件。Guest OS 分配到的内存是虚拟内存 |
性能 | 性能更好 | 性能更差,需要 Host OS 作为“中介” |
可支持的虚拟机数量 | 更多,不需要和 Host OS 竞争资源,相同的硬件资源可以支持更多的虚拟机 | 更少,Host OS 本身需要使用物理资源,Host OS 上运行的其他进程也需要物理资源 |
虚拟机的可迁移性 | 更差 | 更好,只需导出虚拟机镜像文件即可迁移到另一台 Host OS 上,商业化应用更广泛 |
运行模式 | 运行在最高特权级(Ring 0),可以执行最高特权的指令 | 部分运行在用户态,部分运行在内核态。Guest OS 发出的系统调用会被 VMM 截获,并转化为 VMM 对 Host OS 的系统调用 |