gpt4 book ai didi

operating-system - 内核运行 ISR 例程时的限制

转载 作者:行者123 更新时间:2023-12-04 20:17:56 26 4
gpt4 key购买 nike

内核模式和 ISR 例程中有哪些重要的注意事项?
例如 -

  • 运行中断处理程序时是否禁用了上下文切换?
  • 当进程处于临界区时是否会发生上下文切换
    部分 ?
  • 内核模式中的哪些情况值得禁用进一步的中断?

  • 为什么在页面错误时会发生进程切换,其中进程从磁盘获取数据,但不会在其他中断发生期间发生。
    你如何分类一个可执行路径是否可以被中断/重新调度/抢占?

    当进程处于内核模式或处理 ISR 例程时,还必须记住哪些其他事情?

    最佳答案

    简而言之:没有上下文切换,永远 .

    这意味着:

  • 无抢占
  • 没有互斥锁(使用自旋锁,并确保您的非 ISR 对应物使用 spin_lock_irqsave 获取它们以禁用 IRQ)
  • 没有调用任何可以休眠的内核函数(检查函数的文档,一些函数也有 _cansleep 变体)。

  • 进程切换可能发生在页面错误上,但会在处理相应的 ISR 之后发生。如果路径不是 ISR 并且您没有锁定自旋锁,则基本上可以安排路径。如果您持有自旋锁,您 必须避免 sleep 直到它被释放。

    由于 ISR 非常受限制,因此 IRQ 的处理通常分为上半部分(在 ISR 上下文中运行并执行关键工作)和下半部分(稍后作为内核线程运行并执行任何可以延迟的操作)哪个可以 sleep 。有关更多信息,请参阅此页面:

    http://www.makelinux.net/ldd3/chp-10-sect-4

    关于operating-system - 内核运行 ISR 例程时的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10064478/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com