哦,又一个操作系统,且慢这样说!【恢复】
都江堰操作系统(简称djyos)是一个嵌入式实时操作系统,但不是“又一个操作系统”,它是一个全新思路的操作系统。有兴趣的,去www.djyos.com逛逛,所有含详尽注释的代码和文档,全部在那里共享,你一定会有收获的。 djyos操作系统是以事件为核心进行调度的,这种调度策略使程序员可以按人类认知事物的习惯而不是计算机的习惯来编程。
普通操作系统中,调度是以线程为核心的,事件被作为线程的数据,标榜为“事件触发”的软件模型,也是由线程在一旁候着,待特定事件发生时线程恢复运行并把它作为输入数据加以处理。
以事件为核心的调度,则像设备和内存一样,把线程作为处理事件所需要的资源看待,当某事件需要处理时,分配或者创建一个线程给该事件,并启动该线程处理事件。
djyos虽然刚出生,但已经不仅仅是一个内核了,是一个初具雏形的操作系统,目前包括以下模块:
抢占式多事件调度系统
内存管理模块
内存池管理模块
资源管理模块
中断管理模块
锁(含信号量和互斥量)模块,支持优先级继承
泛设备管理模块
文件系统模块
含擦除平衡的flash文件系统驱动模块
看门狗模块
约400页的说明文档,各模块详情请看此文档以及共享之代码
如果你觉得值得一读的话,别忘了帮忙抓抓虫子哦!论坛里有一个“臭虫榜”,就是为你准备的。
把这个408页的文档转换成pdf,整整花了2小时20分钟,谁有更快一些的方法,且转换出来的文档带左侧书签。 比较新颖,不知道能不能用到单片机中呢?我大概看了一下文档,好像主要面对一些大RAM和Flash的应用 70年代以前确立的计算机科学,至少到目前为止是不可撼动的,djyos不可能违背,djyos中并行处理事件也是用多线程技术实现的。在djyos中,虽然接受调度的是事件,但调度过程却是由线程代理的,只是事件并不知道是由线程在处理它,这为日后计算机理论有突破,有新的机制替代线程的话,我们可以用新的机制处理线程,而调度内核无需改变。
因此,事件被阻塞的话,实际上是线程代理事件被阻塞。只有在传统操作系统中,事件实际上是作为线程的数据(或称资源)而存在,才会有把数据(事件)广播给多个线程的概念,而djyos中,线程是事件的资源(独占资源),只有线程被分配给多个事件(不同时)的概念。
既然线程是资源,就有创建资源的时机的问题,就像在传统RTOS中,实时线程使用的内存不会用动态分配一样,djyos中紧急事件使用的线程也是预先创建好的,事件发生后立即可以分配。但这个过程是操作系统内部完成的,程序员完全看不到线程的踪迹。 支持一下,略看了一下说明,单这份文档就该顶一下。以后再拜读…… 有点明白了。在以前的rtos中,需要先指定哪些任务在等什么事件,当事件发生后,要先就绪它们,再进行调度。而在丁家宜os中,优先级直接关联到事件上,发生事件后再为它搭出一个线程上下文来执行
听起来很新颖,值得好好琢磨一下。比如,当一个事件处理线程执行到一半,如果需要等待另一个事件时;某个“广播”类型的事件(传统os会就绪多个等待的任务)
以前os上的“生产者-消费者”,“多读单写锁”等问题,在这里不知会有何种新的诠释
抽时间认真读一读楼主的文档,在这里先为楼主的执着与不懈表示敬意! VB是在操作系统之上做了一层壳,发生事件——创建线程,或者创建线程(休眠)——发生事件——唤醒线程,而操作系统并不知道事件的存在,它调度的所有依据,还是线程。而djyos操作系统调度器根本不管线程,它只管哪个事件需要被处理,当前应该处理哪个事件,哪些事件应该排队等候处理。
可以这样形容,VB是在以线程为调度核心的系统上,做了一层包装来模拟djyos的行为,当然,这种模拟并不全面。 VB也有一个很舒服的事件驱动机制,它相当于传统基于进程/线程操作系统的一个“高级编程接口”,MFC也有相似特点
很多操作系统可能也提供类似的“高级编程接口”来模拟出事件驱动的API。这种模拟的本质是以基于中断系统的调度理念来保证的
楼主的事件驱动与这种“高级编程接口”类的事件驱动框架相比,有没有理念上的质的不同呢? 以事件为线索调度,确实是一个创新,好好拜读一下 怎么不上传上来? 作者辛苦了 等待学习!!!!!!!!! 看上去很深奥的样子~~~~~~~~
不是很懂~~~学习!!! 用 Adobe Acrobat 8 Professional 有合并文档功能 Sorry! da jiang you 听这个名字都江堰,倍感亲切,再次顶一下。 佩服楼主,支持一下,等你源码公布,我会成为你的一个免费测试人员。 LZ是很务实那种,感觉.
本贴被 cody 编辑过,最后修改时间:2009-01-08,20:09:38. 文章正在拜读,感觉LZ说的很有道理。特别对当下中国电子设计方面的探讨,都说到点子的了。 回楼上:谢谢好意,源码过两天就可以发布,初期可能会有很多bug。
至于硬件,不希望djyos依赖特定硬件,画这个图,唯一的理由就是我需要有一个平台调试,而且我又刚好熟悉44b0,如此而已。
项目从04年就开始了,那时买个ARM开发板很贵的,让笔者服务的公司的供应商制一两块板子却很偏移。
共享图纸的目的,只是想让大家在读代码与硬件相关的部分时,有个参考。
如你所提,有人可能打不开protel格式的文件,晚上回家我就把它转成pdf上传,只要方便大家就好。
本贴被 djyos 编辑过,最后修改时间:2009-01-08,14:55:20. 楼主你好,到你的主页拜读了一下,对这个操作系统很感兴趣,若源码可发布时我也愿意参与测试.
硬件方面现时你是用 Protel 设计的吧? 这方面我想提一点意见. 开源项目最好就连开发工具,平台等都采用开源的. 这样有利扩大参与面, 不会因为没有授权的软/硬件而没法加入.
国外的一个开源的EDA软件 KiCAD 是很不错的, 可 Windows/ Linux 跨平台运行. 我本身是水平很低的业余电子爱好者, 也能很快的上手. 网址是 http://www.lis.inpg.fr/realise_au_lis/kicad/
我不知现时 KiCAD 可否汇入 Protel 格式, 若可以把电路图转成 PDF, 我可代重绘线路图. 是不是类似于面向对象的思想,对操作系统这块不是很了解。 回16楼:至少需要几十K RAM和100K以上的flash,有计划移植到cortex-m3上,太低档的单片机则不行。
回17楼:这不是想远了,是“事件的产生和事件的处理互相独立”的设计思想下的必然结果。 这为日后计算机理论有突破,有新的机制替代线程的话,我们可以用新的机制处理线程,而调度内核无需改变。
------------------------------------
想的有点远了。
处理每个事件都要切线程吗?
页:
[1]