首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux进程上下文与ARM中的SVC调用

问Linux进程上下文与ARM中的SVC调用
EN

Stack Overflow用户
提问于 2014-05-01 10:46:48
回答 1查看 1.7K关注 0票数 1

根据一些Linux书籍

由用户应用程序发出的服务系统调用的内核代码代表相应的应用程序进程运行,据说是在进程上下文中执行的。中断处理程序在中断上下文中运行。

现在svc和irq是两个例外。

因此,当linux处理svc时,它在进程上下文中,在处理irq时,它处于中断上下文中。是这样映射的吗?

只需对此编辑一次

书中还提到tasklet/ softirqs在中断上下文中运行,而工作队列在进程上下文中运行。那么,这是否意味着tasklet将在CPSR.mode = IRQ中运行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-02 08:28:01

如果我能正确理解你的困惑:

由于Linux是一个功能强大、先发制人、复杂的操作系统,与普通硬件相比,它对诸如处理中断或提供软件陷阱等概念的处理要精细得多。

例如,当出现监控程序调用( SVC )时,硬件切换到SVC模式,那么Linux只需简单地准备一些数据结构来处理它,然后退出SVC模式,这样核心就可以继续在用户模式下服务,从而有可能遇到更多的异常模式而不是阻止它们。

对于IRQ模式也是如此,Linux在IRQ模式下处理最小值。它准备数据结构,比如发生了IRQ,应该调用哪个处理程序等等,然后立即退出IRQ模式,允许在该核心上发生更多的事件。稍后,其他一些内部内核线程可能会进一步处理该中断。由于硬件虽然相对简单,但运行速度非常快,因此中断的处理与许多进程并行运行。

这种高级方法的缺点是它不能保证响应时间要求,或者它的开销在较慢的硬件(如MCU)上变得可见。

因此ARM的异常模式为Linux提供了两样东西:消息类型和支持硬件支持的优先级。

  • 消息类型是什么异常模式,如果它是一个SVC,IRQ,FIQ,数据中止,未定义的指令等。因此,当硬件运行到异常模式时,Linux隐式地知道它正在处理什么。
  • 优先级是提供一个有能力和响应能力的硬件,例如,系统应该能够在处理一些不太重要的主管呼叫时确认中断。
  • 硬件支持是为了处理以上两个更容易和更快。例如,有些寄存器是银行的,或者有一个额外的系统模式来处理重入IRQ更容易。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23406171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档