文章目录
1、操作系统概述
1.1 概念(定义)
- 负责管理协调硬件、软件等计算机资源的工作
- 为上层用户、应用程序提供简单易用的服务
- 是一种系统软件
1.2 功能
- 资源的管理者(处理机管理、存储器管理、文件管理、设备管理)
- 向用户提供服务(命令接口、程序接口、GUI用户图形界面)
- 对硬件机器的扩展
1.3 目标
安全、高效、便于使用、扩展能力
1.4 特征
- 并发性:指两个或多个事件在同一时间间隔内发生
- 共享性(互斥共享、同时共享):指系统中的资源可供内存中多个并发执行的进程共同使用
- 虚拟性(空分复用技术、时分复用技术):指把一个物理上的实体变为若干个逻辑上的对应物
- 异步性:在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是以不可预知的速度向前推进
并发和共享式操作系统的两个最基本的特征,两者互为存在条件。
2、操作系统的发展与分类
2.1 手工操作阶段
无操作系统,纸带打孔时代
CPU速度远大于输入输出,且用户独占全机,导致资源利用率极低.
2.2 单排批处理阶段
由外围机将多个纸带机的输入存储在磁带中,组成工作队列,计算机按照队列执行任务
解决了一定程度的人机速度矛盾,资源利用率有所提升
缺点:内存中只能有一道程序运行,CPU还是有大量的空闲时间
2.3 多道批处理阶段
计算机一次从磁带中读入多道程序,程序会并发的执行,需要中断技术的支持.操作系统正式诞生
优点:并发执行,共享计算机资源,资源利用率大大提升,系统吞吐量大
缺点:用户响应时间长,没有人机交互
2.4 分时操作系统
计算机以时间片为单位轮流为各个用户/作业服务
优点:用户请求可以被即时响应,解决了人机交互问题
缺点:不能优先处理一些紧急任务
2.5 实时操作系统
计算机系统接收到外部信号后即时进行处理,并且要在严格的实现内处理完成.主要特点是及时性和可靠性
优点:能够响应一些紧急任务,这种紧急任务不需要排队
分类:
- 硬实时操作系统:必须在绝对严格的时间内完成处理(导弹控制系统等)
- 软实时操作系统:能够接受偶尔违反时间规定
2.6 其他几种操作系统
网络操作系统:将网络中的各个计算机有机的结合起来,实现网络中各种资源的共享和各台计算机之间的通信
分布式操作系统:分布性和并行性.系统中的各台计算机地位相同,任何工作都可以分布在这些计算机上,由它们并行,协同完成这些任务
3、操作系统的运行机制和体系结构
3.1 运行机制
(1)两种指令
- 特权指令
- 非特权指令
(2)两种处理器状态
-
核心态(管态)
-
用户态(目态)
(3) 两种程序
-
内核程序:运行在核心态,可以执行特权指令和非特权指令
-
应用程序:运行在用户态,只能执行非特权指令
3.2 操作系统内核
内核是计算机上配置的底层软件,是操作系统最基本,最核心的部分,实现操 作系统内核功能的那些程序就是内核程序
内核功能
- 时钟管理:实现计时功能
- 中断处理:负责实现中断机制
- 原语:一种特殊的程序,具有原子性,处于操作系统最底层,是最接近硬件的部分
- 对系统资源进行管理的功能
内核分类
(1)大内核:将操作系统的主要功能模块都作为系统内核,运行在核心态
优点:高性能
缺点:内核代码庞大,结构混乱,难以维护
(2)微内核:只把最基本的功能保留在内核
优点:功能少,结构清晰,方便维护
缺点:需要频繁地在核心态和用户态之间切换,性能低
4、中断
4.1 概念和作用
- 当中断发生后,CPU立即进入核心态
- 当中断发生后,当前运行的进程会被暂停,并由操作系统对终端进行处理
- 对于不同的中断信号,操作系统会进行不同的处理
中断可以使CPU从用户态切换为核心态,使操作系统获得计算机的控制权
中断时CPU从用户态进入核心态的唯一途径
4.2 中断的分类
- 内中断(指令中断、强迫中断):中断信号来自CPU内部
- 外中断(外设请求、人工干预):中断信号来自CPU外部
4.3 外中断的处理过程
- 执行完每个指令之后,CPU都会检查当前是否有外部中断信号
- 如果检测到外部中断信号,则需要保护被中断进程的CPU环境(保存)
- 根据中断信号类型转入响应的中断处理程序
- 恢复原进程的CPU环境并退出中断,返回原进程继续向下执行
5、系统调用
5.1 概念和作用
操作系统提供给应用程序使用的接口
应用程序通过系统调用来请求获得操作系统的服务
系统调用会使处理器从用户态进入核心态
5.2 系统调用与库函数的区别
- 系统调用时操作系统向上层提供的接口
- 有的库函数时对系统调用的进一步封装
- 当今编写的应用程序大多时通过高级语言提供的库函数间接地进行系统调用
5.3 系统调用的过程
- 传递系统调用参数
- 执行陷入指令(内中断)
- 执行系统调用相应服务程序
- 返回用户程序
系统调用发生在用户态,对系统调用的处理发生在核心态。执行陷入指令使CPU从用户态进入核心态