| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 中断处理 - 操作系统 -> 正文阅读 |
|
[系统运维]中断处理 - 操作系统 |
3、中断处理:中断处理程序是被内核调用来响应中断的,它运行在中断上下文。 ? ? ? ? ? ? ? ? ? ? ? ?补充: ?? 对Linux内核中进程上下文和中断上下文的理解 ? ? ? ? ? 内核空间和用户空间是操作系统理论的基础之一,即内核功能模块运行在内核空间,而应用程序运行 在用户空间。现代的CPU都具有不同的操作模式,代表不同的级别,不同的级别具有不同的功能,在较低 的级别中将禁止某些操作。Linux系统设计时利用了这种硬件特性,使用了两个级别,最高级别和最低级 别,内核运行在最高级别(内核态),这个级别可以进行所有操作,而应用程序运行在较低级别(用户态), 在这个级别,处理器控制着对硬件的直接访问以及对内存的非授权访问。内核态和用户态有自己的内存映 射,即自己的地址空间。 正是有了不同运行状态的划分,才有了上下文的概念。用户空间的应用程序,如果想要请求系统服务, 比如操作一个物理设备,或者映射一段设备空间的地址到用户空间,就必须通过系统调用来(操作系统提 供给用户空间的接口函数)实现。如下图所示: ? ? ? ? ?? ? ? ? ? ? ?通过系统调用,用户空间的应用程序就会进入内核空间,由内核代表该进程运行于内核空间,这就涉 及到上下文的切换,用户空间和内核空间具有不同的地址映射,通用或专用的寄存器组,而用户空间的进 程要传递很多变量、参数给内核,内核也要保存用户进程的一些寄存器、变量等,以便系统调用结束后回 到用户空间继续执行,所谓的进程上下文,就是一个进程在执行的时候,CPU的所有寄存器中的值、进程 的状态以及堆栈中的内容,当内核需要切换到另一个进程时,它需要保存当前进程的所有状态,即保存当 前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行。 ? ? ? ? ? 同理,硬件通过触发信号,导致内核调用中断处理程序,进入内核空间。这个过程中,硬件的一些变 量和参数也要传递给内核,内核通过这些参数进行中断处理,中断上下文就可以理解为硬件传递过来的这 些参数和内核需要保存的一些环境,主要是被中断的进程的环境。? ?Linux内核工作在进程上下文或者中断上下文。 ? ? ? ? ? ? ?提供系统调用服务的内核代码代表发起系统调用的应 用程序运行在进程上下文;另一方面,中断处理程序,异步运行在中断上下文。中断上下文和特定进程无 关。 ? ? ? ? ? ? 运行在进程上下文的内核代码是可以被抢占的(Linux2.6支持抢占)。但是一个中断上下文,通常都 会始终占有CPU(当然中断可以嵌套,但我们一般不这样做),不可以被打断。正因为如此,运行在中断 上下文的代码就要受一些限制,不能做下面的事情: ? 1)、睡眠或者放弃CPU。 ? 这样做的后果是灾难性的,因为内核在进入中断之前会关闭进程调度,一旦睡眠或者放弃CPU,这时 内核无法调度别的进程来执行,系统就会死掉 ? 2)、尝试获得信号量 ? 如果获得不到信号量,代码就会睡眠,会产生和上面相同的情况 ? 3)、执行耗时的任务 ? 中断处理应该尽可能快,因为内核要响应大量服务和请求,中断上下文占用CPU时间太长会严重影响 系统功能。 ? 4)、访问用户空间的虚拟地址 ? 因为中断上下文是和特定进程无关的,它是内核代表硬件运行在内核空间,所以在终端上下文无法访 问用户空间的虚拟地址? 小结:进程上下文就是应用程序那边向内核发来的中断信号;而中断上下文就是硬件向内核发来的终端信号,前者可以被抢占,后者一般不能够被抢占。 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 0:47:32- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |