一个时间片,至少执行几行代码

时间:2021-10-11 08:33:30
在(未知的)操作系统中,采用时间片轮转的方式进程调度,在一个时间片内,执行了cpu几行代码,这个是不是可以估算出来?

12 个解决方案

#1


这个不好说吧,具体还真不知道。
感觉应该取决于操作系统,不清楚每个操作系统中的时钟是否一致。

#2


可以去下CPU的手册,看看每条指令需要多少周期。

#3


这个没有办法精确估算的吧,执行的也是CPU的指令,有的时候一行C语句会生成几行CPU代码。时间片轮转这个很难说的。但是可以大概估算:
首先要知道操作系统一个时间片是多少个周期,然后看CPU手册,一个指令要多少周期,这样就可以估算了

#4


这个不太可能吧,虽然时间片可以知道是多少,但是实际跑起来每条指令的执行周期又会受一些外界因素的影响啊,

#5


问题是,你说的几行代码,是汇编,c,c++

这个真不好估计

#6


ms自己有个调试工具,那个是驱动级别的,公司在*,一般oem厂商的程序,都是用它测试的。

确实可以估算,时间片等等数据,不过这东西的测试环境很苛刻。

即使你机器上突发跑了个定时任务,也要重新再跑一遍测试流程。

时间片级别的性能测试,应用范围一般都是服务器,对测试人员的要求很高。

突发感想,瞎说一些,哈哈哈

#7


具体代码不同就有不同。不过以现在的机器来说那是远远不止“几行代码”的。

一般一条汇编指令的执行时间不过几个CPU周期,以现在的主频来看也就是大多在1ns以下。如果一个时间片有15ms的话,足够执行上万行汇编代码了。

#8


刚估算了下,对与线程调度,时间片内大约执行了1百万条代码,估算过程如下:
一个主频为2GHZ的CPU时钟周期是1/2G = 5*10^(-10)s = 5*10^(-7)ms
假设一条汇编指令需要6个时钟周期,同时假设一行(c语言)代码需要3条汇编指令,这样执行一行代码的时间就是3*6*5*10^(-7)ms = 9*10^(-6)ms,约等于10*10^(-6)。
从网上看到线程的一个时间片大约20ms。于是一个时间片内执行的代码行数 = 20/(10*10^(-6))= 1*10^(6),即一个时间片内可执行1百万条代码。估算的数值好大啊,不知道对不对,请网友指证。

#9


是2百万行,刚马虎了。
引用 8 楼  的回复:
刚估算了下,对与线程调度,时间片内大约执行了1百万条代码,估算过程如下:
一个主频为2GHZ的CPU时钟周期是1/2G = 5*10^(-10)s = 5*10^(-7)ms
假设一条汇编指令需要6个时钟周期,同时假设一行(c语言)代码需要3条汇编指令,这样执行一行代码的时间就是3*6*5*10^(-7)ms = 9*10^(-6)ms,约等于10*10^(-6)。
从网上看到线程的一个时间……

#10


这个没有意义啊。我们看到的汇编指令其实还要分解成微指令的。所以不好解释。而且现代cpu有流水线。

#11


估算好像不对,估算值偏大了,有木有精通硬件的估算下

#12



假设一条汇编指令需要6个时钟周期,同时假设一行(c语言)代码需要3条汇编指令,这样执行一行代码的时间就是3*6*5*10^(-7)ms = 9*10^(-6)ms,约等于10*10^(-6)


不知道LZ到底要干嘛,看样子是在估算时间片可以跑几行C语言代码诶,,,,,这样的话,去看看有几种C语句的汇编只要3条汇编的啊?

然后如果要抛弃掉现代CPU上的流水线超线程超标量等技术的话,一个时间片执行了多少条汇编代码还是可以估算的,根据CPU来算的,不过时间片还是对于OS而言的,不同的OS是不同的。。

#1


这个不好说吧,具体还真不知道。
感觉应该取决于操作系统,不清楚每个操作系统中的时钟是否一致。

#2


可以去下CPU的手册,看看每条指令需要多少周期。

#3


这个没有办法精确估算的吧,执行的也是CPU的指令,有的时候一行C语句会生成几行CPU代码。时间片轮转这个很难说的。但是可以大概估算:
首先要知道操作系统一个时间片是多少个周期,然后看CPU手册,一个指令要多少周期,这样就可以估算了

#4


这个不太可能吧,虽然时间片可以知道是多少,但是实际跑起来每条指令的执行周期又会受一些外界因素的影响啊,

#5


问题是,你说的几行代码,是汇编,c,c++

这个真不好估计

#6


ms自己有个调试工具,那个是驱动级别的,公司在*,一般oem厂商的程序,都是用它测试的。

确实可以估算,时间片等等数据,不过这东西的测试环境很苛刻。

即使你机器上突发跑了个定时任务,也要重新再跑一遍测试流程。

时间片级别的性能测试,应用范围一般都是服务器,对测试人员的要求很高。

突发感想,瞎说一些,哈哈哈

#7


具体代码不同就有不同。不过以现在的机器来说那是远远不止“几行代码”的。

一般一条汇编指令的执行时间不过几个CPU周期,以现在的主频来看也就是大多在1ns以下。如果一个时间片有15ms的话,足够执行上万行汇编代码了。

#8


刚估算了下,对与线程调度,时间片内大约执行了1百万条代码,估算过程如下:
一个主频为2GHZ的CPU时钟周期是1/2G = 5*10^(-10)s = 5*10^(-7)ms
假设一条汇编指令需要6个时钟周期,同时假设一行(c语言)代码需要3条汇编指令,这样执行一行代码的时间就是3*6*5*10^(-7)ms = 9*10^(-6)ms,约等于10*10^(-6)。
从网上看到线程的一个时间片大约20ms。于是一个时间片内执行的代码行数 = 20/(10*10^(-6))= 1*10^(6),即一个时间片内可执行1百万条代码。估算的数值好大啊,不知道对不对,请网友指证。

#9


是2百万行,刚马虎了。
引用 8 楼  的回复:
刚估算了下,对与线程调度,时间片内大约执行了1百万条代码,估算过程如下:
一个主频为2GHZ的CPU时钟周期是1/2G = 5*10^(-10)s = 5*10^(-7)ms
假设一条汇编指令需要6个时钟周期,同时假设一行(c语言)代码需要3条汇编指令,这样执行一行代码的时间就是3*6*5*10^(-7)ms = 9*10^(-6)ms,约等于10*10^(-6)。
从网上看到线程的一个时间……

#10


这个没有意义啊。我们看到的汇编指令其实还要分解成微指令的。所以不好解释。而且现代cpu有流水线。

#11


估算好像不对,估算值偏大了,有木有精通硬件的估算下

#12



假设一条汇编指令需要6个时钟周期,同时假设一行(c语言)代码需要3条汇编指令,这样执行一行代码的时间就是3*6*5*10^(-7)ms = 9*10^(-6)ms,约等于10*10^(-6)


不知道LZ到底要干嘛,看样子是在估算时间片可以跑几行C语言代码诶,,,,,这样的话,去看看有几种C语句的汇编只要3条汇编的啊?

然后如果要抛弃掉现代CPU上的流水线超线程超标量等技术的话,一个时间片执行了多少条汇编代码还是可以估算的,根据CPU来算的,不过时间片还是对于OS而言的,不同的OS是不同的。。