你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

自制简单OS(仅任务调度) 精华  

[复制链接]
QianFan 发布时间:2015-6-28 15:36
阅读主题, 点击返回1楼
收藏 8 评论93 发布时间:2015-6-28 15:36
93个回答
Mandelbrot_Set 回答时间:2015-6-30 10:50:48
QianFan 发表于 2015-6-29 21:40
Update:0.0.2

    改进taskCreate,不再使用malloc和free进行自动内存分配。

我又来了哈...
example1:
void sleep(int delayTicks)中
在if((taskList[pid]==NULL)||(pid==IDLE_PID)||(delayTicks==0))
                return ;
之前taskSwOn();之后产生调度
并不能确保taskList[pid]不是NULL(taskList[curpid]本不应该NULL.)
(调度后来了个changePid).
example2:
updateNextTask执行中产生调度,
每一个taskList[pid]都有被其它任务修改的可能,应该有风险.


星辰一方 回答时间:2015-6-30 11:19:26
路过……帮顶~
QianFan 回答时间:2015-6-30 11:54:01
Mandelbrot_Set 发表于 2015-6-30 10:50
我又来了哈...
example1:
void sleep(int delayTicks)中

看来确实有问题,changePid和sleep能够产生冲突。

比如有一任务Task1,task1Pid==1.
如果Task1调用了sleep将自己阻塞,而之后另一个任务(Task2)中使用了changePid(task1Pid,10)将task1的优先级改了,这样会立即发生新的任务调度。而之后的某一个时刻,由sleep导致Task1的阻塞被解除,这样也没法恢复了。应该是changePid惹的祸吧。


好多问题需要解决。。。思维不行啊,很多问题想不到。
感谢指正啊,非常感谢,你之前是不是做到这方面的东西呢?感觉想的好全面。
QianFan 回答时间:2015-6-30 12:45:21
Mandelbrot_Set 发表于 2015-6-30 10:50
我又来了哈...
example1:
void sleep(int delayTicks)中

请教个问题,比如当前OS的节拍数是100,有一个任务Task1,调用了自身的sleep,sleep的时间是1000个节拍。也就是到1100个节拍的时候这个任务应该被唤醒。

假设到了第200个OS节拍的时候,另一个任务Task2更改了Task1的优先级,将他的优先级提高了。你说这个时候是应该让Task1立即执行呢,还是到1100个节拍的时候才能再次执行?
Mandelbrot_Set 回答时间:2015-6-30 13:23:06
QianFan 发表于 2015-6-30 12:45
请教个问题,比如当前OS的节拍数是100,有一个任务Task1,调用了自身的sleep,sleep的时间是1000个节拍。 ...

我觉得Task1既然sleep(1000)了,那就应该有sleep(1000)的样子,在1100节拍之前就不应该是就绪状态吧...

Mandelbrot_Set 回答时间:2015-6-30 13:25:39
QianFan 发表于 2015-6-30 11:54
看来确实有问题,changePid和sleep能够产生冲突。

比如有一任务Task1,task1Pid==1.

以前在msp430g2553langchpad上DIY过os(参考了网上的代码,还没有独立完成的实力...)
功能远比上你这个.
chendiand 回答时间:2015-6-30 13:28:23
顶一个
QianFan 回答时间:2015-6-30 13:31:26
Mandelbrot_Set 发表于 2015-6-30 13:23
我觉得Task1既然sleep(1000)了,那就应该有sleep(1000)的样子,在1100节拍之前就不应该是就绪状态吧...

...

那还要大修一次了。
像这样一个函数一个函数的往上面添加,考虑的不全面啊
QianFan 回答时间:2015-6-30 13:32:19
Mandelbrot_Set 发表于 2015-6-30 13:25
以前在msp430g2553langchpad上DIY过os(参考了网上的代码,还没有独立完成的实力...)
功能远比上你这个. ...

果然是有经验了。还要帮忙多多的找bug,先谢过啦
Mandelbrot_Set 回答时间:2015-6-30 13:45:50
QianFan 发表于 2015-6-30 13:32
果然是有经验了。还要帮忙多多的找bug,先谢过啦

经验也说不上,玩现成的OS还是HARDFAULT天天见...

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版