【操作系统】运行机制,内核和中断机制
操作系统的运行机制和体系结构
运行机制
两种指令
特权指令
- 内存清零指令
非特权指令
- 运算指令
cpu在设计和生产的时候就划分了特权指令和非特权指令,在执行一条指令之前就能判断出类型
两种处理机状态
内核态(核心态,管态)
- 正在运行的是内核程序,可以执行特权指令,也可以执行非特权指令
用户态(目态)
- 正在运行的是应用程序,只能执行非特权指令
如何变态?
内核态->用户态
- 执行一条特权指令,修改PSW的标志位为用户态
用户态->内核态
- 由中断引发,硬件自动完成变态过程
PSW中有一个二进制位会标记这两个状态
两种程序
- 内核程序
- 应用程序
操作系统内核
内核
- 计算机上配置的底层软件,是操作系统最基本,最核心的部分
组成
时钟管理
中断处理
原语
- 一种特殊的程序,执行具有原子性
对系统资源进行管理
- 进程管理
- 存储器管理
- 设备管理
操作系统体系结构
大内核
- 优点:高性能
- 缺点:内核代码庞大,结构混乱,难以维护
微内核
- 优点:内核功能少,结构清晰,方便维护
- 缺点:需要频繁地核心态和用户态之间切换,性能低(变态是有成本的)
中断和异常
中断的作用
- 让操作系统强行夺回CPU的控制权
- 使CPU从用户态变为核心态
- 没有中断机制,就不可能实现操作系统,不可能实现程序并发
中断的分类
内中断/异常/例外
陷阱,陷入trap,访管指令
- 应用程序故意引发的,用户主动把CPU还给内核,例如:系统调用
故障fault
- 如缺页故障,有错误条件引起,可能被修复
终止 abort
- 由致命错误引起,无法修复
中断源来源于cpu内部
外中断/中断
- 时钟中断(为了并发)
- io中断请求
中断机制的基本实现原理
检查中断信号
- 内中断:cpu在执行指令的时候会检查是否有异常发生
- 外中断:每个指令周期末尾,cpu会检查是否有中断需要处理
找到相应的中断处理程序
- 通过中断向量表实现
系统调用
什么是系统调用?
- 操作系统对程序员提供的接口
- 应用程序通过系统调用请求内核服务
操作系统与库函数的区别
- 有的库函数是对系统调用的进一步封装
- 有的库函数不涉及系统调用,有的涉及
- 库函数是编程语言提供给程序员的接口
- 系统调用是操作系统提供给程序员的接口
什么功能需要用系统调用实现?
- 设备管理
- 文件管理
- 进程管理
- 内存管理
系统调用的过程
-
- 传参
- 陷入指令/trap/访管指令
- 由操作系统的内核程序处理系统调用请求
- 返回应用程序
广义指令=系统调用指令,在用户态下调用,在核心态下执行
陷入指令=trap指令=访管指令,在用户态下调用,在核心态下执行
用户态发出系统调用请求,核心态处理请求