在 2012年4月14日 下午9:54,Geraint Yang <gerai...@gmail.com> 写道:
> 陈老师,
> 您好,我想咨询一个lab6的问题:
>
> lab6中的练习2中priority.c的测试中,最后是通过对status数组的比例关系是否为1:2:3:4:5来判断正确与否的,那么这样会不会有很大的运气成分在里面?
>
> 我理解的stride算法是按照优先级的比例关系来分配每个process的执行时间比例的,举个极端的例子假设有两个process,一个优先级为1,记为A,另一个为3,记为B,在stride算法中,两个process的执行顺序可以是ABBBABBBABBBABBBABBBABBBABBBA...这样的执行时间的比例接近1:3。
>
> 然而,在B进程运气比较差的时候,比如,刚刚执行了ABBBABBBA的时候测试程序认为应该退出了,结果A执行了3次,B执行了6次,比值为1:2,即使使用priority.c中的计算公式:(status[i]
> * 2 / status[0] + 1) /
> 2,那么i=0时,输出为(3*2/3+1)/2=1,i=1时,输出为(6*2/3+1)/2=2,结果为1:2,同样不正确,但是算法本身应该是没问题的。
>
> 不知道是我对stride理解有误,还是比例的计算的确有问题,还请老师指正!
> 谢谢老师!
--
Best Regards
==============================================
Chen Yu
Ph.D. Associate Professor
System Software&Software Engineering Group,
Laboratory of Pervasive Computing,
Dept. of Computer Science and Technology
Tsinghua University, Beijing 100084, P.R. China
E-Mail: mailto:yuc...@tsinghua.edu.cn chy...@gmail.com
==============================================
而每个子进程i执行acc[i]的累加,在执行了MAX_TIME=2000个tick后退出,累计的值会作为子进程返回值返回给父进程
所以只要acc[i]的值足够大(即执行相对较长的时间),优先级为1的进程总要多执行一次其实对最后的换算,得到1:2:3:4:5,应该没有影响。
不过由于你是在调试,且我不知到你的stride
sched的大致实现。如果确实是由于执行时间不够长,那可以调整一下MAX_TIME,把它设置为4000 or 5000,在看看结果如何?
在 2012年4月14日 下午10:32,Geraint Yang <gerai...@gmail.com> 写道:
> 对于像我这样,优先级为1的进程总要多执行一次,导致比例总为1:2:3:3:4的悲催同学,老师有没有什么比较好的建议?
> 谢谢老师!
而每个子进程i执行acc[i]的累加,在执行了MAX_TIME=2000个tick后退出,累计的值会作为子进程返回值返回给父进程
所以只要acc[i]的值足够大(即执行相对较长的时间),优先级为1的进程总要多执行一次其实对最后的换算,得到1:2:3:4:5,应该美院
不过由于你是在调试,且我不知到你的stride sched的大致实现。
如果确实是
在 2012年4月14日 下午10:32,Geraint Yang <gerai...@gmail.com> 写道:
> 对于像我这样,优先级为1的进程总要多执行一次,导致比例总为1:2:3:3:4的悲催同学,老师有没有什么比较好的建议?
> 谢谢老师!
>
>
>
> On Sat, Apr 14, 2012 at 10:09 PM, Yu Chen <chy...@gmail.com> wrote:
>>