hjz007 发表于 2014-2-8 20:03

本帖最后由 hjz007 于 2014-2-8 20:04 编辑

我想OS的基本模型样子就有了。
后面的都是写繁杂的东西了,基本上是用C语言写的。
其中包括信号量,标识位,互斥量,用户接口调用的原子性操作,任务的调度等,非常复杂(不是代码多,而是其间的关系非常微妙,也就是说软件耦合度很高,逻辑关系非常复杂,已经不可能像任务调度一样,理出个简洁的脉络),我打算用PDF来描述,等我写好以后贴出来。

ballack_linux 发表于 2014-2-8 23:08

呵呵 有想法

shuidi_wangdan 发表于 2014-2-11 15:07

真心崇拜!

hjz007 发表于 2014-2-11 16:09

当然一般的,在ISR里,是不能使用阻塞式函数.
不过,在HOS里,你可以使用HOSSemPost等类似函数。在HOS里,HOSSemPost函数会判断自己是否运行在ISR还是常规任务环境下,从而执行不同的操作,比如在ISR里,HOSSemPost就不会再触发OS调用的中断,这样可以防止中断再次触发中断...。
这样做和其它OS的不同是,在HOS里,这样做的目的是为了简化接口。

dota_yy 发表于 2014-2-11 16:52

08211004kun 发表于 2014-2-11 22:23

牛x

349264710 发表于 2014-2-12 21:46

hjz007 发表于 2014-2-6 10:53 static/image/common/back.gif
先从最简单的开始吧
OS的本质就是任务调度。即把一个CPU虚拟成多个CPU,各个CPU之间尽量独立,最好是谁都不 ...

楼主,问个困扰我很久的问题,任务切换时除了要保存寄存器的值到任务栈中,还要保存PC、SP指针及任务的局部变量,请问OS是怎么知道哪些变量需要保存在任务栈中呢?

hjz007 发表于 2014-2-12 23:12

局部变量是C编译器通过堆栈来分配的。OS不需要关心。

349264710 发表于 2014-2-13 12:49

hjz007 发表于 2014-2-12 23:12 static/image/common/back.gif
局部变量是C编译器通过堆栈来分配的。OS不需要关心。

照这么说,任务栈的大小应该是固定的了,就是保存寄存器、PC、SP就可以了,但实际上答案是否定的,函数中的局部变量确实是编译器分配的,但程序正在函数内部执行,这时调用任务切换函数,切换任务,离开该函数体,这时操作系统应该还要保存该函数的局部变量,那操作系统是如何知道离开该函数需要保存哪些局部变量呢?

zxf0168 发表于 2014-2-13 15:03

不错,学习了

sdnumcu 发表于 2014-2-13 15:05

不错,比春晚靠谱多了

hjz007 发表于 2014-2-13 17:41

349264710 发表于 2014-2-13 12:49 static/image/common/back.gif
照这么说,任务栈的大小应该是固定的了,就是保存寄存器、PC、SP就可以了,但实际上答案是否定的,函数中 ...

在放变量的堆栈后面入栈的就是寄存器了,OS返回的时候,存放变量的堆栈又没改变过。

你买一套我的开发板吧,我带你入行啊。呵呵....

john_lee 发表于 2014-2-13 19:35

349264710 发表于 2014-2-13 12:49 static/image/common/back.gif
照这么说,任务栈的大小应该是固定的了,就是保存寄存器、PC、SP就可以了,但实际上答案是否定的,函数中 ...

有个术语叫做“context”,看看wikipedia上的资料吧。

349264710 发表于 2014-2-14 00:03

hjz007 发表于 2014-2-13 17:41 static/image/common/back.gif
在放变量的堆栈后面入栈的就是寄存器了,OS返回的时候,存放变量的堆栈又没改变过。

你买一套我的开发板 ...

OS返回的时候,存放变量的堆栈又没改变过,既然存放变量的栈没有改变过,又何来之保存任务的局部变量?直接恢复SP指针就行了,另外,当离开函数时,编译器会释放栈,而栈是存放局部变量的,也就是说,正在执行函数时,发生任务切换,离开函数体,由于离开了函数体,编译器可能在其他任务中使用函数体的栈(即存放变量的栈还是会变化的),如果OS不保护栈中的局部变量,返回时将出现错误,所以我觉得要把函数中使用的局部变量都要保存在任务栈中。不知道我这样理解对不对。

yanwenbin33 发表于 2014-2-16 12:42

这种高科技的东西,留下。。。。

黑小子mxx 发表于 2014-3-5 14:52

mark

andywyt 发表于 2014-3-5 15:39

学习了。,,,非常感谢

charrijon 发表于 2014-3-7 09:50

很有感触,下次有机会我也上传一个全C代码写的操作系统

深夜星空 发表于 2014-3-7 17:54

自己写OS的都是大牛啊

情意深深 发表于 2021-3-18 15:08

插眼
页: 1 [2] 3
查看完整版本: 用一个春节写完一个RTOS,稳定+可靠【连载】