1 操作系统概述
1.1 基本概念
1.1.1 概念
系统软件。
封装思想: 操作系统把一些丑陋的硬件功能封装成简单易用的服务,便用户能更方便地使用计算机,用户无需关心底层硬件的原理,只需要对操作系统发出命令即可。
1.1.2 特征
1)并发
宏观上同时发生,微观上交替发生。操作系统和程序并发是一起发生的。
注意区分:并发&并行
-
并发:交替发生,宏观上似乎是同时发生。单核cpu可以并发地执行。并发性是操作系统的基本特性。
-
并行:完全同时发生。多核cpu可以并行地执行——同时执行多个程序。
2)共享
系统中的资源可供多个并发执行的进程共同使用。
![image-20210627091815593](https://tva1.sinaimg.cn/large/008i3skNgy1grwk6we0eej30v4072wgx.jpg)
注意:同时共享是宏观上的,在微观上看,实则是分时共享。
实例:1)互斥共享:微信视频&QQ视频,同一时刻内摄像头只能分配给其中一个进程。
2)同时共享:使用QQ发送资源A,使用微信发送资源B,宏观上两个进程都在访问硬盘资源,微观上两个进程交替访问资源。
并发性 & 共享性的关系:存在互为条件。
并发性 | 共享性 |
---|---|
系统中存在着多个同时运行的程序 | 系统中的资源可供多个并发执行的进程共同使用 |
![image-20210627092538810](https://tva1.sinaimg.cn/large/008i3skNgy1grwkejin92j30v40f4795.jpg)
3)虚拟
把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。、
程序需要先放入内存,再给其分配cpu才能执行。
![image-20210627092736379](https://tva1.sinaimg.cn/large/008i3skNgy1grwkgl7y14j30v40afn0d.jpg)
4)异步
多道程序同时执行的情况下,程序不是一走到底,而是走走停停。只有程序拥有了并发性,才有可能导致异步性。
1.1.3 目标与功能
1.1.3.1 目标
![image-20210627101547591](https://tva1.sinaimg.cn/large/008i3skNgy1grwluq6oo5j30v407cn1y.jpg)
1.1.3.2 功能
1)作为系统资源的管理者
- 处理机管理
- 存储器管理
- 文件管理
- 设备管理
2)用户和计算机硬件系统之间的接口:
- 利用GUI(graphical user interface),用户可以使用形象的图形界面进行操作
- 命令接口:
- 联机命令:说一句做一句,交互式命令接口
- 脱机命令:说一堆做一堆,批处理命令接口
- 程序接口:在程序中进行系统调用(广义指令)
3)扩充机器:最接近硬件的软件
- 裸机:无任何软件支持的机器
- 扩充机器/虚拟机:覆盖了软件的机器
1.2 发展与分类
1.2.1 手工操作
用户独占全机、人机速度盾导致资源利用率极低
![image-20210627103159116](https://tva1.sinaimg.cn/large/008i3skNgy1grwmbkgx7tj30v40f5dm2.jpg)
1.2.2 批处理阶段
1.2.2.1 单批道处理
引入脱机输入/输出技术(用外围机+磁带完成),并由监督程序(操作系统的雏形)负责控制作业的输入、输出
![image-20210627103233267](https://tva1.sinaimg.cn/large/008i3skNgy1grwmc5v2tjj30v40czq73.jpg)
主要缺点:内存中仅能有一道程序运行,只有该程序运行结束之后オ能调入下一道程序。CPU有大量的时间是在空闲等待I/O完成。资源利用率依然很低
![image-20210627103352324](https://tva1.sinaimg.cn/large/008i3skNgy1grwmdj4dvgj30v408nt9u.jpg)
1.2.2.2 多批道处理
每次往内存读入多道程序,操作系统正式诞生,用于支持多批道程序的并发运行。
![image-20210627103545819](https://tva1.sinaimg.cn/large/008i3skNgy1grwmfhxhi5j30v40h43zv.jpg)
优点 | 缺点 |
---|---|
多道程序并发执行,共享计算机资源。 | 用户响应时间长,没有人机交互功能(eg:无法调试程序/无法在程序运行过程中输入一些参数) |
资源利用率大幅提升,CPU和其他资源更能保持“忙碌”状态,系统吞吐量增大。 |
1.2.3 分时操作系统
![image-20210627103811715](https://tva1.sinaimg.cn/large/008i3skNgy1grwmi18e08j30v40ca43j.jpg)
定义 | 优点 | 缺点 |
---|---|---|
计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互 | 解决人机交互问题。用户对计算机的操作独立,感受不到别人的存在 | 不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/ 作业服务一个时间片,不区分任务的紧急性 |
1.2.4 实时操作系统
能够优先响应一些紧急任务,某些紧急任务不需时间片排队。
计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件。实时操作系统的主要特点是及时性和可靠性
-
硬件实时系统:严格规定时间内完成处理(如:导弹控制系统、自动驾驶系统)
-
软件实时系统:偶尔能违反规定(如:12306火车订票)
1.2.5 网络操作系统 & 分布式计算机操作系统
1.2.5.1 网络操作系统
把网络中各个计算机有机地结合起来,实现数据传送等功能,实现网络中各种资源的共享(如文件共享)和各台计算机之间的通信。
1.2.5.2 分布式计算机操作系统
主要特点是分布性和并行性。系统中的各台计算机地位相同,任何工作都可以分布在这些计算机上,由它们并行、协同完成这个任务。
1.3 运行环境
1.3.1 运行机制
预备知识:一个程序如何在计算机上跑起来:
在CPU设计和生产的时候就划分了特权指令和非特权指令,因此CPU 执行一条指令前就能别所出其类。
![image-20210627105144295](https://tva1.sinaimg.cn/large/008i3skNgy1grwmw4cmv6j30v40evjw2.jpg)
- 普通程序员写应用程序;
- 应用程序只能使用“非特权指令”
- 微软苹果谷歌专门有程序员写操作系统的“内核程序”。多道内核程序组成“操作系统内核”,简称“内核”(kernel),这是最接近硬件的部分。一个操作系统只需要内核就够了。操作系统所有的功能未必都在内核中,如GUI。
- 特权指令例如内存清零指令,只允许“管理者”一一即操作系统内核来使用
1.3.1.1 两种指令
- 非特权指令:应用程序只能使用“非特权指令”
- 特权指令:特权指令例如内存清零指令,只允许“管理者”一一即操作系统内核来使用
1.3.1.2 两种状态
-
内核态:运行的是内核程序,此时可以执行特权指令
-
用户态:运行的是应用程序,此时只能执行非特权指令
-
内核态=核心态=管态;用户态=目态
-
CPU中PSW的某个二进制位的0状态表示用户态,1表示用户态。
用户态 & 内核态的切换
1.3.1.3 两种程序
问题:CPU如何判断当前是否可以执行特权指令?
![image-20210627111459514](https://tva1.sinaimg.cn/large/008i3skNgy1grwnkbljjlj30v409ptb6.jpg)
![image-20210627111514116](https://tva1.sinaimg.cn/large/008i3skNgy1grwnkknodxj30v409940y.jpg)
![image-20210627111930457](https://tva1.sinaimg.cn/large/008i3skNgy1grwnp0tyshj30v40c00vv.jpg)
1.3.2 中断和异常的概念
1.3.2.1 中断的作用
CPU上会运行两种程序,一种是操作系统内核程序,一种是应用程序。在合适的情况下,操作系统内核会把CPU的使用权主动让给应用程序,“中断”是让操作系统内核夺回CPU使用权的唯一途径,如果没有“中断”机制,那么一旦应用程序上CPU运行,CPU就会一直运行这个应用程序,如此一来,就无法实现并发。
![image-20210627114014672](https://tva1.sinaimg.cn/large/008i3skNgy1grwoal4nr0j30v403ljss.jpg)
1.3.2.2 类型
![image-20210627114652521](https://tva1.sinaimg.cn/large/008i3skNgy1grwohhngqyj30v40dpn29.jpg)
内中断 | 外中断 |
---|---|
异常、例外 | 中断 |
与当前执行的指令有关 | 与当前执行的指令无关 |
中断信号来自于CPU内部 | 中断信号来自于CPU外部 |
陷阱、陷入 | 故障 | 终止 |
---|---|---|
陷入指令引发,故意为之 | 错误条件引起,可能被修复 | 致命错误引起。无法修复 |
被修复之后CPU使用权归还给程序 | 不归还使用权 | |
如整除0,非法使用特权指令等 |
1.3.2.3 中断机制的基本原理
不同的中断信号,需要用不同的中断处理程序来处理。
当CPU检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。
1.3.3 系统调用
1.3.3.1 是什么,有啥用
![image-20210627115615791](https://tva1.sinaimg.cn/large/008i3skNgy1grwor9avm8j30v408awgc.jpg)
操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单易用的服务。主要包括命令接口和程序接口。其中,程序接口由一组系统调用组成。
“系统调用”是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务
1.3.3.2 系统调用和库函数的区别
1.3.3.3 为何调用是必须的?
eg:两个进程并发运行,打印机设备交替地收到WPS和Word两个进程发来的打印请求,结果两篇论文的内容混杂在一起了
解决方法:由操作系统内核对共享资源进行统一的管理,并向上提供“系统调用”,用户进程想要使用打印机这种共享资源,只能通过系统调用向操作系统内核发出请求。内核会对各个请求进行协调处理
1.3.3.4 什么功能需要系统调用实现?
1.3.3.5 系统调用的过程
![image-20210627120517060](https://tva1.sinaimg.cn/large/008i3skNgy1grwp0nheukj30v40fmn1o.jpg)
注意:
- 陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,使CPU进入核心态
- 发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行
1.4 体系结构
1.4.1 大内核 & 微内核
![image-20210627112533864](https://tva1.sinaimg.cn/large/008i3skNgy1grwnvbfg79j30v408j781.jpg)
内核 | 大内核 | 微内核 |
---|---|---|
企业的管理层,负责一些重要的工作。 | 企业初创时体量不大,管理层的人会负责大部分的事情。 | 随着企业体量越来越大,管理层只负责最核心的一些工作 |
只有管理层才能执行特权指令,普通员工只能执行非特权指令。 | 优点是效率高 | 优点是组织结构清晰,方便维护 |
用户态、核心态之间的切换相当于普通员工和管理层之间的工作交接 | 缺点是组织结构混乱,难以维护。 | 缺点是效率低。 |