一、 操作系统的基本概念
1.1 概念(定义):什么是操作系统
- 操作系统operating system,OS:控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;是计算机系统中最基本的系统软件:
- os是系统资源的管理者
- 向上提供方便易用的服务
- 是最接近硬件的一层软件
- 执行一个程序前需要将该程序放到内存中,才能被CPU处理
- 封装思想:os将一些丑陋的硬件功能封装成简单易用的服务,使用户能更方便地使用计算机;用户无需关心底层硬件的原理,只需对操作系统发出命令
1.2 功能和目标:操作系统要做什么
- 资源的管理者:处理机管理、存储器管理、文件管理、设备管理
- 向上提供方便易用的服务:
- 给普通用户的:GUI图形化用户接口(graphical user interface); 命令接口(联机命令接口 = 交互式命令接口、脱机命令接口 = 批处理命令接口)
- 程序接口(程序代码间接的进行系统调用 = 广义指令使用程序接口)
- 其中:命令接口与程序接口又称为用户接口
- 对硬件机器的拓展:没有任何软件支持的计算机称为裸机;覆盖了软件的机器称为扩充机器/虚拟机
1.3 操作系统的特征:并发、共享、虚拟、异步
- 并发与共享是两个最基本的特征,二者互为存在条件
- 并发性:计算机系统中同时存在着多个运行着的程序
- 共享性:系统中的资源可供内存中多个并发程序的进程共同使用
- 没有并发和共享就谈不上虚拟和异步
1.3.1 并发
- 并发:两个或多个事件在同一时间间隔内发生;宏观上是同时发生的,微观上是交替发生
- 并行:两个或多个事物在同一个时刻同时发生
- 操作系统是伴随着“多道程序技术”而出现的,因此操作系统和程序并发是一起诞生的
- 并发性是操作系统一个最基本的特性
- 单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行
- 多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行
1.3.2 共享
- 共享:资源共享,系统中的资源可供内存中多个并发执行的进程同时使用
- 共享方式:
- 互斥共享方式:一个时间段内只允许一个进程访问该资源,如硬件设备摄像头等
- 同时共享方式:允许一个时间段内由多个进程“同时”对它们进行访问,如文件读取等
1.3.3 虚拟
- 虚拟:把一个物理上的实体变为若干个逻辑上的对应物
- 物理实体是实际存在的,逻辑上的对应物是用户感受到的
- 虚拟存储器技术,是虚拟技术的“空分复用技术”;虚拟处理器,是虚拟技术的“时空复用技术”
1.3.4 异步
- 异步:在多道程序环境下,允许多个进程并发执行;但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,即进程的异步性
二、操作系统的发展与分类
-
手工操作阶段
- 主要缺点:用户独占全机、人机速度矛盾导致资源利用率极低
-
批处理阶段——单道批处理系统
- 引入脱机输入/输出技术,并由**监督程序(操作系统的雏形)**负责控制作业的输入、输出
- 主要优点:缓解了一定程度人机速度矛盾,资源利用率有所提升
- 主要缺点:内存中仅能有一道程序运行;CPU有大量的时间是在空闲等待I/O完成;资源利用率依然很低
-
批处理阶段——多道批处理系统
- 操作系统正式诞生,用于支持多道程序并发运行,每次往内存中读入多道程序
- 主要优点:多道程序并发执行,共享计算机资源;资源利用率大幅提升,CPU和其他资源更能保持“忙碌”状态,系统吞吐率增大
- 主要缺点:用户响应时间长,没有人机交互功能
-
分时操作系统
- 计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互
- 主要优点:用户请求可以被即时响应,解决了人机交互问题;允许多个用户同时使用一台计算机,且对计算机的操作相互独立,感受不到别人的存在
- 主要缺点:不能处理紧急任务(操作系统对各个用户/作业完全公平,循环地为其服务一个时间片)
-
实时操作系统在这里插入图片描述
- 计算机系统接收到外部信号后及时进行处理,并在严格的时限内处理完成事件
- 主要优点:能优先响应一些紧急任务,保证及时性和可靠性
- 分类:硬实时操作系统(必须在绝对严格的规定时间内完成处理,如导弹控制系统)、软实时操作系统(能接受偶尔违反时间规定,如订票系统)
-
网络操作系统:伴随着计算机网络的发展而诞生的,能把网络中各个计算机有机地结合起来,实现数据传送等功能,实现网络中各种资源的共享 (如文件共享)和各台计算机之间的通信 (如: windows NT 就是一种典型的网络操作系统,网站服务器就可以使用)
-
分布式操作系统:主要特点是分布性和并行性,系统中的各台计算机地位相同,任何工作都可以分布在这些计算机上,由它们并行、协同完成这个任务
-
个人计算机操作系统:如Windows XP、MacoS,方便个人使用。
三、操作系统的运行机制
- 指令:处理器CPU能识别、执行的最基本命令
3.1 运行机制
3.1.1 两种程序:内核程序、应用程序
- 应用程序:跑在操作系统之上的程序,只能使用“非特权指令”
- 内核程序:实现操作系统的程序,简称内核kernel;内核是操作系统最重要最核心的部分,也是最接近硬件的部分
- CPU设计和生产时就划分了特权指令和非特权指令
3.1.2 两种指令:特权指令、非特权指令
3.1.3 两种处理器状态:核心态、用户态
- CPU有两种状态:核心态、用户态
- 处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令
- 处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令
- CPU中有一个PSW程序状态字寄存器,通过其中的二进制位区分内核态还是用户态
- 状态切换:
- 内核态 → 用户态: 执行一条特权指令–修改PSW的标志位为“用户态”,意味着操作系统将主动让出CPU使用权
- 用户态 → 内核态:由**“中断”引发,硬件自动完成变态过程**,触发中断信号意味着操作系统将强行夺回CPU的使用权
- 凡是需要操作系统介入的地方,都会触发中断信号,如非法使用特权指令
3.2 中断和异常
3.2.1 中断的作用
- CPU上会运行两种程序,一种是操作系统内核程序,一种是应用程序
- “中断”是让操作系统内核夺回CPU使用权的唯一途径
- “中断”会使CPU由用户态变为内核态,使操作系统重新夺回对CPU的控制权
3.2.2 中断的类型
- 内中断
- 与当前指令有关,中断信号来源于CPU内部
- 例子:特权指令、非法指令、陷入指令(如系统调用,不是特权指令)
- 陷阱、陷入trap:由陷入指令引发,是应用程序故意引发的
- 故障fault:由错误条件引起的,可能被内核程序修复;修复后把 CPU使用权还给应用程序,以继续执行,如:缺页故障
- 终止abort:由致命错误引起,内核程序无法修复该错误,因此一般不再将CPU使用权还给引发终止的应用程序,而是直接终
- 外中断:与当前指令无关,中断信号来源于CPU外部
- 时钟中断
- I/O中断
3.2.3 中断机制的基本原理
- 不同的中断信号,需要用不同的中断处理程序来处理
- 当CPU检测到中断信号后,会根据中断信号的类型去查询**“中断向量表”**,以此来找到相应的中断处理程序在内存中的存放位置
- 中断程序一定是内核程序,需要运行在“内核态”
3.3 系统调用
- 系统调用:操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务
- 系统调用与库函数的区别:
- 普通应用程序:可直接进行系统调用,可使用库函数(有的库函数涉及系统调用,有的不涉及)
- 编程语言:向上提供库函数,有时会将系统调用封装成库函数,以隐藏系统调用的一些细节,使程序员编程更加方便
- 操作系统:向上提供系统调用,使得上层程序能请求内核的服务
- 裸机
- 系统调用按功能分类
- 设备管理:设备的请求/释放/启动等
- 文件管理:文件的读/写/创建/删除等
- 进程控制:进程的创建/撤销/阻塞/唤醒等
- 进程通信:进程之间的消息传递/信号传递等
- 内存管理:内存的分配/回收等
- 什么功能用系统调用?
- 应用程序通过系统调用请求操作系统的服务
- 凡是与共享资源有关的操作(存储分配、I/O操作、文件管理等),必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成
- 保证系统的稳定性和安全性,防止用户进行非法操作
- 系统调用的过程:传递系统调用的参数 → 执行陷入指令【用户态】 → 执行相应的内请求,核程序处理系统调用 【核心态】 → 返回应用程序
- 陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,使CPU进入核心态
- 发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行
- 陷入指令 = trap 指令 = 访管指令
四、操作系统体系结构
- 内核:操作系统最基本、最核心的部分
- 内核程序:实现操作系统内核功能的程序
4.1 大内核(宏内核/单内核)与 微内核
- 操作系统内核需要运行在内核态,非内核功能运行在用户态
- 变态的过程是有成本的,需要耗费时间,频繁地变态会降低系统性能
- 微内核:使用消息传递进行间接通信
4.2 分层结构、模块化、外核
- 分层结构
- 最底层是硬件,最高层是用户接口
- 每层可调用更低一层
- 模块化
- 模块化将操作系统按功能划分为若干个具有一定独立性的模块
- 内核 = 主模块 + 可加载内核模块
- 外核exokernel
- 内核负责进程调度、进程通信
- 外核负责为用户进程分配未经抽象的硬件资源,负责保证资源使用安全
- 未经抽象的硬件资源:根据用户进程分配连续空间,减少磁头不停转换、减少虚拟硬件资源的映射
4.3 系统结构的比较
五、操作系统引导boot
- CPU从一个特定主存地址开始,取指令,执行ROM中的引导程序 (先进行硬件自检,再开机)
- 将磁盘的第一块——主引导记录 读入内存,执行磁盘引导程序,扫描分区表
- 从活动分区 (又称主分区,即安装了操作系统的分区) 读入分区引导记录,执行其中的程序
- 从根目录下找到完整的操作系统初始化程序(即 启动管理器) 并执行,完成“开机”的一系列动作
六、虚拟机
- 虚拟机virtual machine,VM:使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器,每个虚拟机器都独立运行一个操作系统
- 虚拟机管理程序VMM = 虚拟机监控程序: virtual machine monitor/hypervisor
- VMM分类:
- 第一类:直接运行在硬件上
- 第二类:运行在宿主操作系统上
- 支持虚拟化的CPU通常分更多指令等级:最高权限Ring 0 — 最低权限Ring 3
- 两类虚拟机管理程序VMM对比