在给定时间段内,线程执行的指令数量是否有最小数量?

Is there a minimum number of instructions executed by thread during given time slot?

本文关键字:是否 小数 指令 时间段 定时间 执行 线程      更新时间:2023-10-16

在任何给定时间段内,线程是否保证执行的指令数最少。执行模型的维基百科页面说"加法操作在许多语言中是一个不可分割的工作单元">

我想了解更多关于与 C/C++ 一起使用的 POSIX 线程的执行模型,以及保证在单个时隙中执行的不可分割指令或语句的最小数量。有人可以给出一个指针,我可以从中了解更多信息。谢谢是提前

不,不保证每次的指令数。无论如何,事情的工作方式比执行一定数量的指令要复杂得多。

执行的指令更多地取决于处理器架构而不是语言。许多入门设计课程中教授的"传统"MIPS架构将在每个时钟周期执行一条指令;像这样设计的处理器以1MHz运行,每秒将执行一百万次操作。实际处理器使用管道、分支预测、"超线程"等技术,并且每个时钟周期没有固定数量的操作。

除此之外,现实世界的处理器通常会在具有多任务处理功能的操作系统下运行。这意味着内核可以在未知点中断线程,并且根本不执行任何代码,因为其他线程被赋予处理器时间。有一些"实时"操作系统旨在提供更多关于执行处理器上运行的代码所需的时间的保证。

你已经在维基百科上做了一些研究;上面的一些关键词应该有助于追踪更多关于这个主题的文章,从那里你应该能够找到大量的主要来源来了解更多关于这个主题的信息。

在 POSIX 线程中,有两个主要的调度策略(FIFO 和轮循机制(。循环是默认的调度程序,因为它更公平。

当使用 RR 调度程序时,每个线程都有一定的时间量(AKA 量子(来运行,因此不能保证 X 数量的指令会被执行 - 除非我们知道每条指令需要多少时间。

您可以在此处找到有关 PThreads 上的调度算法的更多信息:http://maxim.int.ru/bookshelf/PthreadsProgram/htm/r_37.html

只是为了给出一个关于 Linux 如何定义圆形量子的想法:

/*
* default timeslice is 100 msecs (used only for SCHED_RR tasks).
* Timeslices get refilled after they expire.
*/
#define RR_TIMESLICE        (100 * HZ / 1000)
#endif /* _LINUX_SCHED_RT_H */