操作系统的定义
- 操作系统负责协调硬件、软件等计算机资源的工作
- 操作系统为上层、应用程序提供简单易用的服务
-
操作系统的功能和目标
操作系统的功能⭐
处理器管理
- 存储管理
- 文件管理
- 设备管理
- 用户接口
-
向上层提供服务
封装思想:操作系统把一些硬件功能封装成简单易用的服务,使用户能更方便地使用计算机,用户无需关心底层硬件的原理,只需要对操作系统发出命令即可。
普通用户
GUI 用户图形界面
命令接口
程序接口 (系统调用):可以在程序中进行系统调用来使用程序接口。普通用户不能直接使用程序接口,只能通过程序代码间接使用。
用户可以通过 GUI 或命令接口来直接使用操作系统提供的功能;也可以通过应用程序间接使用操作系统提供的功能。
应用程序只能通过系统调用的方式请求操作系统服务。
扩展硬件机器
扩充机器:操作系统对硬件机器进行拓展:将 CPU、内存、磁盘、显示器、键盘等硬件合理地组织起来,让各种硬件能够相互协调配合,实现更多更复杂的功能。
小结
操作系统的特征⭐
并发
并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。 易混概念——并行:指两个或多个事件在同一时刻同时发生。
操作系统的并发性指计算机系统中 “同时” 运行着多个程序,这些程序宏观上看是同时运行着的,而微观上看是交替运行的。
单核 CPU 同一时刻只能执行一个程序,各个程序只能并发地执行。 多核 CPU 同一时刻可以同时执行多个程序,多个程序可以并行地执行。
并发性是操作系统一个最基本的特性。共享
共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
两种资源共享方式互斥共享方式
系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源
同时共享方式
系统中的某些资源,允许一个时间段内由多个进程 “同时” 对它们进行访问
所谓的 “同时” 往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问的(即分时共享)
生活实例:
互斥共享方式:使用 QQ 和微信视频。同一时间段内摄像头只能分配给其中一个进程。
同时共享方式:使用 QQ 发送文件 A,同时使用微信发送文件 B。宏观上看,两边都在同时读取并发送文件,说明两个进程都在访问硬盘资源,从中读取数据。而在微观上看,两个进程是交替访问硬盘的。
并发和共享的关系
并发性指计算机系统中同时存在着多个运行着的程序。 共享性指系统中的资源可供内存中多个并发执行的进程共同使用。
如果失去并发性,则系统中只有一个程序正在运行,则共享性失去存在的意义;如果失去共享性,则并发程序不能同时访问硬盘资源,也就无法并发。
因此,并发性与共享性互为存在条件。
虚拟
虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。
虚拟技术
- 空分复用技术 (虚拟存储器):内存——硬盘系统一定程度上解决了内存容量不够的问题
- 时分复用技术 (虚拟处理器):微观上处理机在各个微小的时间段内交替着为各个进程服务
如果失去了并发性,则一个时间段内系统中只运行一道程序,那么就失去了实现虚拟性的意义了。因此,没有并发性,就谈不上虚拟性。
异步
异步是指在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
由于并发运行的程序会争抢着使用系统资源,而系统中的资源有限,因此进程的执行不是一贯到底的,而是走走停停的,以不可预知的速度向前推进。
如果失去了并发性,即系统只能串行地运行各个程序,那么每个程序的执行会一贯到底。只有系统拥有并发性,才有可能导致异步性。
小结
操作系统的发展与分类⭐⭐
操作系统的运行机制⭐⭐
CPU 中有一个程序状态字寄存器 (PSW),其中有个二进制位,可以表示当前 CPU 运行的状态是内核态还是用户态。
中断和异常⭐⭐
CPU 上会运行两种程序,一种是操作系统内核程序,一种是应用程序。
在合适的情况下,操作系统内核会把 CPU 的使用权主动让给应用程序。
中断会使 CPU 由用户态变为内核态,使操作系统重新夺回对 CPU 的控制权。
内中断 (异常)
内中断也称异常。异常与当前执行的指令有关,中断信号来自 CPU 内部。
例如:应用程序执行陷入指令,会主动将 CPU 控制权还给操作系统内核。 “系统调用” 就是通过陷入指令完成。
此外,异常还包括缺页故障、整数除 0、非法使用特权指令等
外中断 (中断)
外中断也称中断。中断与当前执行的指令无关,中断信号来自 CPU 外部。
例如:
- 时钟中断——由时钟部件发来的中断信号
- I/O 中断——由输入 / 输出设备发来的中断信号
每一条指令执行结束时,CPU 都会例行检查是否有外中断信号。
CPU 的中断机制实现原理,可见计算机组成原理
小结
系统调用⭐
操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单易用的服务。主要包括命令接口和程序接口。其中,程序接口由一组系统调用组成。应用程序可以通过系统调用来请求获得操作系统内核的服务
编程语言可将系统调用封装成库函数。
凡是与共享资源有关的操作 (如存储分配、I/O 操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。
比如:两个进程同时通过系统调用,向操作系统内核发出请求使用打印机这种共享资源,操作系统内核会协调两个进程使用打印机,防止混乱发生。
操作系统的体系结构
非内核与内核
大内核与微内核⭐
微内核只包括时钟管理、中断处理、原语 (设备驱动、CPU 切换) 等与硬件联系紧密的功能。
大内核除了拥有微内核提供的功能外,还包括进程 / 存储器 / 设备管理等功能,这些功能更多的是对数据结构的操作,不会直接涉及硬件。