微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 带信号量和抢占式的中断调度的mini操作系统(基于8051)

带信号量和抢占式的中断调度的mini操作系统(基于8051)

时间:08-10 来源:互联网 点击:

总结:
在51单片机上实现操作系统是我们不常讨论的话题,其实操作系统还是有蛮大的用处的,上次我写了一篇文章:一个简单的51单片机操作系统的实现,连接是:http://www.51hei.com/mcu/1325.html,这篇其实是对上篇文章的补充.实现更多的一些功能,希望大家多多指点啊.

实现了任务的互斥,使得两个任务之间能够互斥运行,但是不能是两个以上,因为系统采用的是抢占式的中断调度,所以两个以上任务公用一个信号量,会出现优先级较低的那个任务出现饥饿的情况。
任务的实时性是很有保障的,因为内部函数比较简单,所以不存在嵌套中断的说法。
计算一下程序使用的RAM,一共使用大概101字节,剩余107字节可用,感觉还不错.
现在已经成功地实现信号量的功能。
剩下的还有邮箱、事件、内存等等了,不过由于8051RAM空间还是小了些,如果能扩充到4KB以上,发展潜力倒是会有很大的提高,不过外置RAM肯定速度上比不了内置的。
自己动手做51操作系统现在暂时告一段落,操作系统还是在片上资源丰富的系统上用比较好,不过STC的那个最NB的STC90C516AD拥有4KB的RAM和62KB的ROM用起来也可以的。价格也不贵,有空再去尝试...
当任务多了的时候,任务的配置模块也很多,RAM里面84%以上的空间都是用于任务的各种属性的配置,包括任务堆栈和任务的互斥。
希望接下来的复习能够更加认真!!!现在算是了却了我内心中的一桩心愿吧,真正实现了自己的操作系统!!!(功能匮乏,只有进程调度和互斥实现)

现在我才知道链表的操作是多么地耗费内存.创建一个指针就要3个字节,如果搞个链表出来,包括结构体,在资源不那么丰富的8051上(操作系统中),简直是宰牛用杀鸡刀,完全吃不消.但是如果是AVR或者ARM等片上资源丰富的单片机,那就不存在了.

为什么手机的操作系统里面一个安装文件动不动就几MB的大小,为什么Android中的程序动不动就占用几MB的内存?

这就和操作系统有很大关系了,创建一个任务,给它定义进程控制块,堆栈,还要包括它的GUI,别看图形界面特别简单,实际上采用图形界面还是相当吃内存的.在进程切换中,保存堆栈和一些进程信息,这又得占用一部分内存.Android因为采用虚拟机的缘故,这虚拟机它也得吃内存啊,开个程序就有个虚拟机跟着,速度当然不如symbian了.可惜symbian内存和cpu的频率比较低...

所以内存占用和系统任务的个数是线性关系的.当某个程序比较大,它占用内存越多,而且可能会频繁地读取内存,这样就会造成其它程序速度变慢.这就是为什么在听歌的时候,上网有时会有点卡的原因之一.

系统启动的时候,会把程序加载进入内存中,当需要加载的程序数量过多时,自然就会比较卡.所以开机的时候会有一段延迟.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top