概述
目录
概念
用户空间与内核空间
用户空间与内核空间
- 什么是内核空间与用户空间
- 在操作系统分为用户空间和内核空间用户空间里运行着应用程序
- 用户程序不能直接操作内核
- 内核空间独立于普通的应用程序 可以访问受保存的内存空间,也可以访问底层硬件设备
- 为什么要区分内核空间和用户控件
- 很简单 为了安全 因为用户程序可能会有很多隐患 比如清空内存 清空寄存器
- 操作系统也分了特权指令和非特权指令,对于非常危险的指令 只允许操作系统及其相关的模块使用 也就是特权指令
- 用户程序的指令 就是非特权指令 这里要注意 中断指令也是非特权指令
- intel的cpu分为4个特权等级 Ring0~Ring3 如果等级是Ring3则说明进程是运行在用户态 Ring0则说明是进程运行在内核态
时钟管理
时钟管理
- 什么是时钟管理
- 在操作系统里面有个非常重要的就是时钟 他还是一个硬件
- 作用
- 记录着系统时间
- 时钟中断 (用来进行 进程 or 线程 切换)
中断机制
中断机制
- 什么是中断
- 中断 是为了解决外部设备完成某些工作后通知CPU的一种机制(譬如硬盘完成读写操作后通过中断告知CPU已经完成)
- 中断的分类
- 中断可以分为同步中断和异步中断
- 同步中断是当指令执行时由 CPU 控制单元产生,之所以称为同步,是因为只有在一条指令执行完毕后 CPU 才会发出中断,而不是发生在代码指令执行期间 — 比如系统调用
- 异步中断是指由其他硬件设备依照 CPU 时钟信号随机产生,即意味着中断能够在指令之间发生 — 例如键盘中断
- 根据 Intel 官方资料,同步中断称为异常(exception),异步中断被称为中断(interrupt)。中断可分为 可屏蔽中断(Maskable interrupt)和 非屏蔽中断(Nomaskable interrupt)。异常可分为 故障(fault)、陷阱(trap)、终止(abort)三类 从广义上讲,中断可分为四类:中断、故障、陷阱、终止
- 中断分类图示
中断的处理过程
- 关中断
- 进入不可再次响应中断的状态,由硬件实现
- 保存断点
- 为了在[中断处理]结束后能正确返回到中断点。由硬件实现
- 引出中断服务程序
- 将[中断服务程序]入口地址送PC,转向[中断服务程序]。可由硬件实现,也可由软件实现
- 保存现场和屏蔽字
- 保护现场、置屏蔽字、开中断,即保护CPU中某些寄存器的内容、设置[中断处理]次序、允 许更高级的中断请求得到响应,实现中断嵌套由软件实现
- 开中断
- 看 - 4
- 执行中断服务程序
- 实际上有效的中断处理工作是在此程序段中实现的。由软件程序实现
- 退出中断
- 在退出时,又应进入不可中断状态,即关中断、恢复屏蔽字、恢复现场、开中断、中断返回。由软件实现
- 流程图示
系统调用
执行一个系统调用时,OS 发生的过程
- 执行用户程序(如:fork)
- 根据glibc中的函数实现,取得系统调用号并执行int $0x80产生中断
- 进行地址空间的转换和堆栈的切换,执行SAVE_ALL。(进行内核模式)
- 进行中断处理,根据系统调用表调用内核函数
- 执行内核函数
- 执行 RESTORE_ALL 并返回用户模式
系统调用跟函数调用的区别

原语
原语
- 什么是原语
- 有若干条指令组成,是一个程序段, 用来完成某个特定功能 执行过程不会被中断具有原子性的叫做原语
- 原语运行在内核空间

