操作系统概念
概念:
- 系统资源的管理者,既管理软件又管理硬件;
- 向上层提供方便易用的服务;
- 最接近硬件的一层软件;
功能:
- 资源的管理者
- 处理器管理
- 存储器管理
- 文件管理
- 设备管理
- 为用户和计算机硬件提供接口
- 给用户使用的
- GUI
- 命令接口:
- 联机命令接口:用户发送一个命令,系统执行一个命令,主要特点是交互性
- 脱机命令接口:用户一次性发送命令清单,系统按照清单执行,中途不能干预
- 给软件/程序员使用的:系统调用接口
- 给用户使用的
- 对计算机资源的扩充
- 裸机:没有任何软件支持的计算机
- 扩充机器/虚拟机:覆盖了软件的机器
操作系统特征
- 并发
- 共享
- 虚拟
- 异步
并发: 需要区分并发和并行:
- 并发是指两个或多个事件在同一时间间隔内发生。宏观上同时发生,微观上交替发生;
- 并行:两个或多个事件在同一时刻同时发生;
单核CPU同一时刻只能执行一个程序,各个程序只能并发执行;多核CPU同一时刻可以同时执行多个程序,多个程序可以并行执行;
共享:
资源共享,系统中的资源可供内存中多个并发执行的进程共同使用。
两种资源共享方式:
- 互斥共享: 系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源;
- 同时共享:系统中的某些资源,允许一个时间段内由多个进程”同时“对它们进行访问。(注意这个同时是宏观上的,微观上可能是交替的进行资源访问)
虚拟:
虚拟是指把一个物理上的实体变为若干逻辑上的对应物。物理实体是实际存在的,逻辑对应物是用户感知到的。
- 空分复用技术:如虚拟存储器,系统只有4g内存,但可以同时允许很多软件
- 时分复用技术:如处理器的分时共享:单核CPU在用户看来也可以同时运行很多软件
异步:
异步是指在多道程序环境下,允许多个程序并发执行。但是由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进。
并发和共享互为存在条件:如果失去并发性,则系统中只有一个程序正在运行,则共享性失去意义;如果失去共享性,那么多个程序无法实现同时访问资源,就无法并发执行。
并发和共享是最基本的两个性质,没有并发和共享,就谈不上虚拟和异步:如果失去了并发性,则一个时间段内指运行一个程序,那么就失去了实现虚拟性的意义了;如果失去了并发性,那么系统只能串行地运行各个程序,那么每个程序的执行只会一贯到底,没有异步可言。
操作系统发展历程
操作系统 | 定义 | 特点 | 优点 | 缺点 |
---|---|---|---|---|
手工操作系统 | 纸袋机 | 用户独占全机、人机速度矛盾导致资源利用率极低 | ||
单道批处理系统 | 引入脱机输入(外围机+磁带),并由监督程序负责控制作业的输入、输出 操作系统雏形 |
自动性、顺序性、单道性 | 缓解了一定程度的人机速度矛盾,资源利用率有所提升 | 内存中仅有一道程序运行,运行结束后才能执行下一道。 cpu有大量时间在等待IO完成 |
多道批处理系统 | 操作系统正式诞生 多个用户将若干作业提交给计算机系统集中处理 |
多道,共享性,宏观上并行,微观上串行 | 资源利用率高,系统吞吐量大,CPU利用率高,IO设备利用率高 | 用户响应时间长 没有人机交互,批处理作业时用户无法干预 |
分时操作系统 | 计算机以时间片为单位轮流为各个用户。 | 同时性、交互性、独立性、及时性 | 提供人机交互能力 运行多个用户同时使用一台计算机 |
不能优先处理一些紧急任务 |
实时操作系统 | 硬实时:必须严格时间内完成处理 软实时:能偶尔接受违反时间规定 |
及时性、可靠性 | 能优先响应一些紧急任务 | |
网络操作系统 | 网络中的各个计算机邮寄结合起来,实现数据传输、资源共享(如Windows NT) | |||
分布式操作系统 | 系统中各个计算机地位相同,任何工作都可以分布在这些计算机上,由它们并行、协同完成 | 分布性、并行性 | ||
个人计算机操作系统 |
操作系统运行机制
程序的运行原理:高级语言编写代码,然后转为机器指令。程序运行的过程,其实就是CPU一条一条执行机器指令的过程。
两种程序
内核程序 和 应用程序
我们写的程序就是“应用程序”;
操作系统的程序就是“内核程序”。很多操作系统程序组成了“操作系统内核”,简称“内核”。内核是操作系统中最重要最接近核心的部分,也是最接近硬件的部分。
两种指令
特权指令 和 非特权指令
非特权指令:允许用户直接使用的指令,不能直接访问系统中的软硬件资源,只限于访问用户地址空间;
特权指令不允许用户直接使用,必须由操作系统来使用;
在CPU设计和生产的时候就划分了特权指令和非特权指令,因此CPU执行一条指令前就能判断出其类型。
两种处理器状态
内核态 和 用户态
CPU处于内核态(管态)时,说明此时正在运行的是内核程序,此时可以执行特权指令;
CPU处于用户态(目态)时,说明此时正在运行的是应用程序,此时只能执行非特权指令;
CPU内部有程序状态寄存器(PSW),其中有一个二进制位分别表示当前处于内核态还是用户态。
- 内核态->用户态:执行一条特权指令--修改PSW的标志位为用户态,这个动作意味着操作系统将主动让出CPU使用权;
- 用户态->内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行抢夺回CPU使用权。但凡需要操作系统介入的地方,都会触发中断信号;
中断和异常
CPU由用户态切换到内核态是中断完成的,中断是让操作系统夺回CPU使用权的唯一途径。中断也是操作系统并发的前提,如果没有中断,那么CPU就会一直运行一个应用程序。
中断分为内中断和外中断
内中断
内中断与当前执行的指令有关,中断信号来源于CPU内部。
内中断例子:
- 用户态程序执行非法指令时;
- 应用程序想要请求操作系统内核服务,此时会执行一条特殊指令--陷入指令。执行陷入指令意味着应用程序主动地将CPU控制权还给操作系统内核。
内中断一般被叫做异常,狭义的中断不包括内中断,异常分为:
- 陷阱、陷入:由陷入指令引发,是应用程序故意引发的
- 故障:由错误条件引起的,可能被内核程序修复。内核程序修复故障后会把CPU使用权还给应用程序。如缺页故障;
- 终止:致命错误引起,内核程序无法修复,因此一般不再把CPU使用权还给应用程序,而是直接终止应用程序。如除法操作除0
外中断
外中断于当前执行的指令无关,中断信号来源于CPU外部。
外中断例子:
- 时钟中断;
- I/O设备请求中断;
狭义的中断就是指外中断。
中断基本原理
不同的中断信号,需要用不同的中断处理程序来处理。当CPU检测到中断信号后,会根据中断信号的类型取查询“中断向量表”,以此来找响应的中断处理程序在内存中的存放位置。
中断处理程序是内核程序,运行在内核态。
内中断在CPU执行指令过程中就会检查是否有异常发生;
外中断在每个指令周期末尾才会检擦是否有外中断信号需要处理;
系统调用
操作系统提供了命令接口和程序接口。命令接口是给用户使用的,而“系统调用”是操作系统提供给应用程序使用的接口,应用程序可以通过系统调用来请求获得操作系统内核的服务。
系统调用不是库函数,我们当然可以直接通过汇编来访问系统调用,但我们通常调用编程语言的库函数,由库函数来调用系统调用接口。
应用程序通过系统调用来请求操作系统的服务。系统中的各种共享资源都由操作系统内核统一掌管,因此凡是与共享资源有关的操作,都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。这样可以保证系统的稳定性和安全性,防止用户非法操作。
分类:
- 设备管理
- 文件管理
- 进程控制
- 进程通信
- 内存管理
操作系统体系结构
内核是操作系统最基本,最核心的部分。实现操作系统内核功能的那些程序就是内核程序。
内核组成:
- 时钟管理:实现计时功能;
- 中断处理:负责实现中断机制;
- 原语:
- 是一种特殊的程序;
- 处于操作系统最底层,最接近硬件的部分;
- 这种程序运行具有原子性——其运行只能一气呵成,不能中断;
- 运行时间较短、调用频繁;
- 对系统资源进行管理的功能:
- 进程管理;
- 存储器管理;
- 设备管理;
操作系统的内核需要运行在内核态,非内核功能运行在用户态。
特性 | 优点 | 缺点 | |
---|---|---|---|
分层结构 | 内核分多层,每层可单向调用更低一层的接口 | 1、便于调试和验证,自底向上逐层验证 2、易扩充易维护,各层之间接口调用清晰固定 |
1、仅可调用相邻低层,难以合理定义各层的边界 2、效率低,不可跨层调用,系统调用执行时间长 |
模块化 | 将内核划分为多个模块,各个模块相互协作 内核=主模块+可加载内核模块 主模块:只负责核心功能,如进程调度、内存管理; 可加载内核模块:可以动态加载新模块到内核,无需重新编译整个内核 |
1、模块间逻辑清晰易于维护,确定模块间接口后可多模块同时开发 2、支持动态加载新的内核模块,增强OS适应性 3、任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高 |
1、模块间的接口定义未必合理、实用; 2、模块间相互依赖,更难调试和验证 |
大内核(宏内核) | 所有系统功能都放在内核里 | 性能高,内核内部各功能都可以直接互相调用 | 1、内核庞大功能复杂,难以维护 2、大内核中某个功能模块出错,就可能导致整个系统崩溃 |
微内核 | 只把中断、原语、进程通信等最核心的功能放入内核。进程管理、文件管理、设备管理等功能以用户态进程形式运行在用户态 | 1、内核功能小、易于维护,内核可靠性高 2、内核外的某个功能模块出错不会导致整个系统崩溃 |
1、性能低,需要频繁切换用户态/和心态。 2、用户态下各功能模块不能互相调用,只能通过内核的消息传递来间接通信 |
外核 | 内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全 | 1、外核可以直接给用户进程分配“不虚拟、不抽象”的硬件资源,使用户进程可以更灵活的使用硬件资源 2、减少了虚拟硬件资源的“映射层”,提升效率 |
1、降低了系统的一致性 2、使系统变的更复杂 |
操作系统引导
引导过程:
- CPU从一个特定主存地址开始,取指令,执行ROM中的引导程序(先进行硬件自检,再开机);
- 将磁盘的第一块——主引导记录 读入内存,执行磁盘引导程序,扫描分区表;
- 从活动分区(又称主分区,即安装了操作系统的分区)读入分区引导记录,执行其中的程序;
- 从根目录下找到完整的操作系统初始化程序(即启动管理器)并执行,完成“开机”的一系列动作;
虚拟机
虚拟机:使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器,每个虚拟机器都可以独立运行一个操作系统。
同义术语:虚拟机管理程序/虚拟机监控程序
第一类VMM | 第二类VMM | |
---|---|---|
对物理资源的控制权 | 直接运行在硬件之上,能直接控制和分配物理资源 | 运行在Host OS上,依赖Host OS为其分配物理资源 |
资源分配方式 | 在安装Guest OS时,VMM要在原本的硬盘上自行分配存储空间,类似于“外核”的分配方式,分配未经抽象的物理硬件 | Guest OS拥有自己的虚拟磁盘,该盘实际上是Host OS文件系统中的一个大文件。Guest OS分配到的内存是虚拟内存 |
性能 | 性能好 | 性能差,需要Host OS作为中介 |
可支持的虚拟机数量 | 更多,不需要和Host OS竞争资源,相同的硬件资源可以支持更多的虚拟机 | 更少,Host OS本身需要使用物理资源,Host OS上运行的其他进程也需要物理资源 |
虚拟机的可迁移性 | 更差 | 更好,只需要导出虚拟机镜像文件即可迁移到另一台HostOS上,商业应用更广泛 |
运行模式 | 第一类VMM运行在最高特权指令(Ring 0)可以执行最高特权指令 | 第二类VMM部分运行在用户态,部分运行在内核态。GuestOS发出的系统调用会被VMM截获,并转化为VMM对HostOS的系统调用 |