
文章目录一、系统中断概念二、硬中断和软中断三、用户态和内核态用户态切换到内核态的3种切换方式四、系统中断,内核做了哪些事?五、硬件中断触发的过程(8259A芯片中断控制器的工作流程)1.中断控制器2. 中断控制器工作流程一、系统中断概念
早期计算机各个程序只能串行执行、系统资源利用等 。为了解决上述问题,人们就发明了操作系统,引入了中断机制,实现了多道程序的并发执行,提高了系统资源的利用率 。中断是多程序并发执行的前提条件 。
举个例子:
你在家打了一天的游戏或者看了一天的电影,突然你饿了,你就点了个外卖,然后接着打游戏,等着外卖 。外卖小哥突然敲门,这时候你第一步要执行的动作肯定是暂停游戏,而外卖小哥敲门的行为其实就是申请中断请求 。此时中断处理程序就会来处理两件事,一件事就是执行挂起游戏这个进程,接着将吃东西这个进程唤醒 。当中断处理程序执行结束,就会将执行挂起的打游戏进程恢复 。
二、硬中断和软中断
操作系统的中断存在硬中断和软中断
硬中断由与系统相连的外设(例如网卡、硬盘)自动产生的 。主要是用来通知操作系统外设状态的变化 。比如当网卡收到数据包的时候,就会发出一个中断 。软中断为了满足实时系统的要求,中断处理应该是越快越好 。linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成 。硬中断和软中断的区别软中断是执行中断指令产生的,而硬中断是由外设引发的 。硬中断的中断号是由中断控制器提供的,软中断的中断号由指令直接指出,无需使用中断控制器 。硬中断是可屏蔽的,软中断不可屏蔽 。硬中断处理程序要确保它能快速地完成任务,这样程序执行时才不会等待较长时间,称为上半部 。软中断处理硬中断未完成的工作,是一种推后执行的机制,属于下半部 。三、用户态和内核态
当一个进程执行系统调用而需要内核代码去执行,就称为内核态 。此时处理器就处于特权级最高的(0级)内核代码中执行 。当进程处于内核态时,执行的内核代码会使用当前进程的内核态 。当进程执行用户自己的代码时,则称其处于用户态 。
内核态和用户态是操作系统的两种运行级别,这个和CPU没有必然的联系 。CPU提供了Ring0-Ring3四种级别的运行模式,Ring0级别最高,Ring3级别最低 。Linux将Ring3级别作为用户态,Ring0级别作为内核态,没有使用Ring1和Ring2 。Ring3状态不能访问Ring0的地址空间 。Linux进程的4GB地址空间,3G-4G部分大家是共享的,是内核态的地址空间,这里存放的是内核的代码、数据和所有内核模块 。用户运行一个程序,该程序所创建的进程开始是运行在用户态的,如果要执行文件读写,网络数据发送等操作,必须通过write,send等系统调用,这些系统调用会调用内核中的代码来完成操作;这时,就会切换到Ring0,然后进入3GB-4GB中的内核地址空间去执行这些代码完成操作,完成后,切换回Ring3,回到用户态 。
用户态切换到内核态的3种切换方式系统调用:当用户进程通过系统调用申请使用操作系统提供的服务来完成工作时,就要切换到内核态来处理 。异常:当CPU在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序,也就转到了内核态 。外围设备的中断:当外围设备完成用户请求操作,会向CPU发起相应中断信号,这时CPU会暂停当前执行的指令,转而执行该中断信号对应的处理程序,如果先前执行的指令是用户态的程序,那么这个转换的过程自然也就发生了由用户态到内核态的转换 。四、系统中断,内核做了哪些事?
推荐阅读
- 电脑发烫怎么降温
- 常见的天气系统
- 系统重装步骤
- 怎么安装win7系统
- 海马防盗系统锁死不打火怎么解除
- 操作系统有哪些
- 电脑开机后进不了系统黑屏
- 电脑温七系统怎么删除软件 电脑温七系统怎么重装
- 英特尔cpu怎么安装 cpu怎么安装
- win10系统怎么装wps
