线程在给定时隙内执行的指令数是否最少?
Is there a minimum number of instructions executed by thread during given time slot?
是否有保证线程在任何给定时隙内执行的最小指令数。 Execution Model 的维基百科页面显示 "The addition operation is an indivisible unit of work in many languages"
我想详细了解 POSIX 线程与 C/C++ 一起使用的执行模型以及保证在单个时隙内执行的不可分割指令或语句的最小数量。有人可以给我一个指示,我可以从哪里了解更多信息。谢谢提前
不,不能保证每次指令的数量。无论如何,事情的工作方式比执行一组指令要复杂得多。
执行的指令更多地取决于处理器架构而不是语言。 "traditional" 许多介绍性设计课程中讲授的 MIPS 体系结构将在每个时钟周期执行一条指令;这样设计的处理器 运行 在 1MHz 下每秒可执行一百万次操作。真实世界的处理器使用流水线、分支预测、"hyper-threading" 等技术,每个时钟周期的操作数不固定。
除此之外,现实世界中的处理器通常会在具有多任务处理能力的操作系统下运行。这意味着线程可以在未知点被内核中断,并且在其他线程获得处理器时间时根本不执行任何代码。有 "real-time" 操作系统旨在为在处理器上执行代码 运行 需要多长时间提供更多保证。
您已经对维基百科进行了一些研究;上面的一些关键字应该有助于找到更多关于该主题的文章,从那里您应该能够找到大量主要资源以了解更多关于该主题的信息。
在POSIX个线程中,主要有两种调度策略(FIFO和Round Robin)。 Round Robin 是默认调度程序,因为它更公平。
当使用 RR 调度程序时,每个线程都有一定的时间量(AKA 量程)到 运行,因此不能保证会执行 X 条指令 - 除非我们知道每个线程有多少时间指令需要。
您可以在此处找到有关 PThreads 调度算法的更多信息:http://maxim.int.ru/bookshelf/PthreadsProgram/htm/r_37.html
只是想了解一下 Linux 如何定义 round round quantum:
/*
* 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 */
是否有保证线程在任何给定时隙内执行的最小指令数。 Execution Model 的维基百科页面显示 "The addition operation is an indivisible unit of work in many languages"
我想详细了解 POSIX 线程与 C/C++ 一起使用的执行模型以及保证在单个时隙内执行的不可分割指令或语句的最小数量。有人可以给我一个指示,我可以从哪里了解更多信息。谢谢提前
不,不能保证每次指令的数量。无论如何,事情的工作方式比执行一组指令要复杂得多。
执行的指令更多地取决于处理器架构而不是语言。 "traditional" 许多介绍性设计课程中讲授的 MIPS 体系结构将在每个时钟周期执行一条指令;这样设计的处理器 运行 在 1MHz 下每秒可执行一百万次操作。真实世界的处理器使用流水线、分支预测、"hyper-threading" 等技术,每个时钟周期的操作数不固定。
除此之外,现实世界中的处理器通常会在具有多任务处理能力的操作系统下运行。这意味着线程可以在未知点被内核中断,并且在其他线程获得处理器时间时根本不执行任何代码。有 "real-time" 操作系统旨在为在处理器上执行代码 运行 需要多长时间提供更多保证。
您已经对维基百科进行了一些研究;上面的一些关键字应该有助于找到更多关于该主题的文章,从那里您应该能够找到大量主要资源以了解更多关于该主题的信息。
在POSIX个线程中,主要有两种调度策略(FIFO和Round Robin)。 Round Robin 是默认调度程序,因为它更公平。
当使用 RR 调度程序时,每个线程都有一定的时间量(AKA 量程)到 运行,因此不能保证会执行 X 条指令 - 除非我们知道每个线程有多少时间指令需要。
您可以在此处找到有关 PThreads 调度算法的更多信息:http://maxim.int.ru/bookshelf/PthreadsProgram/htm/r_37.html
只是想了解一下 Linux 如何定义 round round quantum:
/*
* 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 */