文章目录
- 一、操作系统的运行机制
- 1. 时钟管理
- 2. 中断机制
- 3. 原语
- 4. 系统数据结构
- 5. 系统调用
- 二、操作系统体系结构
- 1. 传统的操作系统结构(大内核)
- 第一代:无结构OS
- 第二代:模块化结构OS:模块-接口法OS
- 第三代:分层式结构OS
- 2. 微内核OS结构
一、操作系统的运行机制
几个基本概念
- 内核程序 < = = = > 应用程序
- 核心态 < = = = > 用户态
- 特权指令 < = = = > 非特权指令
1. 时钟管理
通过硬件提供
- 计时:提供系统时间
- 时钟中断:比如进程切换
2. 中断机制
- 提高多道程序环境下CPU利用率
- 例如发生I/O阻塞时,CPU不再继续等待I/O,挂起当前任务先去执行其他任务
- 外中断:中断信号来源于->外部设备
- 例如来自于I/O设备
- 内中断:中断信号来源于->当前指令
- 正在运行的的程序引发指令或者发生了一些问题导致中断(也叫:异常/陷入/例外)
- 陷阱/陷入(Trap):由应用程序主动引发(不是产生)
- 故障(Fault):由错误条件引发
- 终止(Abort):由致命错误引发
- 正在运行的的程序引发指令或者发生了一些问题导致中断(也叫:异常/陷入/例外)
中断处理过程
无论是内中断还是外中断都有对应的中断处理程序
大致分为三个步骤
- 保存现场
- 执行中断程序
- 恢复现场继续执行后面的指令
3. 原语
原语运行在内核空间
- 由若干条指令组成(程序段)
- 用来完成某个特定功能
- 执行过程不会被中断(原子性)
- 通过关中断、开中断实现
原语是对一组操作的封装,并且这一组操作运行时间较短,不能被中断
4. 系统数据结构
一般只涉及到对数据结构的操作,不涉及硬件
- 进程管理:作业控制块、进程控制块
- 存储器管理:存储器分配与回收
- 设备管理:缓冲区、设备控制块
5. 系统调用
- 有操作系统实现,给应用程序调用
- 是一套接口的集合
- 应用程序访问内核服务的方式
操作系统底层实现了一套接口,提供给应用程序调用,系统调用的处理运行在核心态,通过陷入指令(在用户态执行)的方式实现系统调用
二、操作系统体系结构
1. 传统的操作系统结构(大内核)
第一代:无结构OS
- 一系列过程(程序)的集合,过程间可以互相调用
- 结构复杂且混乱,难以调试、阅读和维护
第二代:模块化结构OS:模块-接口法OS
- 给予“分解”和“模块化”原则
- 按照功能划分模块/子模块,规定模块间的接口
- 模块独立性标准:高内聚、低耦合
- 优点:
- 提高OS设计的正确性、可理解性和可维护性
- 增强OS的适应性
- 加速开发过程
- 缺点
- 模块接口设计难以扩展后续需求
- 模块设计没有同一决策标准,导致模块接口设计不可靠
第三代:分层式结构OS
- 有序分层法,自顶向下依次依赖
- 设计时,自底向上:每一步建立在可靠的基础上
- 优缺点:
- 容易保证系统正确性
- 容易扩充和维护
- 自上而下的层次通信,导致系统效率降低
2. 微内核OS结构
微内核的基本概念
足够小的内核,只实现OS核心功能
- 与硬件处理紧密相关的部分,比如硬件处理、客户与服务器通信和其它基本功能
- 一些较基本的功能
- 客户和服务器之间通信 (客户/服务器模式)
应用采用“机制与策略分离”原理
采用面向对象技术
微内核的优缺点
- 微内核OS的优点
- 提高OS的可扩展性、可靠性、可移植性
- 支持分布式系统
- 融入了面向对象技术
- 微内核OS的缺点
- 相较早期OS,降低了一定的效率(用户态、内核态切换次数较 大内核OS 更多)