打印

关于51多任务堆栈

[复制链接]
3277|10
手机看帖
扫描二维码
随时随地手机跟帖
沙发
冷漠|  楼主 | 2010-7-20 18:36 | 只看该作者
本帖最后由 冷漠 于 2010-7-22 09:19 编辑



……中断可能引发任务切换。当一个进程被中断时,该进程的进程表项中将建立一个堆栈,再次启动该进程所需的全部信息都放在这个新堆栈上。通过以下操作可以再次启动任何一个进程:将栈指针指向其进程表项,然后执行一个指令序列来恢复CPU寄存器值,最后以一条iretd指令结束。调度程序决定堆栈指向哪个进程表项。


内核本身在运行时也可能发生中断。CPU检测到中断后将
使用内核栈,而不是进程表中
的堆栈。这样便允许中断嵌套。当后来的中断服务例程结束后,在它之前执行的中断服务例程就可以运行直到结束。在所有中断都被处理之后则可以重启动一个进程。



——摘自William   Stallings《操作系统——内核与设计原理》(第四版)


51操作系统正是这样运行的。

看看一个51多任务操作系统中有几个(私有)堆栈?以及它们如何运行操作的:


51多任务操作系统中,每个任务都可以享有一个公有堆栈和一个私有堆栈,当该任务处于运行态时,它使用的是公用(动态)堆栈 SP 。就是人们习惯认为的那个51内部只有的唯一的堆栈;
        呵,只有SP所指向的堆栈才是公有堆栈区。



当一个运行态任务被迫进入阻塞态或者转换进入就绪态时,它都带有一个(退出活动态时)系统为自己建立的那个静态新堆栈(私有);
——它存放着该任务被再次启动(进入运行态)所需要的全部信息。
       呵,静态堆栈是非SP指向,所以称它为私有以和公有对应。


例如一个没有外部XDATA配置的 8031,其128字节的DATA空间内可以建立15个任务,每任务具有一个私有堆栈!见图1:


显然,系统任务越多,私有堆栈占用DATA 越多,留下的公有堆栈深度越小。

杨屹老师曾经写了一个uC/OS到51的移植程序,见任哲编著的《 嵌入式实时操作系统uC/OS II 原理及应用 》P186:


由于51系列单片机的片内RAM 极其有限,所以就只能把应用程序中各个任务堆栈的内容放在片外RAM中,而只在片内RAM中设置一个公有的堆栈。

如果把片外RAM中用来存放任务堆栈内容的区域叫做任务堆栈映像,而片内RAM中的公用堆栈叫做系统堆栈,那么……

   

老师的方法是把中止运行态的当前任务堆栈全部换出到XDATA段,使得尽可能多的内部RAM做公有系统堆栈,这就叫做以时间换空间吧。

呵呵,系统,公有,私有,映像,各自叫法不同而已。没有硬性规定。还有静态、动态,这些操作系统概念,中文怎么翻译才算标准,还没出炉;读者自己明白就行了。






























使用特权

评论回复
板凳
冷漠|  楼主 | 2010-7-20 18:36 | 只看该作者
本帖最后由 冷漠 于 2010-7-22 12:18 编辑

无所谓对错,谁觉得合适,以他自己的名字任命好了,例如A(yb)氏无属性堆栈;和冷漠有什么关系?呵。



待续……

使用特权

评论回复
地板
冷漠|  楼主 | 2010-7-21 13:41 | 只看该作者
关于RTX51操作系统多任务虚拟机堆栈,所长以后请教ayb老师就行了。21IC高水平的人多得是。

冷漠还没入门呢。

使用特权

评论回复
5
ayb_ice| | 2010-7-21 14:07 | 只看该作者
太极张三丰

使用特权

评论回复
6
風神| | 2010-7-21 21:15 | 只看该作者
围观继续。认真听讲。冷漠老师继续。。。

使用特权

评论回复
7
bpwater| | 2010-7-21 23:04 | 只看该作者
围观的群众,情绪稳定

使用特权

评论回复
8
xuyiyi| | 2010-7-22 09:11 | 只看该作者
拿只小板凳坐着,  认真听冷漠老师讲课。

使用特权

评论回复
9
冷漠|  楼主 | 2010-7-22 09:40 | 只看该作者

请ayb 和highgear 老师先上来讲,冷漠还没入门呢。

本帖最后由 冷漠 于 2010-7-22 12:23 编辑

冷漠若再继续的话,岂不是要怠慢了ayb_ice 老师和highgear还有所长? 冷漠这么无所顾忌地讲,把ayb_ice 和所长和highgear  往哪放?

        最厌恶的事:别人在上面讲,所长等等就喋喋不休在下面“点评”,……这讲错了,那是胡诌,误导,语病,断章取义……
         没关系,那请所长,highgear 或者 ayb 上台来讲;真的请你们了,结果又缩在下面没了动静 !这种人……

        冷漠发现最近几天几位老师眼睛都有点发绿,脸色发紫,真是冷漠忽略了没关照到,冷漠赶紧让出讲台,请他们几位前辈上来讲吧,……
        茶已经沏好多时了,……

使用特权

评论回复
10
ayb_ice| | 2010-7-22 09:45 | 只看该作者
有人要疯掉了

使用特权

评论回复
11
kobesff| | 2011-4-14 00:00 | 只看该作者
最近在学51多任务。汇编。

没连载完?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:要想让别人关照自己的自尊,首先自己先要有所成就才行。

17

主题

921

帖子

4

粉丝