嵌入式技术william hill官网
直播中

王尚岱

8年用户 1480经验值
擅长:电源/新能源
私信 关注
[问答]

请问一下RTThread是属于抢占式还是合作式的

一般的PC都是抢占式的,是中断实现的,rtthread有中断;
合作式的不会切换任务直到显式地yield,个人在使用rtthread时,遇到过没加rt_thread_mdelay就卡住的情况。
所以请问rtthread属于哪一类?
另外还有分时操作系统,它是不是与实时操作系统相对立,它们都属于抢占式吗,还是不一定

回帖(4)

王莉

2022-8-26 11:39:08
rtthread是抢占式的,当前线程的时间片用完时,就会进入多线程的调度,优先级高的线程一般会抢占CPU资源(当然,为了防止“饥饿”现象发生,可能有一些相应的算法优化)。抢占式的多线程切换是由系统完成的。合作式的目前我接触到的较多的是事件驱动系统,例如contiki,这类系统也可以执行多任务,多任务的切换需要用户自己在合适的地方加上任务切换语句。
分时系统指的是微观上分成很多时间片,多个任务轮流占用这些时间片运行,实现宏观上的并行效果。所以说rtthread也是一个分时系统。
实时操作系统一般来说,是和通用的操作系统分开来说,毕竟实时操作系统不像linux、windows功能那么复杂,实时操作系统可以说只实现了一个多任务系统必须的东西,因此在多任务运行的同时保证了任务的相对实时性。
举报

王尚岱

2022-8-26 11:39:24
谢谢详细地回答。我还有个问题:分时操作系统一定是抢占式的吗,合作式的算分时操作系统吗?
举报

王莉

2022-8-26 11:39:43
我无法很确定地给你答复,但我能以我见过地系统来说,目前我见过的无论是ucos、freertos还是rtthread这些实时系统,都是分时系统。
而像zigbee的osal系统、contiki-NG这些事件驱动系统,不是通过时间片轮转的方式调度的,自然就不是分时系统。
举报

李莉

2022-8-26 11:39:50
rt-thread是实时操作系统,线程有优先级,是抢占式的
举报

更多回帖

发帖
×
20
完善资料,
赚取积分