搜索
bottom↓
回复: 34

djyos的调度算法天然匹配多核系统

[复制链接]

出0入0汤圆

发表于 2009-5-17 15:36:07 | 显示全部楼层 |阅读模式
众多周知,目前CPU正往多核化发展,除通用CPU外,嵌入式CPU甚至DSP也是如此,比如ADI公司的blackfin561就是一颗只有几十K内存的双核DSP。如何提高多核系统的效率,提高CPU的并行度,是多核世界面临的一个极具挑战的问题。传统操作系统下,要提高多核计算并行度,需要非常有技巧地操纵多线程编程。都江堰操作系统的出现,使这一难题迎刃而解,即使一个完全不知道线程为何物的程序员,也可以轻易编写出优异的多核应用程序。djyos有计划移植到blackfin561上,有望成为第一个在只有几十K内存的CPU上实现对双核的完美支持的RTOS。
点击下载全文:
点击此处下载 ourdev_445520.pdf(文件大小:146K) (原文件名:天然的多核操作系统.pdf)

出0入0汤圆

发表于 2009-5-17 16:04:16 | 显示全部楼层
mark   看看

出0入0汤圆

发表于 2009-5-17 16:14:23 | 显示全部楼层
LZ大哥,能弄个STM32上的版本不,也学习一下

出0入0汤圆

发表于 2009-5-17 16:26:41 | 显示全部楼层
建议楼主挑坛里最常见的AVR移植一下,blackfin受众太小

出0入0汤圆

 楼主| 发表于 2009-5-17 16:52:27 | 显示全部楼层
业余搞,要工作,没时间啊,blackfin561也只是计划,不知道什么时候能实现,移植到561,主要是体现djyos的多核优势。
希望能有热心人把它移植到stm32上,至于avr,有些型号只有1、2K的ram,运行不了djyos啊。

出0入0汤圆

发表于 2009-5-17 17:25:41 | 显示全部楼层
多核啊,电子产品都向多核迈进?

出0入0汤圆

发表于 2009-5-17 18:12:10 | 显示全部楼层
感觉没本质上差别,让内核以事件启动线程,和由程序自己创建一个线程并在某个事件上等待,都一样,只是由谁来做这件事。

文档里那个acrobat的例子也不恰当,acrobat的转换其实是通过它的虚拟打印机驱动进行的,打印机本身是属于必须独占处理的资源,所以是不做多线程处理的(没意义的),除非adobe放弃使用pdf打印机进行转换的做法。

另外,在现代多处理器的OS中,多核的调度机制是比较复杂的(其实进程调度本身就挺复杂的),受进程不断的创建、挂起、结束,各个处理器的负载不会按绝对平均进行分配的,因为重新分配各处理器所拥有的进程是很消耗时间的操作,一般会结合某个阈值来判断负载差异是否过大。

出0入0汤圆

 楼主| 发表于 2009-5-17 18:32:09 | 显示全部楼层
楼上并没有看到事物的本质。
    事物的本质在于,传统操作系统的调度目标是线程,具体线程必定绑定在某一个CPU核上,而线程由应用程序创建,因此,多核的分配是由应用程序完成的。同一类型的事件频繁发生的话,也只能由程序员预先创建的线程慢慢地处理。
    而djyos的调度,是决定哪一个事件应该被处理,因此,同一类型的事件,如果频繁发生,完全可以分配多个分别属于不同CPU核的线程去处理它,而且线程数量不受限制。传统的方法根本做不到这点的。
    更进一步地,djyos中多核调度这种复杂的东西,完全由操作系统完成了,应用程序不但感觉不到多核调度的复杂性,就连线程知识都不需要。

出0入0汤圆

 楼主| 发表于 2009-5-17 18:51:55 | 显示全部楼层
6楼还偷换了一个概念:设备独占==CPU核独占。
    在传统操作系统中,确实有:设备独占==单线程==CPU核独占。
    但是在djyos中没有这个限制,只要打印事件频繁发生,单核忙不过来,就可能分配多个cpu核给它,而程序员浑然不知有多个cpu核在为他服务。注意,是把cpu核分配给事件,不是把线程切换到新的cpu核上。
    在pdf转换时,是否选择创建taggs,转换时间能差几倍。创建taggs带来的大量运算,总不能说是要使用独占设备造成的吧。

出0入0汤圆

发表于 2009-5-17 20:22:37 | 显示全部楼层
区别不大,我知道你是以事件为调度的依据,但每个事件仍然相当于一个进程,这在你说的传统os中,就相当于要求程序员为每个事件建立一个线程的效果是一样的。
而且按你的设计,如果程序员不关心事件的发生先后(或者说调度的先后),那还会产生同步问题,所以很多时候仍需要程序员关心调度的同步问题。
设备独占是因为设备本身是不可并发执行的,即使你有一堆的高速cpu,你的打印机也只有一个(而且是个慢速设备),总不能让打印机先出A文档的第一页,再出B文档的第二页这样交叉出纸吧?

出0入0汤圆

 楼主| 发表于 2009-5-17 20:43:19 | 显示全部楼层
那么,生成tags需要几倍的时间,是因为要独占的打印机慢还是可以并行的计算量大?输出到打印机上的内容可没有丝毫的变化哦。
物理打印机确实需要打印完第一页才能打印第二页,这等同于用内存缓存的模拟打印机也要先生成第一页才生成第二页吗?
关键仍然在于,写adobe打印机的人,没有预先在不同cpu核上创建多线程,而windows的一线程为调度目标的算法对此也无能为力。
djyos不同之处在于,如果操作系统看到有打印事件积压的话,就会自动在空闲的核上为它增加一个线程,直到占满所有cpu核,这个过程应用程序根本不知道。

出0入0汤圆

发表于 2009-5-17 21:30:57 | 显示全部楼层
“事物的本质在于,传统操作系统的调度目标是线程,具体线程必定绑定在某一个CPU核上,而线程由应用程序创建”

线程迁移、进程迁移可是很早就出现了的:线程的运行周期是由调度器决定的,它既可以在CPU0上运行,过一定时刻它也有可能在CPU1上运行。

多核编程和传统编程不一样的地方:
把原来由一个线程顺序执行的工作流分散为由各个并发的线程执行(在单核中,并发的线程实际上依然是依次地使用CPU,并不会提升效率)。多核的问题不是事件的问题,而是如何把工作流分散成数个独立工作流的问题。即使基于事件的调度,也需要真实的获得事件的处理线程。

不知道djyos的技术指标如何?实时性?系统适用能力?
既然事件(还是事件处理线程?)是os自己产生的,那么这个os肯定是依赖于动态内存分配器。那么它最小的内存占用是多少?类似一些4k,8k,16k sram的arm7,cortex-m3/m0芯片,它使能跑得起来吗?

出0入0汤圆

 楼主| 发表于 2009-5-19 17:25:36 | 显示全部楼层
djyos运行于单片机模式时,如果没有文件系统,自身大概需要5K ram,有文件系统时,大概要16Kram。
另外,djyos有一个优秀的malloc函数,在不发生页面交换(单片机本来就没有)的情况下,执行时间是快速而且可预测的,可以满足RTOS的要求。

djyos不是通过线程迁移来实现多核支持的,线程迁移的执行时间并不确定,不符合RTOS的要求。

传统操作系统中,把任务从一个线程顺序执行的工作流分散为由各个并发的线程执行的过程,主要由应用程序决策的,程序员不仅要很熟悉线程技术,要要掌握决策技巧。
而djyos中,这个工作是由操作系统决策的,程序员可以不知道线程的存在。

出0入0汤圆

发表于 2009-5-19 17:38:03 | 显示全部楼层
可以mark了,这种争论越多,概念越清楚。

出0入0汤圆

发表于 2009-5-22 20:57:07 | 显示全部楼层
“线程迁移的执行时间并不确定,不符合RTOS的要求”

线程迁移时间是确定的,= 上下文切换时间 + 调度CPU时间

出0入0汤圆

 楼主| 发表于 2009-5-22 21:20:09 | 显示全部楼层
多核有多种,有共享存储器的,有不共享的,对于不共享的来说,还要拷贝数据,你知道有多少数据要拷贝吗?所以说不确定。

出0入0汤圆

发表于 2009-5-22 22:02:45 | 显示全部楼层
发现讨论的多核概念完全不是一个,但blackfin561却是一个对称多核(SMP)

异构多核瓶颈在核间通信的效率上,或者可以相互看成一个外部设备来对待,大多数情况下每个核跑的操作系统是不一样的。

出0入0汤圆

发表于 2010-7-10 12:18:32 | 显示全部楼层
有些stm32型号只有1、2K的ram,运行不了djyos?选这个stm32f103ze 64K(ram) 512k(flash)

出0入0汤圆

发表于 2010-7-11 23:20:52 | 显示全部楼层
楼主根本不具备讨论多核的基础知识,所谓“天然匹配多核”只是广告用语而已,鉴定完毕。
-----------------------------------------------
ps.
还是忍不住给楼主做一下科普扫盲:
像11楼xz6000说的那样多核系统区别于单核系统主要在于“原来由一个线程顺序执行的工作流分散为由各个并发的线程执行”。
举个例子:从1累加到10000:
对于单核,那就是该线程占用单一的CPU完成从1到10000的累加;
对于多核,系统要要做的,是从算法上面对这个任务进行分解,分解成n个小任务,比如从1加到1000,从1001加到2000……然后把这些小任务再分配到n个CPU上面,这样才是真正的多核,这个分解的过程,是编译器或者操作系统完成的,与程序员无关;而不是说,我1到10000的累加仍然是在单个CPU上运行。
-----------------------------------------------
楼主觉得我同时开10个任务,每个任务被分配到一个CPU上,这就叫“天然匹配多核”了,这只能说明你无知,另外,还无畏

出0入0汤圆

发表于 2010-7-12 09:37:57 | 显示全部楼层
不用跟“蛙眼”一般见识。。。听不进的

出0入0汤圆

发表于 2010-7-12 10:18:01 | 显示全部楼层
引用作者的话“有兴趣的读者,可以做一个试验,在双核CPU 上用adobe 的软件把一个很大的word 文档转换成pdf 文档,在转换过程中,如果没有其他程序在运行,CPU 的占用率将一直保持在51%左右,就是说,一个CPU 在一直100%运转,另一个则一直闲着。用户呢?只能眼巴巴地等待那一个CPU 核把活干完。”对楼主《天然的多核操作系统.pdf》这篇文章中这段话持怀疑态度,我想操作系统和相关软件不会这么傻吧,明明有2个核的CPU不用,用一个。
我的测试环境是Windows XP SP2,HP 酷睿2 双核笔记本电脑。测试结果如下:

(原文件名:CPU使用情况.jpg)
当CPU使用率在74%时,2个CPU都在运行。

   另外,djyos的调度算法和目前已经在各个OS中广泛应用的SMP技术相似,SMP的全称是"对称多处理"(Symmetrical Multi-Processing)技术。在这种架构中,一台电脑不再由单个CPU组成,而同时由多个处理器运行操作系统的单一复本,并共享内存和一台计算机的其他资源。虽然同时使用多个CPU,但是从管理的角度来看,它们的表现就像一台单机一样。系统将任务队列对称地分布于多个CPU之上,从而极大地提高了整个系统的数据处理能力。所有的处理器都可以平等地访问内存、I/O和外部中断。在对称多处理系统中,系统资源被系统中所有CPU共享,工作负载能够均匀地分配到所有可用处理器之上。

出0入0汤圆

发表于 2010-7-12 12:05:14 | 显示全部楼层
在典型的n核CPU系统中: CPU就相当于一条由n个工人组成的流水生产线;每个CPU核就对应于该项生产线的的一位工人,而程序(线程)就是这条生产线上的加工产品.在这条流水线上,一个完整的产品,是由每个工人共同分时合作(线程切换)完成.在这条由n个工人的流水线上(n核CPU),会存在n个产品同时加工(n个线程并发执行):在同一时刻上,流水线上的每个工人有自己的那一部分工作要完成.

出0入0汤圆

发表于 2010-7-12 13:39:26 | 显示全部楼层
楼主多跟ffxz学习,做个实际应用出来。不要老说没空。谢谢

出0入0汤圆

发表于 2010-7-19 18:24:25 | 显示全部楼层
楼主同志,你所说的“事件”本质就是线程!!你绕了一个圈还是回到了原点。
操作系统发展了几十年,技术已经相当的成熟,你的创新精神值得鼓励,但我建议还是多看一些技术书。

出0入0汤圆

发表于 2010-7-20 13:08:27 | 显示全部楼层
坦白地讲,在我接触ucos之前,我对操作系统无任何基础知识。后来由于工作需要使用ucos,于是买了本ucos发明者的书来看,我只花了一星期业余时间就把此书阅读完毕,并达到应用的目的,后来还完成了对该操作系统的改造。通过阅读那本书,使我不仅对RTOS有了深刻的认识,对操作系统这个概念理解也更加深刻了。
   由于DJYOS在网上的大力推广,我接触到了DJYOS,怀着好奇心到官网下了一些资料来看。我明白作者花了很大的心思和汗水来完成这些文档,可是我还是不得不说,我真的没搞明白DJYOS的的核心,所以无法深入理解它。所以,我建议作者可以学学老外,如何深入浅出地表达一个操作系统。

出0入0汤圆

发表于 2010-7-24 11:39:24 | 显示全部楼层
有问题可以讨论,但也没必要直接否认DJYOS吧,更没必要把马夹换来换去,
BS那些19楼自以为很NB的马夹,自以为懂得算术就天下无敌了?其实只是一堆大便而已。

出0入0汤圆

发表于 2010-7-26 11:34:36 | 显示全部楼层
唉,看到此只剩下摇头了,一直不喜欢的是这个系统的开发人员在表述事物时的用词。

出0入0汤圆

发表于 2010-10-14 20:37:06 | 显示全部楼层
19楼的说法不正确,你扫盲,被你越扫越盲。
我们现在的PC处理器是SMP多核,目前的windows,linux,等操作系统都支持多核,但没有你说的那么牛,都不能自动地把类似的计算问题分解掉。
目前的解决办法都是针对不同的计算问题,科学家自己设计多线程的算法来完成计算的。
而楼主所说的支持多核,正是指诸如windows,linux,这样的多核支持。

出0入0汤圆

发表于 2010-10-22 20:33:05 | 显示全部楼层
回复【28楼】9509238
-----------------------------------------------------------------------

19楼说的是研究前沿,几乎全自动的任务分解和负载均衡

28楼说的是现实情况,几乎全手工的任务分解和负载均衡

出0入0汤圆

发表于 2010-10-22 20:48:12 | 显示全部楼层
口号喊得很响!
出不出来是一回事情,请参考“GUI闭关”事件!

出0入0汤圆

 楼主| 发表于 2010-10-23 23:09:47 | 显示全部楼层
回复【30楼】zlei
口号喊得很响!
出不出来是一回事情,请参考“gui闭关”事件!
-----------------------------------------------------------------------

不要臆断哦,不会让所有关心爱护DJYOS人失望的。

出0入0汤圆

发表于 2010-10-27 15:30:20 | 显示全部楼层
java引发一个革_命,这个革_命的路线图是这样的

一次编写,到处运行(跨平台)->虚拟程序运行环境->虚拟机->云计算

这个革_命是这样说的:XXX是有限的,人的思维是无限的,(这里XXX指任何东西)因此,硬件束缚软件的时代过去了,现在是软件来规定硬件的发展的时候了。

我想作者的出发点就是这样的,应用而非硬件。因此不管是骡子还是马,先搞出来再说。

但是看了作者所有的文章,像是在卖东西,只说东西如何如何好,所以容易引起争论。

出0入0汤圆

发表于 2010-10-28 20:13:43 | 显示全部楼层
可以mark了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 12:56

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表