计算机系统概述
基本概念
操作系统OS是指
1、控制和管理整个计算机系统的硬件与软件资源,合理的组织、调度计算机的工作与资源的分配
2、为用户提供方便的接口和环境的程序的集合。
同时它也是计算机系统中最基本的软件系统。
特征
并发
并发是指两个或多个事件在同一时间间隔内发生。
- 宏观上同时发生
- 微观上交替发生
应当注意的是cpu在同一时刻只能处理一个程序。
这一特性是通过分时实现的。
共享
共享是指系统中的资源可供内存中多个并发执行的进程使用。
1、互斥共享方式
系统中的一些资源,虽然可供多个进程使用,但它们在一段时间内只允许一个进程访问该资源。这类资源被称为临界资源。
2、同时访问方式
系统中的另一类资源允许在一段时间内由多个进程“同时”访问,但这里的“同时”是发生在宏观上的,微观上依旧是只有一个进程访问。
同时访问共享通常要求一个请求分几个时间片段间隔的完成,其效果与连续完成的效果相同。
并发与共享的关系
并发与共享是操作系统两个最基本的特征。两者之间互为存在的条件:
- 资源的共享是以程序的并发为条件的。没有程序的并发执行,自然不存在资源共享的问题。
- 系统无法对资源共享实施有效的管理,必然会影响到程序的并发执行,甚至根本无法并发执行。
虚拟
虚拟是指把一个物理上的实体变为若干逻辑上的对应物。
利用时分复用技术和多道程序设计技术可以把一个物理上的CPU虚拟为多个逻辑上的CPU,即虚拟处理器。
利用空分复用技术可以在逻辑上扩充存储器的容量,即虚拟存储器。
虚拟这一特性是建立在并发和共享的基础上的。
异步
多道程序环境允许多个程序并发执行,但由于资源有限,进程的执行并非一贯到底,而是走走停停的,其以不可预知的速度向前推进,这就是进程的异步性。
异步性的产生也是由于异步和共享。
目标与功能
操作系统,上接用户和运行程序,下接基本硬件。因此,操作系统要
- 作为硬件和用户之间的接口;
- 要扩充硬件的功能。
为了实现这些功能,操作系统应当对计算机资源有着有效的管理。
计算机系统资源的管理者
1、处理机CPU管理
2、存储器管理
3、文件管理
4、设备管理
用户与计算机硬件系统之间的接口
1、命令接口
- 联机命令接口(交互式命令接口):
交互性高,输入一条命令,执行一条。 - 脱机命令接口(批处理命令接口):
输入一组作业控制命令,执行一组命令。用户不可以直接干预作业的进行。
2、程序接口
由一组**系统调用(广义指令)**组成。
图形用户界面GUI,即图形接口,最终还是通过调用程序接口实现的。
其不是操作系统的一部分,但其所调用的系统调用命令是操作系统的一部分。
用作扩充机器
操作系统将裸机改造成功能更强、使用更加方便的机器,覆盖完软件的机器被称为扩充机器或虚拟机。
OS的发展与分类
手工操作阶段
- 用户独占全机,资源利用率低
- CPU等待手工操作,CPU利用率低。
要解决人机速度矛盾。
批处理阶段
单道批处理系统
解决
- 人机速度矛盾
- CPU与I/O设备速率不匹配
1、自动性
2、顺序性
3、单道性
出现监督程序,OS雏形。
多道批出理系统
多道,宏观上并行,微观上串行。
优点:
- 资源利用率高
- 系统吞吐量大
缺点:
- 用户响应时间较长
- 不提供人机交互能力
分时操作系统
把处理器的运行时间分成很短的时间片,再按时间片轮流把处理器分配给各个联机作业使用。
1、同时性
2、交互性
3、独立性
4、及时性
缺点:一些特殊的场合,要求系统对外界信号在规定时间内及时处理
实时操作系统
- 硬实时系统
- 软实时系统
运行环境
OS运行机制
两种指令:
- 特权指令:如内存清零指令
- 非特权指令:如普通的运算指令
两中处理器状态:依靠CPU内部的程序状态字寄存器PSW某个标志位,0:用户态;1:核心态。
- 核心态(管态):特权指令,非特权指令均可,trap指令除外。
- 用户态(目态):只有非特权指令
两种程序:
- 操作系统内核程序
- 用户自编程序(应用程序)
操作系统的各个功能被分别放置在不同的层次:
- 与硬件关联紧密的在最底层,如时钟管理、中断机制、设备驱动(原语)
- 其次是运行频率较高的程序,如进程管理、存储器管理、设备管理
时钟管理
时钟可以计时,这意味着其可以把控进程运行的时间。
故而通过时钟中断都管理,可以实现进程的切换,即分时操作系统中的时间片轮转调度。
中断机制
引入中断机制的初衷是提高多道程序运行环境中CPU的利用率。
发展后成为操作系统各项操作的基础。
现代操作系统是依靠中断驱动的软件。
中断机制中,只有一小部分功能属于内核,它们负责保护和恢复中断现场的信息,转移控制权到相关的处理程序。
原语
原语是有着以下3个特点的共用小程序
- 处于操作系统底层,是最接近硬件的部分
- 运行具有原子性,即操作只能一气呵成
- 运行时间较短,且运行频繁
定义原语的直接方法是关闭中断,让其所有动作不可分割的完成后再打开中断。
系统控制的数据结构及处理
- 进程管理
- 存储器管理
- 设备管理
中断与异常的概念
中断是处理器从用户态进入核心态的唯一途径。
1、发生中断或异常后,运行在用户态的CPU会立即进入核心态,这一过程由硬件完成
2、中断发生后,当前运行的程序暂停运行,并由操作系统内核对中断进行处理
3、不同的中断信号,进行不同的处理
中断与异常的定义
中断是个广义的概念,它有两种分类:
- 异常(内中断)
1、abort:程序中的非法操作码、地址越界、算术溢出
2、fault:虚存系统的缺页
3、trap:陷入指令
可归结为与当前执行指令有关 - 中断(外中断)
可归结为与当前执行指令无关
中断处理的过程
1、关中断:保护程序的现场状态
2、保存断点:保存原程序的程序计数器PC
3、引出中断服务程序:取出中断服务·程序的入口地址到PC
这三步均由硬件完成
4、保存现场和屏蔽字:现场信息一般指程序状态字寄存器和某些通用寄存器中的内容,这些是由操作系统保存的
5、开中断
6、执行中断服务程序
7、关中断
8、恢复现场和屏蔽字
9、开中断、中断返回:中断服务程序的最后一条指令通常是中断返回程序,即回到原程序的断点处,以便继续执行原程序。
系统调用(广义指令)
我们已经知道了,OS作为用户、程序二者与硬件之间的接口,需要提供一些便利的服务。
用户接口中的程序接口便是一组系统调用。
系统调用大致可以分为以下几个大类:
- 设备管理
- 文件管理
- 进程管理
- 进程通信
- 内存管理
显然,这些类别都涉及了资源的管理,故而系统调用需要特权指令才能完成,进行系统调用时操作系统内核程序应当运行在核心态。
用户程序可以通过trap指令发起系统调用,请求操作系统提供服务。
明显的,trap指令是唯一一个只能在用户态而不能在核心态执行的指令。
系统调用可以被视为“特殊”的函数,它与高级语言中的库函数是有区别的。
- 一部分库函数的实现是依靠系统调用的
由用户态进入核心态,不仅状态需要切换,所用的堆栈也可能由用户堆栈切换为系统堆栈,但这个系统堆栈也是属于该进程的。
OS的体系结构
大内核与微内核
1、大内核
由时钟管理、中断机制、原语、系统控制的数据结构及处理组成。
优点:高性能
缺点:内核代码混乱,难以维护
2、微内核
由时钟管理、中断机制、原语组成
优点:分离内核与服务、服务与服务,保证操作系统的可靠性。
缺点:需要频繁的在用户态与核心态之间转换。