计算机系统的层次结构
- 用户
- 应用程序(软件)
- 操作系统
- 裸机(纯硬件)
操作系统
- 负责管理协调硬件、软件等计算机资源的工作
- 为上层的应用程序、用户提供简单易用的服务
- 操作系统是系统软件,而不是硬件
操作系统(Operating System,OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配(从中间往两边看),以提供给用户和其他软件方便的接口和环境(从下往上看),它是计算机系统中最基本的系统软件(从上往下看)。
- 操作系统作为系统资源的管理者(包括软件、硬件、文件等),需要提供什么功能?
- 操作系统作为用户与计算机硬件之间的接口,要为上层的用户、应用程序提供简单易用的服务,需要实现什么功能?
- 操作系统作为最接近硬件的层次,需要在纯硬件的基础上实现什么功能?
- 提供的功能
- 处理机管理
- 存储器管理
- 文件管理
- 设备管理
- 目标
- 安全、高效
- 提供的功能
- 命令接口
- 联机命令接口(交互式命令接口)
- 脱机命令接口(批处理命令接口)
- 程序接口(系统调用 = 系统调用命令 = 广义指令)
- GUI(图形用户界面)
- 命令接口
- 目标
- 方便用户使用
- 需要提供的功能和目标
- 实现对硬件机器的拓展
没有任何软件支持的计算机成为裸机。在裸机上安装的操作系统,可以提供资源管理功能和方便用户的服务功能,将裸机改造成功能更强、使用更方便的机器。
通常把覆盖了软件的机器成为扩充机器,又称之为虚拟机。
- 并发
- 区别:并发与并行。
- 共享
- 互斥共享方式(摄像头资源)
- 同时访问方式(硬盘资源)
- 虚拟
- 没有并发性,就谈不上虚拟性
- 空分复用技术(虚拟存储器)
- 时分复用技术(虚拟处理器)
- 异步
- 只有系统拥有并发性,才有可能导致异步性
并发性指计算机系统中同时存在着多个运行着的程序。共享性是指系统中的资源可供内存中多个并发执行的进程共同使用。
使用 QQ 发送文件 A,同时使用微信发送文件 B。
- 两个进程正在并发执行(并发性)
- 需要共享地访问硬盘资源(共享性)
如果失去并发性,则系统中只有程序正在运行,则共享性失去存在的意义。
如果失去共享性,则 QQ 和微信不能同时访问硬盘资源,就无法实现同时发送文件,也就无法并发。
并发和共享是两个最基本的特征,两者互为存在条件。
没有并发和共享,就谈不上虚拟和异步。
- 手工操作阶段
- 批处理阶段
- 单道批处理系统(引入脱机输入输出技术)
- 优:缓慢人机速度矛盾
- 缺:资源利用率依然很低
- 多道批处理系统(操作系统开始出现)
- 优:多道程序并发执行,资源利用率高
- 缺:不提供人机交互功能
- 单道批处理系统(引入脱机输入输出技术)
- 分时操作系统
- 优:提供人机交互功能
- 缺:不能优先处理紧急任务
- 实时操作系统
- 硬实时系统(导弹控制系统、自动驾驶系统)
- 软实时系统(12306 火车订票系统)
- 优:能优先处理紧急任务
- 网络操作系统
- 分布式操作系统
- 个人计算机操作系统
各个阶段的优缺点。
主要优点:
- 多道程序并发执行,共享计算机资源。
- 资源利用率大幅提升,CPU 和其他资源保持“忙碌”状态,系统吞吐量增大。
主要缺点:
- 用户响应时间长
- 没有人机交互功能(用户提交自己的作业之后就只能等待计算机处理完成中间不能控制自己的作业执行)
计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。
主要优点:
- 用户请求可以被即时响应,解决了人机交互问题。
- 允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
主要缺点:
- 不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性。
主要优点:
- 能够优先响应一些紧急仼务,某些紧急任务不需时间片排队。
在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件。实时操作系统的主要特点是及时性和可靠性。
- 两种指令(区别:指令与代码)
- 特权指令(内存清零等)
- 特权指令只能在核心态下执行
- 非特权指令
- 特权指令(内存清零等)
- 两种处理机状态(用程序状态字寄存器,PSW 中的某个标志位来区别,0 为用户态,1 为核心态)
- 核心态(管态)
- 用户态(目态)
- 两种程序
- 内核程序
- 内核程序只能在核心态下执行
- 应用程序
- 内核程序
- 时钟管理
- 中断管理
- 原语
- 是一种特殊的程序
- 处于操作系统最底层,是最接近硬件的部分
- 这种程序的运行具有原子性
- 运行时间较短、调用频繁
- 设备驱动、CPU 切换等
- 对系统资源进行管理的功能
- 进程管理
- 存储器管理
- 设备管理
- 大内核
- 将操作系统的主要功能模块都作为系统內核,运行在核心态
- 优:高性能
- 缺:内核代码庞大,结构混乱,难以维护
- 微内核
- 只把最基本的功能保留在内核
- 优:内核功能少,结构清晰,方便维护
- 缺:需要频繁地在核心态和用户态之间切换,性能低
本质:发生中断就意味着需要操作系统介入,开展管理工作
- 当中断发生时,CPU 立即进入核心态
- 当中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进行处理
- 对于不同的中断信号,会进行不同的处理
发生了中断,就意味着需要操作系统介入,开展管理工作。由于操作系统的管理工作(比如进程切换、分配 I/O 设备等)需要使用特权指令,因此 CPU 要从用户态转为核心态。中断可以使 CPU 从用户态切换为核心态,使操作系统获得计算机的控制权。有了中断,才能实现多道程序并发执行。
- “用户态->核心态”是通过中断实现的。并且中断是唯一途径
- “核心态->用户态”的切换是通过执行一个特权指令,将程序状态字(PSW)的标志位设置为“用户态”
信号的来源 | 与当前执行的指令 | |
---|---|---|
内中断 | CPU 内部 | 有关 |
外中断 | CPU 外部 | 无关 |
- 内中断(内部异常、例外、陷入)
- 自愿中断
- 指令中断(系统调用时的 访管指令 / 陷入指令 / trap 指令)
- 强迫中断
- 硬件中断(故障、fault 指令,内存缺页)
- 软件中断(终止、abort 指令,整数除 0)
- 自愿中断
- 外中断(狭义的中断、强迫中断)
- 外设请求(I/O 操作完成发出的中断信号)
- 人的干预(用户强行终止一个进程)
- Step1:执行完每个指令之后,CPU 都要检查当前是否有外部中断信号
- Step2:如果检测到外部中断信号,则需要保护被中断进程的 CPU 环境(如程序状态字 PSW、程序计数器 PC、各种通用寄存器)
- Step3:根据中断信号类型转入相应的中断处理程序
- Steρ4:恢复原进程的 CPU 环境并退出中断,返回原进程继续往下执行
- 什么是系统调用,有何作用?
- 操作系统提供给应用程序使用的接口
- 应用程序通过系统调用来请求获得操作系统的服务
- 系统调用会使处理器从用户态进入核心态
- 分类
- 设备管理。完成设备的请求或释放,以及设备启动等功能
- 文件管理。完成文件的读、写、创建及删除等功能
- 进程控制。完成进程的创建、撤销、阻塞及唤醒等功能
- 进程通信。完成进程之间的消息传递或信号传递等功能
- 内存分配。完成内存的分配、回收以及获取作业占用内存区大小及始址等功能
- 系统调用和库函数的区别
- 系统调用是操作系统向上层提供的接口
- 有的库函数是对系统调用的进一步封装
- 当今编写的应用程序大多是通过高级语言提供的库函数,间接地进行系统调用
- 系统调用背后的过程
- 传递系统调用参数
- 执行陷入指令(用户态)
- 执行系统调用响应服务程序(核心态)
- 返回用户程序
int 指令的参数 x 指明了系统调用号。此处的 int 不是整数的意思,其实是 interrupt 的缩写。
- 陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,从而 CPU 进入核心态。
- 发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行。
- 陷入指令是唯一一个只能在用户态执行,而不可在核心态执行的指令。
凡是与资源有关的操作、会直接影响到其他进程的操作,定需要操作系统介入,即需要通过系统调用来实现。
系统调用发生在用户态,对系统调用的处理发生在核心态。执行陷入指令会产生内中断,使处理器从用户态进入核心态。