vxworks和UCOS有什么区别?

来源:百度文库 编辑:超级军网 时间:2024/04/29 06:18:13
我昨天和一个老同学喝咖啡,他说他写过一个OS,实时性很好,实时性是参照的vxworks,开源的。
他把UCOS批了又批,包括FreeRTOS,国产的RT-thread,都江堰。我昨天和一个老同学喝咖啡,他说他写过一个OS,实时性很好,实时性是参照的vxworks,开源的。
他把UCOS批了又批,包括FreeRTOS,国产的RT-thread,都江堰。
vxwork现在算是intel的了。
VxWorks的Wind微内核基于优先级抢占调度和时间片轮询。
uCOS II内核调度特点: 只支持基于优先级的抢占式调度算法,不支持时间片轮训;

网上找的
vxworks是开源的??
不知道为什么 发表于 2012-1-27 22:06
VxWorks的Wind微内核基于优先级抢占调度和时间片轮询。
uCOS II内核调度特点: 只支持基于优先级的抢占式调 ...
FreeRTOS,RT-thread都是支持时间片轮询,UCOS III也支持时间片轮询了。
我朋友说vxworks的TASK有一个“生存时间”,TASK必须在这个时间内完成
铁血烈鹰 发表于 2012-1-27 23:18
FreeRTOS,RT-thread都是支持时间片轮询,UCOS III也支持时间片轮询了。
我朋友说vxworks的TASK有一个“ ...
是时间片到了就强制切换task吗?不用等当前活动的那个主动释放
不知道为什么 发表于 2012-1-27 23:57
是时间片到了就强制切换task吗?不用等当前活动的那个主动释放
曾经听说有合作式和竞争式(?)的切任务方式,不知道是否是你说情况
不知道为什么 发表于 2012-1-27 23:57
是时间片到了就强制切换task吗?不用等当前活动的那个主动释放
我用的感觉就是任务可以同优先级,只要写好任务函数,几个任务函数自动切换,但是优先级要设置为一样。UCOS的是低优先级的任务可以切入高优先级,高优先级的要加DELAY之类的函数才能进入低优先级,FreeRTOS则不用
铁血烈鹰 发表于 2012-1-28 01:12
我用的感觉就是任务可以同优先级,只要写好任务函数,几个任务函数自动切换,但是优先级要设置为一样。UC ...
刚上网去找,感觉啊,
我用的感觉就是任务可以同优先级,只要写好任务函数,几个任务函数自动切换,但是优先级要设置为一样。
------时间片轮转
UCOS的是低优先级的任务可以切入高优先级,高优先级的要加DELAY之类的函数才能进入低优先级,
------优先级抢占
FreeRTOS则不用
------不懂
不知道为什么 发表于 2012-1-28 01:35
刚上网去找,感觉啊,
我用的感觉就是任务可以同优先级,只要写好任务函数,几个任务函数自动切换,但是 ...
时间片轮转的就不用低优先级抢占高优先级。其实抢占也是用时间片来控制的

铁血烈鹰 发表于 2012-1-28 01:40
时间片轮转的就不用低优先级抢占高优先级。其实抢占也是用时间片来控制的


你说得对,但是你不是只能设成同优先级别嘛,那ucos叫优先级合作???好像感觉别扭。那个家延时,sch之类的都释放进程了,它的状态应该不再是ready
铁血烈鹰 发表于 2012-1-28 01:40
时间片轮转的就不用低优先级抢占高优先级。其实抢占也是用时间片来控制的


你说得对,但是你不是只能设成同优先级别嘛,那ucos叫优先级合作???好像感觉别扭。那个家延时,sch之类的都释放进程了,它的状态应该不再是ready
不知道为什么 发表于 2012-1-28 01:51
你说得对,但是你不是只能设成同优先级别嘛,那ucos叫优先级合作???好像感觉别扭。那个家延时,sch之 ...
这个是别人说的

2  Vxworks实时内核 Wind的任务调度
Wind内核默认采用基于优先级的抢占式调度(Priority-base preemptive  scheduling)
算法。同时,还可以选用轮转(round-robin)调度算法。
不同优先级任务之间,采用基于优先级的抢占式调度算法。系统中每个任务都有一个介
于最高0到最低255之间的优先级。任一时刻,内核把CPU分配给处于就绪态的优先级最高的
任务运行。如果系统内核一旦发现一个优先级更高的任务转变为就绪态,内核就立刻保存当
前任务的上下文,把当前任务状态转换为阻塞态,同时切换到这个高优先级任务的上下文执
行。等待高优先级任务执行完才执行低优先级的任务。
相同优先级的多个任务之间,采用时间片轮转调度算法。轮转调度算法试图让优先级相
同的、处于就绪态的任务公平的分享CPU,系统让处于就绪态的优先级相同的一组任务依次
轮流执行预先确定长度的时间片。当一个任务到达时,它被排在轮转队列的后面,等待分配
给自己的时间片的到来,如果在时间片内没有运行完,则再等待属于自己的时间片的到来,
直到任务完成。
为了任务控制的灵活性,Wind内核还提供了动态优先级机制,任务的优先级在运行期间
可动态地变化。同时,为了防止优先级反转,还具有优先级继承机制,通过使用互斥信号量
可以防止高优先级的任务被迫等待一段不确定时间,直到一个低优先级任务完成。
看成“ucdos ”了
我一个朋友根据John P. Lehoczky的论文写了个硬实时内核,他说实时性达到vxworks的标准,我看到有个叫“死线”的东西,是什么
不懂,request english
铁血烈鹰 发表于 2012-1-28 18:29
我一个朋友根据John P. Lehoczky的论文写了个硬实时内核,他说实时性达到vxworks的标准,我看到有个叫“死线 ...
deadline?硬实时对中断的响应有硬性限制,规定必须在xxx时间内作出响应,应该就是这个deadline
hfly 发表于 2012-1-28 23:56
deadline?硬实时对中断的响应有硬性限制,规定必须在xxx时间内作出响应,应该就是这个deadline
deadline有什么用途?一般的task都是一个死循环,怎么才能算一个task完成?比如一个舵机接收操纵杆的控制,CPU要在任务中读取操纵杆的位置,调节舵机转角,这个要做成实时的。假设这个任务就是以下语句。
for(;;)
{
     UINT32 temp;
     temp = AdcRead();
     PwmOut(temp);
}
这种死循环是没有开始和结束的。
铁血烈鹰 发表于 2012-1-29 00:04
deadline有什么用途?一般的task都是一个死循环,怎么才能算一个task完成?比如一个舵机接收操纵杆的控制 ...
中断啊兄弟,你见过中断处理函数是无限循环的吗?
你这个不是中断处理函数,是任务函数了。处理器在执行这个主任务循环时
操纵杆产生一个中断,处理器在一定时间内响应中断调用处理函数读取转角,偏转陀机,
再回到主任务循环,大概这样
你可能弄混了中断处理函数和主任务循环了
hfly 发表于 2012-1-29 00:18
中断啊兄弟,你见过中断处理函数是无限循环的吗?
你这个不是中断处理函数,是任务函数了。处理器在执行 ...
一般中断函数都是后台,只是发送一个标志,操纵杆是模拟的,一般在任务里面轮询ADC状态,就能判断杆的位置