内容纲要
为提升学习效果,建议在阅读完题目后先自行尝试解答。
等待解答完毕之后,再与参考答案对照。参考答案并不一定准确,欢迎你提供自己不同的答案!
思考题一(答案获取码:1239)
假设系统中有资源A,只有任务B和中断C对资源A写访问。
为了避免写冲突,需要使用tTaskEnterCritical()/tTaskExitCritical()进行保护。请问中断C中是否需要在写过程中添加这种保护?()
- A、需要;
- B、不需要
思考题二(答案获取码:6237)
任务状态查询接口实现如下。请说明为什么要额外传入一个tTaskInfo结构变量,然后在tTaskEnterCritical()/tTaskExitCritical()将需要的信息从tTask结构中拷贝出来,而不是直接让调用者访问tTask结构;除了向调用者隐藏tTask的实现细节外,是否有其它原因?
void tTaskGetInfo (tTask *task, tTaskInfo *info) {
uint32_t *stackEnd;
// 进入临界区
uint32_t status = tTaskEnterCritical();
info->delayTicks = task->delayTicks; // 延时信息
info->prio = task->prio; // 任务优先级
info->state = task->state; // 任务状态
info->slice = task->slice; // 剩余时间片
info->suspendCount = task->suspendCount; // 被挂起的次数
info->stackSize = task->stackSize;
思考题三(答案获取码:5421)
请简述tinyOS中提供了哪几种任务删除方式,并解释删除过程原理?为什么要提供这两种删除方式?
答案获取
练习题的答案,请关注微信公众号i01ketang 01课堂,发送相应的答案获取码,即可获得。