1.操作系统概述
1.1 操作系统的概念
操作系统
:控制和管理整个计算机系统的硬件和软件资源,并合理的组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,是计算机中最基本的系统软件。
从整体看,操作系统处于硬件与软件之间,是用户与硬件之间的接口,负责管理协调硬件、软件等计算机资源的
从下往上看,操作系统是为上层的应用软件、用户提供简单易用的服务
从上往下看,操作系统最接近硬件,它是系统软件,而不是硬件,用于拓展功能
举个例子:
1.2 操作系统的功能和目标
1.2.1 管理系统资源方面
功能
:
- 处理机管理(CPU管理)
- 存储器管理
- 文件管理
- 设备管理
目标
:安全、高效
1.2.2 作为用户和硬件之间的接口
功能
:
- 命令接口
- 联机命令接口——逐条处理
- 脱机命令接口——批处理
- 程序接口——用户通过程序间接使用,由一组系统调用组成,在程序中调用*.dll(调用过程即为系统调用)
- GUI——直接在图形界面进行操作,不需要记忆复杂的命令以及参数
目标
:方便用户使用
联机命令接口示例:
脱机命令接口示例:批处理文件(*.bat)
1.2.3 作为最接近硬件的层次
功能
:实现对硬件机器的拓展
封装
1.3 操作系统的特征
1.3.1 并发
并发:两个事件或多个事件在同一时间间隔内发生。这些事件宏观上同时发生,微观上交替发生。
并行:两个或多个事件在同一时刻发生,宏观与微观都是同时发生。
操作系统的并发性指计算机系统中同时存在多个运行的程序。
1.3.2 共享
共享:系统中的资源可以让多个并发执行的进程共同使用。
互斥共享方式:一个时间段内只允许一个进程使用资源
同时共享方式:一个时间段允许多个进程“同时(交替)”进行访问
1.3.3 虚拟
虚拟:将一个物理上的实体变为若干个逻辑上的对应物,物理实体是实际存在的,但逻辑对应物则是用户感受到的。
1.3.4 异步
异步:由于资源的限制,进程的执行不具有连续性,而是走走停停,以不可预知的速度执行程序。
1.3.5 四个特征的关联性
- 并发和共享互为存在条件
- 如果失去并发性,则系统中只有一个进程,共享性失去存在的意义
- 如果失去共享性,则多个进程不能同时访问资源,并发也就没有意义
- 并发和共享为虚拟和异步的基本条件
1.4 操作系统发展
1.4.1 手工操作阶段
缺点:用户独占全机、人机速度矛盾,资源利用率极低
1.4.2. 批处理阶段
单道批处理系统
引入脱机输入/输出技术,并监督程序负责控制作业的输入输出
优点:缓解了一定程度的速度矛盾,资源利用率有所提升
缺点:资源利用率仍然很低
多道批处理系统
优点:多道程序并发执行,资源利用率大幅度提升
缺点:缺乏人机交互功能,不能控制自己的作业执行
两种批处理系统对比
1.4.3 分时操作系统
给每一个用户分配时间用于处理任务,各个用户可以通过终端与计算机进行交互
优点:解决了人机交互问题,可以即使响应一些用户请求。
缺点:不能优先处理一些紧急任务。
1.4.4 实时操作系统
优点:能够优先响应一些紧急任务。
硬实时系统:必须在严格的规定时间内完成处理
软实时系统:能够接受偶尔违反规定
1.4.5 其他操作系统
1.5 运行体制和体系结构
1.5.1 运行体制
两种指令
:
- 特权指令——特殊的指令(清零指令)
- 非特权指令——普通的加法指令
两种处理器状态
:
- 核心态——可以执行两种指令
- 用户态——只能执行非特权指令
两种程序
:
- 内核程序——系统的管理者,可以执行两种指令,运行在核心态上
- 用户程序——只能执行非特权指令,运行在用户态上。
1.5.2 系统内核
内核是计算机上配置的底层软件,是操作系统最基本、最核心的部分。
实现操作系统内核功能的程序就是内核程序。
1.5.3 操作系统的体系结构
大内核
:将操作系统的主要功能模块都作为系统内核,运行在核心态
优点:高性能
缺点:内核代码庞大, 结构混乱,难以维护
微内核
:只把最基本的功能保留在内核
优点:内核功能少、结构清晰、方便维护
缺点:需要频繁地在核心态和用户态之间切换,性能低
1.6 中断和异常
1.6.1 中断的诞生
起因
:各程序只能串行执行,系统资源利用率低
本质
:发生中断意味着需要操作系统介入,开展管理工作
1.6.2 中断的概念和作用
- 当中断发生时,CPU立即进入核心态
- 同时,当前运行的进程暂停运行,并由操作系统内核对中断进行处理
- 对于不同的中断信号,会进行不同的处理
中断使得CPU从用户态切换为和形态,让操作系统获得计算机的控制权
1.6.3 中断的分类
1.7 系统调用和库函数
1.7.1 系统调用
保证系统的稳定性和安全性,防止用户进行非法操作
分类:
- 设备管理——完成设备的 请求/释放/启动 等功能
- 文件管理——完成文件的 读/写/创建/删除 等功能
- 进程控制——完成进程的 创建/撤消/阻塞/唤醒 等功能
- 进程通信——完成进程之间的 消息传递/信号传递 等功能
- 内存管理——完成内存的 分配/回收功能
1.7.2 系统调用与库函数区别
- 系统调用时库函数向上层提供的接口
- 有的库函数是对系统调用的进一步封装
- 大部分应用程序都是通过高级语言提供的库函数间接的进行系统调用
1.7.3 系统调用过程
- 传递系统调用参数
- 执行陷入指令(从用户态转到核心态)
- 执行系统调用相应服务程序
- 返回用户程序
系统调用发生在用户态,对系统调用的处理发生在核心态