IceAge 发表于 2007-12-4 21:49

还在争?

坦率的说,争这个意义不大。wxj1952&nbsp;的用“终结“&nbsp;一字,显然欠妥。这样的题目,无论在&nbsp;os&nbsp;下有什么样的调度策略,裸奔绝对,&nbsp;我是说,&nbsp;****&nbsp;绝对&nbsp;****&nbsp;可以做到,无论如何,wxj1952&nbsp;你肯定会输掉的。<br /><br />os&nbsp;的优势在于通用性,灵活性,特别是可扩展性,这是&nbsp;裸奔&nbsp;很难做到的。<br /><br />wxj1952&nbsp;是新警察吧?

liandao 发表于 2007-12-4 21:49

可行么

A.每分钟到达点之后9秒时序图<br />|___________________|___________________|___________________|___________________|<br />|&nbsp;&nbsp;&nbsp;&nbsp;700ms&nbsp;&nbsp;&nbsp;|&nbsp;300ms|200ms|300ms|500ms&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;700ms&nbsp;&nbsp;&nbsp;|&nbsp;300ms|200ms|300ms|500ms&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&lt&lt时间<br />|--&gt&nbsp;&nbsp;F071&nbsp;&nbsp;&lt|--&gtF05&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt|&nbsp;&nbsp;_&nbsp;&nbsp;|--&gtF05&lt|--&gt&nbsp;&nbsp;F072&nbsp;&nbsp;&lt|--&gtF05&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt|&nbsp;&nbsp;_&nbsp;&nbsp;|--&gtF05&lt|&nbsp;&nbsp;&nbsp;&lt&lt任务<br />|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+<br />|0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&lt&lt秒值<br />|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;|&lt-300ms延时|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;|&lt-300ms延时|<br />|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;<br />#--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&lt-秒跳&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&lt-秒跳&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&lt-秒跳&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&lt-秒跳<br />|&lt---每分钟到达点<br /><br /><br /><br />|___________________|___________________|___________________|___________________|<br />|&nbsp;&nbsp;&nbsp;&nbsp;700ms&nbsp;&nbsp;&nbsp;|&nbsp;300ms|200ms|300ms|500ms&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;700ms&nbsp;&nbsp;&nbsp;|&nbsp;300ms|200ms|300ms|500ms&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&lt&lt时间<br />|--&gt&nbsp;&nbsp;F073&nbsp;&nbsp;&lt|--&gtF05&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt|&nbsp;&nbsp;_&nbsp;&nbsp;|--&gtF05&lt|--&gt&nbsp;&nbsp;F074&nbsp;&nbsp;&lt|--&gtF05&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt|&nbsp;&nbsp;_&nbsp;&nbsp;|--&gtF05&lt|&nbsp;&nbsp;&nbsp;&lt&lt任务<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+<br />5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9&nbsp;&nbsp;&lt&lt秒值<br />|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;|&lt-300ms延时|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;|&lt-300ms延时|<br />|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br />|&lt-秒跳&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&lt-秒跳&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&lt-秒跳&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&lt-秒跳&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&lt-秒跳<br /><br />B.每分钟其余时间时序图<br />|___________________|___________________|___________________|<br />|&nbsp;&nbsp;500ms&nbsp;|&nbsp;&nbsp;&nbsp;500ms&nbsp;&nbsp;|&nbsp;&nbsp;500ms&nbsp;&nbsp;|&nbsp;500ms&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;500ms&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;500ms&nbsp;|&nbsp;&nbsp;&lt&lt时间<br />|--&gtF05&nbsp;&lt|&nbsp;&nbsp;_&nbsp;_&nbsp;_&nbsp;_&nbsp;|--&gtF05&nbsp;&nbsp;&lt|&nbsp;_&nbsp;_&nbsp;_&nbsp;_&nbsp;|--&gtF05&nbsp;&nbsp;&lt|&nbsp;&nbsp;_&nbsp;_&nbsp;_&nbsp;_|&nbsp;&nbsp;&lt&lt任务<br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;<br />8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;11&nbsp;&nbsp;&lt&lt秒值<br />|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&lt-500ms延时&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&lt-500ms延时&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&lt-500ms延时<br />|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br />|&lt-秒跳&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&lt-秒跳&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&lt-秒跳&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&lt-秒跳&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />补充说明:<br />1&nbsp;F05执行情况有两种如下:<br />1.a&nbsp;F05在每秒的开始点起被执行,如图B描述的时序图.<br />1.b&nbsp;F05并没有严格在每秒的时刻到达的时候被执行,但每一秒内均被执行过一次,如图A描述的时序图(这点不知是否合适?)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />2.在每分钟的时刻到达后,9秒内F05如1.a所讲,9秒期间4个顺序任务F071--F074依次在每两秒的开始点被执行<br />3.图B中秒的维护比较容易,秒跳变比较精准;图A中,秒跳有偏差,一次是1200ms&nbsp;下次是800ms&nbsp;如此往复4次.虽然秒跳位置偏差但时间并未出现偏差<br /><br />要求点检查:<br />1.时间精确&lt&lt可以做到<br />2.F071---F074顺序执行&lt&lt可以做到<br />3.每秒一次F05&lt&lt做到了?(但时间点并不是次次都在秒跳的开始点)<br />4.任务不允许被打断&lt&lt做到<br />--------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />个人认为以下要求不能满足:<br />1.如果要求秒跳均是在每秒的开始点,做不到,因为700ms的任务加上一个500ms的任务比1秒长.<br />2.要求耗时500ms的任务F05必须开始于每秒的开始点,也做不到.<br /><br /><br /><br />1、用单CPU做一个精确的时钟。<br />2、以此时钟为基准,每秒钟运行一次一个500ms开销的任务,设其为F05()。<br />3,每分钟到达时,运行一次4个紧密关联的函数,每个运行开销700ms,&nbsp;设其为F071(),F072(),F073(),F074();要求4个函数必须顺序运行。<br />4、为简化题目,只做秒、分2位。<br />

xwj 发表于 2007-12-4 21:53

好,就以LZ目前的这个版本为准,开始咬文嚼字的审题:

好,就以LZ目前的这个版本为准,开始咬文嚼字的审题:<br /><font color=#777777><br />这是一个实际应用的例子。实现目标:<br /><br />1、用单CPU做一个精确的时钟。<br /><font color=#0000EE>--估计不是“精确”,而应该是“准确”,既整体计数不会错误即可。<font color=#EE0000>这样理解LZ同意吗?</font><br /></font><br />2、以此时钟为基准,每秒钟运行一次一个500ms开销的任务,设其为F05()。<br /><font color=#0000EE>--依题意F05()在每秒钟内必须得到一次运行,每次运行的整体时长时500mS,但不限定是否被打断以及是否非在一秒开始时准确开始。由于有“每秒钟运行一次”的要求,考虑偏差,在任意2秒内如果一次都没运行那就肯定是错的。<font color=#EE0000>这样理解LZ同意吗?</font></font><br /><br />3,每分钟到达时,运行一次4个紧密关联的函数,每个运行开销700ms,&nbsp;设其为F071(),F072(),F073(),F074();要求4个函数必须顺序运行。<br /><font color=#0000EE>--依题意F07x()每个函数运行时间为700mS,然后顺序依次为F071(),F072(),F073(),F074(),不能错乱(比如F071(),F073(),F072(),F074();),不能混合(比如F071(F072()),,F073(),F074();)等。而在“一分钟后”是1.01分时开始运行F071()还是1.10分时开始运行关系不大,是1.x1分时开始运行F072()还是1.x2分时开始运行F072()关系不大,实际上只要保证F071(),F072(),F073(),F074();4个的相对顺序正确就行了。<font color=#EE0000>这样理解LZ同意吗?</font></font><br /><br />4、为简化题目,只做秒、分2位。<br /><font color=#0000EE>--这个无所谓啦,设秒的范围为0~59;分的范围为0~59。<font color=#EE0000>这样理解LZ同意吗?</font></font><br /><br />要求:各函数时间开销严格,运行期间不允许打断(即不允许被中断或抢占)。<br /><font color=#0000EE>--这个要求非常关键,LZ本意上所设置的难点也就在这里了。“各函数时间开销严格”中的“严格”就很关键了。比如700mS的函数要时运行成了701mS或699mS都是不对的。<font color=#EE0000>这样理解LZ同意吗?</font><br />--“运行期间&nbsp;不允许&nbsp;打断”这句也是相当关键的,分为3个关键词组:“运行期间”“不允许”“打断”,缺一不可,对吧?&nbsp;那么分别来详细理解:“运行期间”是指每个函数(比如F05()、F071())运行中间,对吧?“不允许”很好理解,违规就立即out嘛。“打断”--这个打断就不知怎么说了,不知会不会有人故意去曲解它呢?按照文字的意思,对应到处理器的行为上,如果运行F071()时PC指针全部在F071()的范围内才是不被打断,只要执行F071()范围外的任何指令,就是被打断了,<font color=#EE0000>这样理解LZ同意吗?</font><br />--再看括号里的补充:(即不允许被中断或抢占),这个“中断”是指&nbsp;a、别的程序中断了它一下然后又返回了;b、还是指别的程序中断了它,就此不返回了;c、还是指别的程序中断了它,运行完另外的程序后再返回它了;&nbsp;d、还是指CPU产生了定时器硬件中断、IO硬件中断等?“抢占”很好理解,只是针对OS来说的,实际应该是上面的情况c吧。<font color=#EE0000>这样理解LZ同意吗?</font><br /><br /><br /><br /></font></font><br />先问这一部分吧,等LZ确认后再继续...

xwj 发表于 2007-12-4 21:58

如果对于我的理解有异议可以提出来,我们甚至可以把解释

前提是只要你有合理或不合理的解释!<br /><br />然后我们再在你的“解释”上统一讨论或比试,但不允许反悔或逃跑,OK?<br /><br />

农民讲习所 发表于 2007-12-4 21:59

LZ想要答案而已,夸张手法是市场运作。

老狼 发表于 2007-12-4 22:23

那就玩玩吧

Timer&nbsp;&nbsp;&nbsp;//定时1秒<br />{<br />&nbsp;&nbsp;TimerCounter++;<br />&nbsp;&nbsp;SecondLBL=1;<br />}<br />main()<br />{<br />&nbsp;<br />&nbsp;TimerCounter=0;&nbsp;//秒计时器<br />&nbsp;SecondLBL=0;&nbsp;&nbsp;&nbsp;//秒到达标志<br />&nbsp;OpenAndInitTimer();//<br /><br />&nbsp;while(1)<br />&nbsp;{<br />&nbsp;&nbsp;if((SecondLBL==1)&&(TimerCounter&lt59))<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;F05();<br />&nbsp;&nbsp;&nbsp;&nbsp;SecondLBL=0;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;if(TimerCounter&gt=59)<br />&nbsp;&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;CloseTimer();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//lineA&nbsp;关定时器<br />&nbsp;&nbsp;&nbsp;&nbsp;F071();<br />&nbsp;&nbsp;&nbsp;&nbsp;F072();<br />&nbsp;&nbsp;&nbsp;&nbsp;F073();<br />&nbsp;&nbsp;&nbsp;&nbsp;F074();<br />&nbsp;&nbsp;&nbsp;&nbsp;Delay();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//延时时间常数为,程序由lineA到lineB&nbsp;时间为3秒<br />&nbsp;&nbsp;&nbsp;&nbsp;TimerCounter=3;&nbsp;&nbsp;&nbsp;&nbsp;//让秒计时留出3秒的时间,留给这段程序执行<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;需要根据程序运行,修改等待时间<br />&nbsp;&nbsp;&nbsp;&nbsp;OpenAndInitTimer();//lineB&nbsp;开定时器,并从新初始化&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;}<br />}<br /><br />&nbsp;不知道楼主是不是这个意思!

zhuhai2004 发表于 2007-12-4 22:26

耐心看完所有的帖子,到最后也不知道都说了什么?

听说日本的uITRON的实时系统也不错,可惜是收费的。(没办法,好东西都是要银子的,可是不用银子的又不敢用,郁闷)不知道有没有这方面的高手啊?因为用日系的片子,所以关注,高手不如谈谈这个东东呗!

平常人 发表于 2007-12-4 22:29

哈哈,一只猫耍一群老鼠

有人在偷着乐

liandao 发表于 2007-12-4 22:29

追加

洗澡时想了一下:<br />对&quot;224楼&quot;补充如下:<br />如果图A图B正确,那么用状态机的方式做&quot;裸奔&quot;很容易的,即便是要求用OS,那么问题也能解决,在图A中每次秒跳点做系统时间校正就行了.<br />--&gt执行F071--&gt执行F05---&gt校正系统时间--&gt300ms空等--&gtF05---&gt<br />&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&lt&lt调度点&nbsp;&nbsp;<br /><br />--&gt执行F072--&gt执行F05---&gt校正系统时间--&gt300ms空等--&gtF05---&gt<br />&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&lt&lt调度点&nbsp;&nbsp;<br /><br />--&gt执行F073--&gt执行F05---&gt校正系统时间--&gt300ms空等--&gtF05---&gt<br />&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&lt&lt调度点&nbsp;&nbsp;<br /><br />--&gt执行F074--&gt执行F05---&gt校正系统时间--&gt300ms空等--&gtF05---&gt<br />&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&lt&lt调度点&nbsp;&nbsp;<br />...<br />还是认为500ms任务和700ms任务无法同时对齐于秒的开始点,如同有一个很多连续的一米的空格子,有70cm和50cm长的东西,事先要求每个格子放一个50cm的东西,那么无论如何70cm的东西是根本不再能发到格子里的.

uc.c 发表于 2007-12-4 22:29

楼好高啊

这么高的楼,一页一页看下来,真累。

wxj1952 发表于 2007-12-4 22:43

XWJ的分析完全对!

非常对不起,我差点今天关机了。没想到有这么多热心网友关注。我要再等就对不起人了。<br /><br />xwj的分析完全对!就是F05“但不限定是否被打断”这句,应该像F07x一样理解,只要启动运行,就应连续到完成。“所有函数‘运行期间’不允许被打断”。<br /><br />我这里公开主要答案:“什么叫临界代码”?<br /><br />代码的临界段<br />代码的临界段也称为临界区,指处理时不可分割的代码。一旦这部分代码开始执行,则不允许任何中断打入。为确保临界代码的执行不被中断,再进入临阶段之前须关中断,而临界代码执行完后,要立即开中断。<br />&nbsp;——摘自《嵌入式实时操作系统uc/OS-II》<br /><br />所以,把F07x处理为临界代码即可。临界代码的规则是(书上没说,我们自己应该知道):一段临界代码的运行时间不能超过一个系统节拍时间。分割任务也是按此规则吧。其实这是裸奔规则,(我在为裸奔者提示。)OS可以自动管理,不要求用户理解这么复杂的事情。<br /><br />还有,好像hotpower说过:只要秒脉冲不丢,什么都可以奔出来。临界代码运行期间,系统心跳停止了么?没有。所以,还有最后一个问题,怎么保证正确恢复丢失的秒数?<br /><br />基本原理都说明了。没有刁难谁。最后这个问题,还想看看怎么奔的。后天来看OS怎么做的。<br /><br />谢谢诸位!谢谢老狼,谢谢liandao。<br />

老狼 发表于 2007-12-4 22:43

uITRON

这个系统的作者好象叫&nbsp;板村建(板寸贱),按zlg&nbsp;的说法,全世界占有量第一(我不太相信),现在都在说全世界占有量第一,LINUX&nbsp;,&nbsp;WinCE&nbsp;都说是占有量第一,如果从我能看到的来说,我个人觉得还是wince&nbsp;更有发展,这个世界,跟老大混,不会有错的,不过在咱那个ARM&nbsp;论坛上可不敢这样说,板砖不知道要飞过来多少。uITRON,个人觉得是最没前途的,你看看老周,现在再推啥?也就&nbsp;LINUX&nbsp;,&nbsp;WinCE。&nbsp;那个uITRON也就说说,没推啥产品!其实我更喜欢Vxwork&nbsp;or&nbsp;threadx,但是太贵了!

chuangong 发表于 2007-12-4 22:51

不知这样是否可以裸奔?

void&nbsp;main(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//TCONT为定时器的计数器寄存器,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//该寄存器需满足大于2秒的定时计数长度(&nbsp;&nbsp;&nbsp;&nbsp;假设为2秒&nbsp;=500ms+700ms+其他语句执行时间)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//timerReload为1秒的重载值<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(timerReload&gtTCONT)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//1秒计数已经溢出<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TCONT&nbsp;=&nbsp;timerReload&nbsp;+&nbsp;TCONT&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//重载1S计数值,暂时不理该语句对时钟误差的影响<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sec++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnSecDeal=true;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(Sec&gt=60)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sec&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Min++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnMinDeal&nbsp;=&nbsp;true;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnF07&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(EnSecDeal==true)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//1秒的处理<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnSecDeal=false;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F05();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//TCONT为定时器的计数器寄存器,该寄存器需满足大于2秒定时计数长度;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//timerReload为1秒的重载值<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(timerReload&gtTCONT)&nbsp;&nbsp;&nbsp;&nbsp;//1秒计数已经溢出<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TCONT&nbsp;=&nbsp;timerReload&nbsp;+&nbsp;TCONT&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//重载1S计数值,暂时不理该语句对时钟误差的影响<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sec++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnSecDeal=true;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(Sec&gt=60)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sec&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Min++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnMinDeal&nbsp;=&nbsp;true;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnF07&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(EnMinDeal==turn)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//1分钟的处理<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch(EnF07)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;1&nbsp;:F071();&nbsp;&nbsp;&nbsp;&nbsp;EnF07&nbsp;=&nbsp;2;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;2&nbsp;:F072();&nbsp;&nbsp;&nbsp;&nbsp;EnF07&nbsp;=&nbsp;3;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;3&nbsp;:F073();&nbsp;&nbsp;&nbsp;&nbsp;EnF07&nbsp;=&nbsp;4;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;4&nbsp;:F074();&nbsp;&nbsp;&nbsp;&nbsp;EnF07&nbsp;=&nbsp;5;EnMinDeal=false;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}

xwj 发表于 2007-12-4 22:56

就因为“一旦这部分代码开始执行,则不允许任何中断打入

那你的系统节拍时间定多少?700mS还是700mS以上?此时的OS还有什么意义?此时你怎么去保证每一秒内F05()都能运行一次?<br /><br />而且你的节拍怎么来???<br /><br /><br />OS根本就不是这样用的,LZ根本就是举错了例子...<br />

平常人 发表于 2007-12-4 23:06

我说嘛,玩这种文字游戏,这不是耍人是什么

在11楼,我第一次发言时就要求LZ画个坐标图描述一下你的要求,这是避免歧义的最好办法,但LZ始终置之不理。<br /><br />不知道LZ是要考大家的文字理解能力还是要考大家的编程能力,如果是前者,那纯属在捉弄人。<br /><br />如果是后者,则犯了任务定义之大忌,定义任务的目的是要实现既定目标,现在变成了所有人在揣摩出题人的真实意图,我只能说这是LZ在故意卖关子,看所有人的笑话;也许楼主不这么认为,但实际效果就是如此!试想在战场上,一个指挥员下命令而所有的下属都不明白他的意图,即使他是个非常优秀的指挥员,他仍然要吃败仗。再多说一句,如果你让你的承包商设计一个产品,但所有的承包商都不十分清楚你要的是什么样的产品,可能你是个十分优秀的人,你也自认为说明的很明确了,但如果没有人能够理解你的意图,你仍然不能得到你想要得到的产品,最终你还是不能达到你的目的。<br />

zhuhai2004 发表于 2007-12-4 23:07

uITRON主要是资料太少,推广不开,资料都是日文的多。

工业应用我看好uITRON,uLINUX可能更适合联网吧!好像在哪里看过计算机所的同志也谈过uITRON的系统,评价很高.

xwj 发表于 2007-12-4 23:11

同意LS,去看看我出的那个题吧,会象你这样缠夹不清吗?

soso 发表于 2007-12-4 23:19

有点疑问

那个&nbsp;F05&nbsp;可不可以被打断?或者不能被打断但是可以被延迟?<br /><br />F071-F074&nbsp;这几个函数之间是否只要顺序执行即可,而不限制中间插入其他动作?<br /><br />

athlon64fx 发表于 2007-12-4 23:21

re:

此帖和“利用失重现象宇航员也许就不会死”异曲同工。<br />http://bbs.news.sina.com.cn/tableforum/App/view.php?bbsid=4&subid=2&fid=1549&tbid=2449<br /><br />一万五千个跟帖的试图说服他,但是却不知道其实他是故意炒作的。<br />大家看看这个帖子吧。 <br /> 相关链接:<a href='http://bbs.news.sina.com.cn/tableforum/App/view.php?bbsid=4&subid=2&fid=1549&tbid=2449'>http://bbs.news.sina.com.cn/tableforum/App/view.php?bbsid=4&subid=2&fid=1549&tbid=2449</a>

soso 发表于 2007-12-4 23:29

RTOS 不过是个工具,其基础仍然是非RTOS。

可以说,能够用RTOS做到的,用非RTOS的方法也都能做到。而用非RTOS的方法做不到的,用RTOS一样做不到。<br /><br />
页: 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 19 20 21
查看完整版本: **lz说湖南人好斗,