打印
[其他]

进程上下文与中断上下文的理解

[复制链接]
3419|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LEDyyds|  楼主 | 2021-6-15 11:10 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
一.什么是内核态和用户态
内核态:在内核空间执行,通常是驱动程序,中断相关程序,内核调度程序,内存管理及其操作程序。
用户态:用户程序运行空间。

使用特权

评论回复
沙发
LEDyyds|  楼主 | 2021-6-15 11:12 | 只看该作者
二.什么是进程上下文与中断上下文
1.进程上下文:
(1)进程上文:其是指进程由用户态切换到内核态是需要保存用户态时cpu寄存器中的值,进程状态以及堆栈上的内容,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行。
(2)进程下文:其是指切换到内核态后执行的程序,即进程运行在内核空间的部分。
2.中断上下文:
(1)中断上文:硬件通过中断触发信号,导致内核调用中断处理程序,进入内核空间。这个过程中,硬件的一些变量和参数也要传递给内核,内核通过这些参数进行中断处理。中断上文可以看作就是硬件传递过来的这些参数和内核需要保存的一些其他环境(主要是当前被中断的进程环境。
(2)中断下文:执行在内核空间的中断服务程序。

使用特权

评论回复
板凳
LEDyyds|  楼主 | 2021-6-15 11:13 | 只看该作者
三.为什么要进行不同之间状态的切换
在现在操作系统中,内核功能模块运行在内核空间,而应用程序运行在用户空间。现代的CPU都具有不同的操作模式,代表不同的级别,不同的级别具有不同的功能,其所拥有的资源也不同;在较低的级别中将禁止使用某些处理器的资源。Linux系统设计时利用了这种硬件特性,使用了两个级别,最高级别和最低级别,内核运行在最高级别(内核态),这个级别几乎可以使用处理器的所有资源,而应用程序运行在较低级别(用户态),在这个级别的用户不能对硬件进行直接访问以及对内存的非授权访问。内核态和用户态有自己的内存映射,即自己的地址空间。
当工作在用户态的进程想访问某些内核才能访问的资源时,必须通过系统调用或者中断切换到内核态,由内核代替其执行。进程上下文和中断上下文就是完成这两种状态切换所进行的操作总称。我将其理解为保存用户空间状态是上文,切换后在内核态执行的程序是下文。

使用特权

评论回复
地板
LEDyyds|  楼主 | 2021-6-15 11:15 | 只看该作者
四.什么情况下进行用户态到内核态的切换
1.进程上下文主要是异常处理程序和内核线程。内核之所以进入进程上下文是因为进程自身的一些工作需要在内核中做。例如,系统调用是为当前进程服务的,异常通常是处理进程导致的错误状态等。
2.中断上下文是由于硬件发生中断时会触发中断信号请求,请求系统处理中断,执行中断服务子程序。

使用特权

评论回复
5
LEDyyds|  楼主 | 2021-6-15 12:13 | 只看该作者
五.中断上下文代码中注意事项
运行于进程上下文的内核代码是可抢占的,但中断上下文则会一直运行至结束,不会被抢占。所以中断处理程序代码要受到一些限制,在中断代码中不能出现实现下面功能的代码:
(1)睡眠或者放弃CPU。
因为内核在进入中断之前会关闭进程调度,一旦睡眠或者放弃CPU,这时内核无法调度别的进程来执行,系统就会死掉。牢记:中断服务子程序一定不能睡眠(或者阻塞)。
(2)尝试获得信号量
如果获得不到信号量,代码就会睡眠,导致(1)中的结果。
(3)执行耗时的任务
中断处理应该尽可能快,因为如果一个处理程序是IRQF_DISABLED类型,他执行的时候会禁止所有本地中断线,而内核要响应大量服务和请求,中断上下文占用CPU时间太长会严重影响系统功能。中断处理程序的任务尽可能放在中断下半部执行。
(4)访问用户空间的虚拟地址
因为中断运行在内核空间。

使用特权

评论回复
6
呐咯密密| | 2021-6-15 13:39 | 只看该作者
进程上下文内核代码可抢占,中断会运行结束,但是高优先级中断可以打断低优先级。中断函数内的执行代码要尽量快,一般用置位标志位

使用特权

评论回复
7
asmine| | 2021-6-23 14:19 | 只看该作者
这个太理论,记不住,没事要常翻翻看

使用特权

评论回复
8
毛毛虫小可爱| | 2021-6-23 15:09 | 只看该作者
想那么多还是芯片涨价,就是语文阅读理解根据上下文回答问题一样的就行了,不行就嵌入式学习入门到放弃吧,这行太坑了

使用特权

评论回复
9
Annie556| | 2021-6-23 16:27 | 只看该作者
讲的还挺不错,感谢分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

119

主题

841

帖子

1

粉丝