Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调度器_tick-在Linux中从何处调用?_Linux_Interrupt_Schedule - Fatal编程技术网

调度器_tick-在Linux中从何处调用?

调度器_tick-在Linux中从何处调用?,linux,interrupt,schedule,Linux,Interrupt,Schedule,我想了解当处理器有机会运行内核代码并执行维护和调节工作时的中断机制。我所知道的是,定时器中断为操作系统提供了这种功能 1)我想知道的是,相关的中断号到底是多少,在Linux中调用的第一个操作系统例程是什么。如果我能知道这个文件的文件名和函数名就好了。 在Linux中,scheduler_tick是用来调度新任务的内核函数,但未知的是谁调用scheduler_tick及其父函数 2)在Linux中是否还有调用调度程序的其他中断?如果有的话,它们是什么? /* This function g

我想了解当处理器有机会运行内核代码并执行维护和调节工作时的中断机制。我所知道的是,定时器中断为操作系统提供了这种功能

1)我想知道的是,相关的中断号到底是多少,在Linux中调用的第一个操作系统例程是什么。如果我能知道这个文件的文件名和函数名就好了。

在Linux中,scheduler_tick是用来调度新任务的内核函数,但未知的是谁调用scheduler_tick及其父函数

2)在Linux中是否还有调用调度程序的其他中断?如果有的话,它们是什么?

 /*
   This function gets called by the timer code, with HZ frequency.
   We call it with interrupts disabled.
 */

 void scheduler_tick(void)
 {
         int cpu = smp_processor_id();
         struct rq *rq = cpu_rq(cpu);
         struct task_struct *curr = rq->curr;
.......

当您可以访问交叉引用(x-ref)源浏览器时,这很容易回答

单击此处:获取一个Linux内核的在线x-ref项目。(这一个不包含x-ref汇编程序代码。)

此链接转到
scheduler\u tick
函数定义。单击函数名称,然后在右侧的新面板中,在“函数原型或声明”链接“用法…”行后选择。一段时间后,将列出提及此功能的所有代码:

 include/linux/sched.h, line 309  << declaration
 kernel/sched/core.c, line 3214   << definition
 kernel/timer.c, line 1373        << calling
此函数只能从计时器中断处理程序调用;它应该在每个滴答声中被调用

更新\u进程\u次重复交叉引用搜索过程以获取列表:

References:
 arch/alpha/kernel/smp.c, line 520 
 arch/arm/kernel/time.c, line 108 
 arch/cris/arch-v10/kernel/time.c, line 171 
 arch/cris/arch-v32/kernel/time.c, line 206 
 arch/h8300/kernel/time.c, line 40 
 arch/ia64/kernel/time.c, line 184 
 arch/m68k/kernel/time.c, line 38 
 arch/parisc/kernel/time.c, line 163 
 include/linux/sched.h, line 308 
 kernel/time/tick-sched.c, line 683 
 kernel/time/tick-sched.c, line 841
相关中断数

中断号取决于平台(有时甚至在启动时分配)。你没有说你对哪个平台感兴趣

2) 在Linux中是否还有其他调用调度程序的中断?如果有的话,它们是什么


有几种定时器实现,包括hrtimer(高分辨率定时器,这可能不同于通常的系统定时器)。每个实现可能使用不同的中断。

当您可以访问交叉引用(x-ref)源浏览器时,这很容易回答

单击此处:获取一个Linux内核的在线x-ref项目。(这一个不包含x-ref汇编程序代码。)

此链接转到
scheduler\u tick
函数定义。单击函数名称,然后在右侧的新面板中,在“函数原型或声明”链接“用法…”行后选择。一段时间后,将列出提及此功能的所有代码:

 include/linux/sched.h, line 309  << declaration
 kernel/sched/core.c, line 3214   << definition
 kernel/timer.c, line 1373        << calling
此函数只能从计时器中断处理程序调用;它应该在每个滴答声中被调用

更新\u进程\u次重复交叉引用搜索过程以获取列表:

References:
 arch/alpha/kernel/smp.c, line 520 
 arch/arm/kernel/time.c, line 108 
 arch/cris/arch-v10/kernel/time.c, line 171 
 arch/cris/arch-v32/kernel/time.c, line 206 
 arch/h8300/kernel/time.c, line 40 
 arch/ia64/kernel/time.c, line 184 
 arch/m68k/kernel/time.c, line 38 
 arch/parisc/kernel/time.c, line 163 
 include/linux/sched.h, line 308 
 kernel/time/tick-sched.c, line 683 
 kernel/time/tick-sched.c, line 841
相关中断数

中断号取决于平台(有时甚至在启动时分配)。你没有说你对哪个平台感兴趣

2) 在Linux中是否还有其他调用调度程序的中断?如果有的话,它们是什么


有几种定时器实现,包括hrtimer(高分辨率定时器,这可能不同于通常的系统定时器)。每个实现可能使用不同的中断。

可能来自计时器中断?我不确定是的,它来自定时器中断-然而,这是唯一的来源吗?我看到它是从多个函数调用的,但不确定根是否只是计时器中断。可能是从计时器中断?我不确定是的,它来自定时器中断-然而,这是唯一的来源吗?我看到它是从多个函数调用的,但不确定根是否只是计时器中断。