在给定时间段内,线程执行的指令数量是否有最小数量?
Is there a minimum number of instructions executed by thread during given time slot?
在任何给定时间段内,线程是否保证执行的指令数最少。执行模型的维基百科页面说"加法操作在许多语言中是一个不可分割的工作单元">
我想了解更多关于与 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 */
- 在提升multi_index容器中,是否定义了"default index"?
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 检查输入是否不是整数或数字
- 是否可以初始化不可复制类型的成员变量(或基类)
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 是否可以通过C++扩展强制多个python进程共享同一内存
- C++将浮点指针值舍入为小数位数
- 此代码是否违反一个定义规则
- 是否需要删除包含对象的"pair"?
- 从给定的 I 和 D 序列中形成最小数
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 是否可以从int转换为enum类类型
- 无论条件是否为true,if总是在c++中执行
- 如何找到大小'x'数组是否完全填充,在C++?
- 检查值是否在集合p1和p2中,但不在p3中
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 声明后,gcc 的动态大小数组是否与标准数组有效相同?
- 对未知大小数组的引用的列表初始化:它是否应该推断数组大小?
- 检查string是否是有效的整数或小数(正负两种情况)
- 如何检查双精度数是否有小数部分