linux-kernel - Linux 中如何调用调度程序

标签 linux-kernel scheduler

在操作系统中,调度程序在系统调用 api 或硬件中断处理之后被调用。

我无法找到并找到如何以及谁调用调度程序???

最佳答案

调度程序被调用:

  • 使用显式阻塞:互斥锁、信号量、等待队列等
  • TIF_NEED_RESCHED在最近的可能情况下设置标志:
  • 如果内核是可抢占的:
  • 在系统调用或异常上下文中,在下一个最外层 preempt_enable()
  • 在 IRQ 上下文中,从中断处理程序返回到可抢占上下文
  • 如果内核不可抢占:
  • cond_resched()调用
  • 显式 schedule()调用
  • 从系统调用或异常返回到用户空间
  • 从中断处理程序返回到用户空间
  • 关于linux-kernel - Linux 中如何调用调度程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17522658/

    相关文章:

    c - C 中 <linux/crc32.h> 和 <zlib.h> 的 crc32() 实现之间的区别

    android - 加载一个 vermagic 不匹配的 android 内核模块

    linux - 无法在 linux 上启用内核动态调试

    linux-kernel - module_init() 与 core_initcall() 与 early_initcall()

    apache-spark - 使用部署模式集群的 Apache Spark 任务中的调度程序延迟较大

    linux - 为什么使用 taskset 在一组孤立的内核上运行多线程 Linux 程序会导致所有线程都在一个内核上运行?

    node.js - 在 heroku 上用 node.js 开发一个时钟和 worker

    linux - 如何在驱动程序代码内将 Linux 中的内核空间 VA 转换为 PA?

    更改 xv6 内核 :ERROR: expected declaration or statement at end of input in C

    java - 在 Maven 项目中将 war 部署到 glassfish 服务器后,Quartz 作业未触发