2013年苹果秋季新品发布会官方视频原声(中文字幕)
作者 弯曲评论 | 2013-09-11 12:44 | 类型 新兴技术, 移动和设备, 行业动感 | Comments Off
我们是否真的需要大数据了嘛?
作者 陈怀临 | 2013-06-16 02:16 | 类型 大数据, 数据中心, 新兴技术, 科技普及 | Comments Off
国内开源的嵌入式实时Linux:XtimesLinux
作者 guohui703 | 2012-08-14 16:04 | 类型 新兴技术, 行业动感 | 17条用户评论 »
作者email:guohui703@163.com 引言: 采用抢占补丁的方式比双内核方式的一个最大优点在于其编程接口的统一性。在抢占补丁方式中,实时应用与非实时使用可以使用统一的Linux API接口,他们之间的通信方式仍然采用传统的进程间通信方式即可。抢占补丁方式可以实现软实时,在硬实时方面仍然能力不足。MontaVista公司为了实现硬实时,在抢占补丁的基础上使用较为复杂的技术比如将自旋锁改成互斥量、高精度定时器、中断线程化等机制,这些机制的修改涉及到驱动程序已有的运行机理,因此会影响到Linux内核的稳定性,这对于稳定性要求高的场合,比如无线通信以及电信级应用,并不合适。经过业界测试表明,MontavistaLinux对于硬实时系统并不合适。 RTLinux引领的双内核方式通过中断虚拟化的方式能够很好地实现硬实时,虽然其需要为实时任务专门设计一套编程接口,而且实时任务与非实时任务的通信也要使用的专门通信机制,但由于其硬实时性,在一些工业控制等实时要求高地领域有重要的应用之地。在双内核方式中,实时内核接管中断,而非实时内核(即Linux)使用一个软件标志位作为其虚拟中断,虚拟中断的方式把中断控制器完全交给了实时内核,因而能达到很好地实时响应性能。双内核方式除了编程接口的不统一之外,也还有其他不足之处,比如实时内核没有自己的内存管理功能,在内存的分配仍然依赖于Linux; 实时内核虽然接管了中断,但中断的现场仍然是Linux来保存和恢复的。可以说实时内核和非实时内核是紧密耦合的,这对于系统的维护以及稳定性非常不利。 RTLinux在07年被WindRiver收购后,在开源社区就变得不活跃了。不过RTLinux的变种RTAI仍然活跃于开源社区。RTAI是完全免费,开放的,不受RTLinux专利的限制。RTAI代表“Real-Time Application Interface”,它必须与Adeos补丁一起工作。Adeos实现了一个硬件抽象层,其最重要的功能仍然是中断虚拟化,不过它比RTlinux时代的中断虚拟化功能更加完善。硬件抽象层的存在以及其功能完善,使得实时内核和非实时内核之间由紧耦合关系变为松耦合关系,这对于系统的稳定性以及代码维护是非常重要的。硬件抽象层使得Linux所需的物理资源或者从硬件抽象层获得,或者直接访问硬件(针对于Linux专属设备),套用虚拟化术语,Linux已作为实时内核的客户操作系统被调度运行。 RTAI/ADEOS 将Linux作为客户操作系统运行于实时内核之上的方式实际上是嵌入式虚拟化的内容。嵌入式虚拟化(embedded virtualization,又名Hypervisor)是最近几年热门的研究内容,它是为了弥补传统操作系统在实时性、安全性、多核扩展方面的不足而提出的。针对系统实时性的Hypervisor的方案目前主要有WindRiver hypervisor,OKL4,Lynx OS,Xenomai等。嵌入式虚拟化代表了解决Linux实时问题的目前最为先进的方法,但目前正处于推广阶段,开源的方案也比较少,上述方案中只有Xenomai是开源的,但Xenomai一般这针对某个芯片平台提供一个参考的源代码版本,如果要应用到具体平台中,还需要深入的源代码阅读才能完成移植工作,这对于一些设备厂商而言,无疑是一项高的门槛。 针对Xeonmai在平台支持方面的欠缺,笔者所在团队用了近2年半时间开发了XtimesLinux,专门针对ARM平台,而且针对特定开发板提供板级的实时方案,降低使用门槛,而且代码完全开放,希望能被工业控制,信号处理、通信等领域试用,以图在国外厂商所占据的实时基础软件市场中取得立足之地。 | |
兼容ARM9的软核处理器设计(首本在FPGA上实现兼容ARM9指令集处理器设计的书)
作者 free-arm | 2012-05-03 16:07 | 类型 图书推荐, 弯曲推荐, 新兴技术 | 25条用户评论 »
Nick McKeown . “OpenFlow Innovation in Campus Networks”
作者 陈怀临 | 2012-04-23 17:28 | 类型 新兴技术, 研发动态, 行业动感 | 2条用户评论 »
OpenStack – 开源云计算项目
作者 yeasy | 2012-04-12 07:29 | 类型 下一代互联网, 云计算, 互联网, 弯曲推荐, 新兴技术 | 2条用户评论 »
系列目录 Future Internet Technology时下云计算如火如荼,众多企业纷纷推出云计算相关的应用,不少还搭建企业私有云和少数公有云(代表为Amazon)。然而,业界仍然缺乏一套实用的云计算管理平台,很大程度上提高了云计算应用的门槛,制约了云服务的发展。 作为开源的IaaS(Infrastructure as a Service)平台,OpenStack遵循Apache许可,其长期设计目标为同时服务公有云和私有云,提供统一的开源资源管理平台。 OpenStack是美国国家航空航天局(NASA)和Rackspace合作研制的云计算管理软件,最初目的是存储大量的空间视频、图片等信息,随着云计算需求的增长逐渐成长起来。 自2010年7月项目成立开始,OpenStack就收到广泛关注和支持。项目成员不乏业界巨头,包括Cisco、Citrix、HP、Intel、Dell、IBM、Microsoft等。其中Dell和HP公司还利用OpenStack创建了自己的云计算解决方案,当然,所使用的企业版本与开源版本有所区别。经过两年左右的发展,该项目已经吸引了超过160家公司和2600多名开发者,足可见认可程度。 目前,OpenStack项目由若干子项目组成,包括计算组件Nova、存储组件Swift、镜像管理组件Glance、认证组件Keystone、前台组件Horizon和网络管理组件Quantum。其中前三个组件是OpenStack的核心,经过长期开发和完善,已经较为成熟。大部分的组件都是松耦合联系,支持分布式,较好的保证了扩展性。 OpenStack在虚拟化技术上支持Xen、KVM、VMware、ESX、LXC、QEMU、UML等,并通过统一的虚拟层(Libvirt)来调用,实现底层对用户透明。对现有虚拟化技术较为全面的支持使得OpenStack可以被广泛部署在多种场景,而不用担心底层需要选取哪家技术实现。同时,OpenStack还支持亚马逊的EC2和S3的API,使得面向AWS(Amazon Web Services)开发的应用可以轻松的实现迁移。 OpenStack的版本命名与Ubuntu类似,按照字母顺序,分别为Austin、Bexar、Cactus、Diablo、Essex。最新版本为第五版的Essex,这一版经过了较长的开发周期。从第五版开始,OpenStack开始注意代码的质量和用户的体验,真正可以作为较为实用的云计算管理平台。 另外,根据最新的消息,OpenStack将在今年的4月16-18日在美国旧金山举办OpenStack Conference & Design Summit峰会,讨论该项目的未来发展,大家不妨略作关注。 客观的看,OpenStack对推动云计算的发展有着积极的作用(类似的项目包括OpenNebula、Eucalyptus等),但目前的版本,功能还比较简单,面向的群体也有限。同时,不支持网络虚拟化等新兴技术,在某种程度上制约了OpenStack的功能和性能。希望OpenStack在未来能更加完善,成为功能完善而又易用的云计算平台;也希望有更多的优质开源云计算项目能够成长起来,促进产业的发展。对OpenStack有兴趣的朋友可以尝试访问官方网站,或者trystack.org,简单注册后即可进行体验。 | |
Google 扩增实境(Augumented Reality)眼镜计划
作者 hid | 2012-04-05 00:30 | 类型 新兴技术, 移动互联网, 移动和设备, 行业动感 | 17条用户评论 »
北京时间5月30日消息,据《连线》杂志网络版报道,谷歌联 合创始人谢尔盖·布林(Sergey Brin)近日在参加一次电视节目时透露,希望明年正式推出谷歌眼镜(Project Glass)。谢尔盖·布林 还在该节目上让加州副州长加文·纽森(Gavin Newsom)亲身体验了佩戴谷歌眼镜的感觉,并首次向外界演示了谷歌眼镜的显示界面和操控方法。 ![]() 纽森在接受《连线》的采访时说,“你很容易就会忘记自己戴上了谷歌眼镜,同时又能感受到它的强大用途。它非常地轻,戴在头上感觉很舒服,也不会显得过于惹眼。” 在演示中,布林通过眼镜右侧的触控板对系统界面进行操作。他用手指在触控板上来回滑动,寻找他用谷歌眼镜拍的一张照片。然后他把眼镜戴到纽森头上,继续用手对触控板进行操作,直到找到了那张照片。 不过,当纽森询问布林如何进行拍照时,布林并未回答。 纽森称,他对谷歌眼镜的显示屏画面质量印象深刻。当时电视节目现场光线并不适合展示显示屏,但画面质量依然“极其清晰。” 很多人担心佩戴谷歌眼镜会导致难以与真实世界互动,但纽森说,他很容易就能重新将注意力转移到桌子对面的布林和主持人身上,然后再次将注意力带回到谷歌眼镜上显示的照片上。 在布林将谷歌眼镜重新佩戴好之后,他向下滑动触控板,然后继续参加与主持人的访谈。《连线》猜测,向下滑动的作用可能是退出相册界面。因此可以推测,滑动应该是操控谷歌眼镜界面的主要动作之一。 布林称,当天他所展示的谷歌眼镜是早期原型机。“我希望明年某个时间能够正式推出,但仅是一点点希望而已。” 然而,即使是在早期,谷歌眼镜也令人印象颇深,纽森对《连线》说,谷歌眼镜“远比人们想象得要走得远。” 谢尔盖·布林表示,Google X团队开发这款眼镜已有两到三年的时间,而他本人过去一年也全程参与了谷歌眼镜的开发。他还解释了谷歌开发这种技术的原因,“我们的想法是,你可以自由的体验整个世界,而不必整天与手机混在一起。”
用扩增实境(Augumented Reality)加强过的生活,会长什么样子呢?
Project Glass 的假想影片,整合了语音输入、日程表、Google Maps 导航、打卡、视频等功能,除了搞不清楚要怎么操作外(眼球追踪?),其实看起来在技术上已经很接近实现了! 它可以传输近在眼前的信息。谷歌实体的“眼镜”设备的扩张正在干扰人们的商业模式,大家甚至不用掏出手机就能拍照,找到方向,或是给朋友发短信。如果谷歌的“眼镜”设备都可以做得到,那么你还会需要买最新一款iPhone或是在Facebook上花费大量的时间么? 该设备的模拟视频让人垂涎三尺,其展示了“眼镜”设备的强大能力,包括通过语音控制发送信息、拍照、分享Google+、找到朋友们的位置、查看地图、找方向、设置日历提醒等等。 将这么多的功能塞进这一“眼镜”设备中需要花费很多时间和努力,很多种可能会导致这一产品失败,最显而易见的如果这一设备笨拙或是老土,亦或它太重,太昂贵,易损坏,或者大众还没做好接受它的心理准备。让我们先忽略掉上述可能,倘若谷歌解决了种种问题,如果这一设备推出后广受好评,那么这将对苹果和 Facebook造成什么样的冲击呢,他们该如何采取措施保卫自己的利益呢? “眼镜”设备把人们在iPhone和iPod上的所使用应用通通装到里面,“眼镜”可能是运行Android系统,并且由于该设备可能是声控的,它也有可能变成谷歌针对Siri的竞争者。 | ||
E语言概览
作者 matrixos | 2012-03-21 21:26 | 类型 新兴技术 | 29条用户评论 »
[陈怀临注:这次是真的matrixos同学的文章。上次是他的徒弟干的。。。希望同学们大胆假设,小心求证。。。但切记不要attack。。。] e语言是基于c语言衍生出来的一种新型面向对象语言,向下完全兼容标准c语言语法,是matrix系统的基本程序设计语言,在这里,我们将只针对扩展的面向对象语法进行描述。
e语言所用到的文件类型: 1) 对象描述文件(***.d):描述一个类、对象或多个类、对象的文本文件,类、对象的定义都在该文件中实现。 2) 头文件(***.h):c语言完全等效的文件类型,可被对象描述文件、e源代码文件、以及汇编语言文件包含引用。 3) e源代码文件(***.e): 4) 汇编语言文件(***.s): 5) 其它资源文件:(*.*):可以为一切类型文件。
类的定义:(类实际上就是一个库,在对象设计和编译时刻引用的库文件) class className <类继承列表> { head: 这个段是对象的基本信息特征之数据结构(有待具体标准化定义) private: 这是私有数据段 int data; public: 这是公共段 float abc; int protect ba; protect关键字表示这个变量只能被外部读。 int Function(); byte (& Dev1)[4096]; 可读可写,按字节访问,4KB大小。 interrupt: 这是中断服务程序挂接段 INT_16 : status intUartSend(int, void *); INT_27 : status intTimer(int void *); message: 这是消息函数段 MX_CLICK : status onClick(int, int, int, int); WM_DOUBLECLICK : status onDoubleClick(int, int, int, int); event: 这是响应事件的函数段 EV_MOVE<parameters> : status move (int, void *); EV_HIT <parameters> : status Hit(int, void *); space: 这是存储空间定义段,定义对象运行所涉及的内存空间。 heap<memory: size=4096,unit=8>; pool <memory: size=16MB,unit=4KB>; Dev1<remap: globalBase=0xc0001000, size=4KB>; Dev2<remap: globalBase=0xc0002000, size=4KB>; compose: 组成这个类的实体模块文件。 xxx.e; xxx.s; xxx.a; xxx.bmp; option: 编译这个类、或对象的选项。 };
对象的定义: className objName { 格式和类定义相同,但是,对象的定义优先级高于类的定义(遵循越是后期定义的变量,优先级越高的原则),例如:需要重定义的变量,函数,直接在本对象中进行重新定义即可,如下: public: char string[32]; 在原有类的基础上,为本对象新定义一个新的变量。 重新定义对象运行所需内存空间。 space: 这是存储空间定义段, heap <store=memory, unit=4, total=8KB>; pool <store=memory, unit=2KB, total=32MB>; }; 我们也可以不需要类的支持,直接定义一个全新的对象: object objXxx { head: private: int abc; int Function(); ……….. ….. space: }; 编译的时候,以对象定义为单位进行编译,生成相应的二进制对象实体文件:object.o,可供matrix系统进行装载。 E语言源代码文件(*.e): *.e文件是一种文本文件,兼容标准c语言。在设计e语言程序时,我们完全可以按照c语言的语法,定义变量、函数,引用.h头文件,以及跟汇编文件混合编程等等。例如: 定义3个变量: int a, b, c; 定义3个函数: void Func1() { a = b + c; } int Func2() { b = a + c; return b; } status Func3(int, void *p) { 。。。。。。。 。。。 return status; } 我们根据实际需要,在类、或对象定义文件中,把上面的函数或变量分配到合适的对象段,例如: object Xxx { 。。。。。 。。。 把变量b和Func1分配到对象公共段: public: int b; void Func1(); 把Func3跟一个消息挂钩: message: WM_XXX : status Func3(int, void *p); 。。。。。 。。。 }; 其他剩下的变量和函数,将在编译时自动分配到对象的私有段。因此,在.e文件中,函数和变量的定义以及各种运算、逻辑语法的表达,跟传统c语言几乎没什么区别。不同之处主要表现在e语言扩充的外界对象的访问和引用上面,下面简单介绍: 1) 如果要在e语言中引用一个外界对象。 首先,定义一个对象别名,并为这个对象别名指定实际的对象实体,如下: class #objXxx = mx . com . uart; 或, object objType #objXxx = mx . com . uart; (class 、objType 来自.d文件的对象和类的定义。) 然后在代码中,通过对象别名使用这个对象,例如: objXxx . Buffer[0] = 0×12; 访问对象公共数据,向串口缓冲区写入一个数据。 Xxx = objXxx . GetBardRate(); 调用对象函数,获取串口波特率。 SendMessage(objXxx, , , ); 向对象发消息: 我们也可以不必定义对象别名,在代码中直接使用对象: mx . com . uart . GetBardRate(); 2)模糊对象引用:程序设计时,当我们不完全知道某个对象的类型或类库,但是知道这个对象的部分接口或成员,这时,我们也可以直接定义一个未知类型的对象别名: object #objXxx = mx . Xxx; 然后通过这个对象别名访问该对象成员。这种模糊对象的引用,可以最大限度的不依赖类库和对象类型定义,使得e语言中对象使用更加灵活方便。 3)对象其它操作: 对象动态copy: 以一个对象为基础,可以在运行时复制出来其他很多相同对象个体。 对象动态move: 一个对象动态从一个matrix系统迁移到另一个matrix系统。 对象是matrix系统中最小的软件单位,一切复杂多样化的应用,都是由一个一个的对象组成,它们之间相互协作,达到实际的功能。 纯对象为基本的软件开发。 未完,待续。。。。。。。 | |
全面向对象,矩阵操作系统
作者 matrixos | 2012-03-06 10:49 | 类型 新兴技术 | 190条用户评论 »
在人类的认知世界中,我们总是习惯于把事物按照个体对象来感知和总结,例如,一辆汽车,一座房子,一个人,一棵树等等。同时,一个对象又可以分解成多个小的对象,例如,一辆汽车由发动机,轮胎,方向盘等各种组件组成;再进一步,又可以分解成更加微小的对象,例如,发动机可以分解成若干个小零件构成;更进一步,每个微小的汽车零件,又可以分解成极小的分子、原子组成。这是人类对现实世界的认知模式,我们可以总结如下几个基本概念: 1、对象,个体是组成客观世界的基本单位。 2、对象,个体的定义可以宏观,也可以微观,主要根据我们认知的层次需求。 3、对象之间可能有相互作用和依赖的关系。 4、对象可能会随着时间的流失,其本身发生变化。 5、大多数对象存在于有限的空间和时间中。 6、任何一个对象个体都是唯一的,世界上没有完全相同的两片树叶。 7、有生命对象,和无生命对象。 8、………… 人们已经证实,对象概念符合人类认知的思维习惯,有利于软件开发和应用,传统的面向对象设计语言如c++,java等正被主流与用于各种软件系统的开发。但是目前,这些传统的面向对象程序设计并没有做到完全的面向对象理念。例如:当我们用c++开发应用程序时,在源代码中设计定义类: Class classXxx{,,,,,,}; 再根据类去定义对象: classXxx objXxx; 然后调用对象的函数或访问对象的变量: objXxx.Function(,,,); xxx = objXxx.Variable; 源代码是这样写的,它具备面向对象的特性,但是,当编译链接后生成可执行文件(例如.exe)运行起来后,我们不能再看见和接触这个对象objXxx。也就是说,在传统的面向对象程序设计中,我们仅仅只能在源代码开发阶段使用有面向对象特性,一旦源代码被编译链接运行,所有对象的特性完全丢失,这是一种不完全的面向对象软件设计方法,不符合人类的思维习惯,必然会给应用和开发带来诸多的不方便。 我们下面将要讨论的技术,就是要实现最彻底的面向对象系统,我们暂时称之为:矩阵系统matrix matrix是一种完全面向对象化管理的操作系统,其基本概念是:一切皆对象。一个文件,一个程序,一个驱动,都是一个对象个体,从他们的设计、创建开始到编译运行,自始自终都具备对象的一切属性。无论是开发的源代码,还是编译过后产生的二进制体,我们在matrix中所看到的,都是对象模型。举个例: 当我们设计一个串口驱动程序时,在开发阶段,是这样描述的:(假如这个驱动的名字为objUart) Object objUart { 定义对象自身变量: …… 对象接口函数: int GetBaudRate(); void SendData(); ………… ……. } 在编译阶段,编译器以每个对象为基础,编译生成对应的二进制对象实体,objUart.o, (注意:这并不是传统系统中的二进制对象文件),objUart.o拥有一切对象信息,包括自身的数据以及对外公共接口等,以便当这个对象被装载进入matrix系统后,其他装入的对象可以进行访问。 运行阶段,objUart.o会被装载进入matrix系统内存,其它的应用软件(确切地说应该是其他对象),便可以在matrix系统中直接访问这个串口对象公共接口。 例如我们接下来开发另一个应用程序对象objA,将要调用上面串口对象接口, 源代码开发这样写: object objA { …… objUart.GetBaudRate(); 获得其串口波特率。 objUart.SendData(,,,); 向串口发送数据。 …… } 编译生成二进制对象objA.o,然后装载进入matrix系统运行。 需要注意的是,对象objUart和objA是两个完全独立的对象个体,他们在开发和编译阶段完全可以互不相干,只有在运行时,并且两个对象都已经装载进入matrix系统,才发生相互作用关系。当其中一个对象并不存在时,系统也不会发生崩溃。例如,当objUart对象不在系统时,objA在调用串口对象接口时,会收到一个来自系统的消息,表明串口对象缺席,进而做出相应处理。 通过上面的实例体验,我们大概了解这种全面向对象程序设计的基本概念,没错,一切皆对象,从设计、编程,编译到装载运行,所有的一切都是基于对象以及互动的概念,我们设计一个软件系统,将主要集中考虑的是各个对象功能,以及对象之间的互动关系,这正好类似于我们现实世界环境,不同的是,现实世界的对象由分子原子组成,而matrix系统里的对象,则是由代码和数据组成。 Matrix核心是实现这一切技术的基石,下面我们来看看matrix系统的架构。 如图所示,matrix的核心由下面几部分组成: 1、基本的多线程、处理机调度内核。 为适应matrix系统设计需求,我们开发了一款名为e-kernel的基本多任务调度内核,有64个任务优先级,其中32个优先级用于实时调度,另外32个优先级用于一般任务调度。E-kernel支持单处理机,对称多处理机、非对称混合多处理机。非对称混合多处理机MMP是matrix系统引进的一种新的概念,基本目的是允许不同类型的处理机共同存在系统中,以满足各种不同的数据处理需要。例如,一个系统中可以有通用处理机,用于一般程序运行,也需要数字信号处理机,用于数学运算,也可为图形专用的处理机等,这些不同类型处理机共同存在于系统中,统一由e-kernel进行管理和调度。需要注明的是,在matrix系统中,我们会以函数为单位,为每一个函数标记一个匹配的处理机类型,以便调度到合适的目标处理机上运行。 2、基本的存储管理单元。 包括内存管理和外存管理,为对象运行时提供内存空间,也可为对象数据永久存储提供外部磁盘空间。在matrix系统里,各个对象按照一定的层次关系组织起来,当一个对象载入matrix系统后,这个对象就永久的存在于matrix系统中,而不管系统是否掉电上电,或重新启动。由此可见,对象体首先是存在于外部永久存储空间上,然后再根据需要,部分载入内存进行运行。存储管理单元也为对象开发屏蔽了大量细节技术,当我们开发设计一个对象时,根本不再需要考虑内外存访问使用等问题,就可以直接在对象中引用,例如,在对象中定义两个变量Va,Vb: object objXxx { …… int Va; 一般程序变量,放在内存,系统掉电、重启将不能保存。 int saved Vb; 可存储变量,系统掉电、重启将保留当前值。关键字saved表示这个变量放在外存空间。 …… } 3、对象管理器。 对象管理器是matrix系统对象存在的基础,管理对象的载入、移出,组织对象在matrix系统中的层次关系,以及实现对象之间的互动。 4、根对象mx。 根对象mx有两个作用,第一,是一切对象载入到matrix系统的基点,类似于传统文件系统里的根目录;第二,为其他对象提供基本的内核服务,例如:我们可以调用mx.CreateThread(,,,,,)来创建一个线程。根对象mx是与matrix核心一起开发并紧密的绑定在一起的。 5、接入/接出单元。 这是matrix系统对象跟外界交互的基本接口,主要包括:调试接口,本机或交叉调试;操作显示接口,简单的控制台shell,复杂的图形界面操作等,实现人与对象互动;各种网络通信接口,互联网,移动通信网等,方便在各种网络中对象之间互动。 注意:以上并不是构成matrix系统的必须部分,在一个功能更加简单的matrix系统中,可能只存在一个控制对象和网络通信接口,例如一个网络温度传感器,放在珠穆朗玛峰山顶,我们可以在非常遥远的北京某一matrix系统设备上,方便地获得当前山顶温度,使用下面句法: (IP:128.123.113.2)mx .TemSensor . GetTempreture(); (IP:128.123.113.2)表示这个温度传感器对象所在matrix系统的网络IP接入/接出地址。 举这样例子或许并无多大实用意义,这里主要是想说明matrix系统的简易方便使用的特性。同理,我们可以再举个例子,获取某辆汽车轮胎气压,语法如下: (Cell: 13312345678)mx.MyCar.GetTierPressure(); (Cell: 13312345678)表示这辆汽车对象是通过移动网接入到matrix系统网络。 matrix系统的对象模型定义和互动: 在传统的面向对象基础上,我们扩展了对象结构,定义了一种更加符合人类思维习惯,功能更加强大的对象模型。 类的定义: class className <类继承列表> { head: 这个段是对象的基本信息特征之数据结构(有待具体标准化定义) private: 这是私有段 int data; protect: 这是受保护的段,跟传统的定义有所区别,这个段的数据外部只能读 char *ss; struct store xxxx; int const abc; public: 这是公共段 float abc; int Function(); interrupt: 这是中断服务程序挂接段 INT_16 : status intUartSend(int, void *); INT_27 : status intTimer(int void *); message: 这是消息函数段 MX_CLICK : status onClick(int, int, int, int); WM_DOUBLECLICK : status onDoubleClick(int, int, int, int); event: 这是响应事件的函数段 EV_MOVE<parameters> : status move (int, void *); EV_HIT <parameters> : status Hit(int, void *); space: 这是存储空间定义段,定义对象运行所需动态内存空间。 heap <store=memory, unit=8, total=4096>; pool <store=memory, unit=4KB, total=16MB>; }; 对象的定义: className objName { 和类定义相同,需要重定义的变量,函数,直接在对象中进行重定义,例如,如下重定义内存空间段: space: 这是存储空间定义段,定义对象运行所需动态空间。 heap <store=memory, unit=4, total=8KB>; pool <store=memory, unit=2KB, total=32MB>; }; 跟传统面向对象不同的是,matrix系统也可以不需要类的支持,直接定义对象: object objXxx { head: private: int Function(); ……….. ….. space: }; 定义上面对象的私有成员函数: objXxx :: int Function(); matrix系统可以在运行时刻复制已有的对象: object objCopy; 首先,定义一个空对象。 objCopy = ObjectCopy(objXxx); 复制已有对象到空对象 objCopy.Function(); 调用复制对象的成员函数。 matrix对象描述语言,对象编译器,对象处理机,对象接口总线: 实现matix系统,我们还需要一个基本的工具链,那就是描述matrix对象的一种新型高级语言和他的编译器,这个对象描述语言基于c/c++,并作了相当大的扩展,我们暂时定义为e语言。e语言应该是一个比较灵活的语言,代码设计以对象(或类)为基本单位,及所有的代码都是包含(属于)在某个对象里面的。e语言支持高级语言和低级语言的混合编程、编译。生成的输出结果以每个对象为单位的2进制的对象体,用于装载、连接进入matrix系统。为方便开发,也可以支持多个对象体融入一个对象文件,一次性连接载入matrix系统。 对象处理机的开发,是为了更加很好的适应matrix对象这种工作模型,主要有两点考虑:对象互动的安全性和对象装载的灵活性。 matrix系统对象装载可以在任何时刻,任何内存地址,这就要求二进制对象具备可重定位特点。常规的处理机架构下,比如ARM处理机,需要进行动态连接,对象内部所使用的相对地址必须根据载入内存的地址进行变动,这会消耗大量的时间。对象处理机可以解决这一问题,对象处理机有一组基址寄存器,分别用于代码段,数据段,堆栈段,扩展数据段访问,以及对象互动访问。代码、数据的寻址都是基于这些基址寄存器,并有着访问权限,越界检查的功能,可以非常灵活的进行对象重定位,以及相对安全的对象互动。这种技术跟x86系列处理机段寻址结构类似,但相对简单高效,并且在现有的处理机基础上很容易实现。不可否认,就要被遗弃的段访问技术,在matrix系统里将会派上很大用场。 对象接口总线,前面讲到,对象体二进制文件装载进入matrix系统,成为可运行的一个对象,这是一种对象入住matrix系统的方式,还有另一种方式,那就是通过对象总线的连接进入matrix系统。比如说一个智能家庭的中心控制器,是一个matrix系统,我们可以通过对象总线,把各种按照对象规范设计的家电设备连接到中心控制器,于是就可以通过这个中心控制器,以对象方式访问各种家电设备对象。例如:打开电视机,mx.TV.PowerOn(); 对象运行时连接技术: matrix系统中每个对象都是独立的代码、数据空间,对象之间的互动访问必须保证高效率,如下两个对象objA和objB,相互调用对方的公共接口函数实现互动。 object objA object objB { { objB . Function(,,,); objA . Function(,,,); } } 两个对象独立设计和编译,它们只需要知道对方公共函数的调用方式即可,当两个对象编译后载入到matrix系统时,它们并不知道对方具体存在于什么内存位置,更不可能知道对方的公共函数的地址,同时为了保证效率问题,它们之间也不可能通过系统调用的方式来实现互动,这就需要一种新的技术实现直接对象间调用,我们称之为运行时连接技术,例如:当objA第一次运行到调用objB的函数时,会发送一个对象连接请求信号到matrix核心,matrix核心进行各种权限检查,如果符合要求,就直接把这个函数地址连接到objA内部,当下一次调用该函数时,objA就不必要再次向系统发送请求,直接可以调用这个函数。这就是所谓运行时连接技术,它跟人们之间相互交流,从生疏到熟悉的认识过程非常相识。 matrix系统的优势: 一个新颖的系统,可能并不是很容易地列举出来一大堆优点缺点,也许只有往后的运用,才能逐渐的体现其各种优势所在,对创作者来说,往往就是一个不经意的信息,导致整个想法的产生,总结归纳如下几点: 1、简单、高效的程序设计:完全的对象化,更加符合人类思维习惯的代码设计,让程序设计更加注重对象功能的实现,而不用再去学习复杂的系统方面知识或架构、工具方面等技术。 2、统一的程序设计:一切皆对象,程序设计就是对象设计,不再像传统系统那样,分为各种各样的软件类型,协议,开发等等。对象之间耦合也是统一的格式,更加方便分工合作开发、以及重复使用其他人的智慧成果。 3、灵活开放的系统组成:以对象为基础构建的系统,可以根据实际运用需要,增加、裁减、或选择不同的对象个体。 4、便利的网络互动:以对象为基础网络通信或编程,完全不需要了解各种复杂的网络知识和技术,网络对象之间和本地对象之间的互动通信,除了速度有差别以外,其他完全没有区别。 5、数字地球:各种仪器仪表互连提供统一标准。 6、虚拟现实世界。 matrix是一个巨大的工程: 1)首先是matrix系统本身的实现,包括matrix 核心,e语言编译器,开发工具等(如果要想获得更好的对象运行性能,对象处理机架构也必须被实现。) 2)matrix系统各种技术规格、对象规范的定义和文档撰写,需要一个专门组织机构来负责,并且是免费开放的。 3)矩阵网络的实现,多网合一,各种中间层设备和通信软件,需要各个厂商合作。 matrix系统开发现状: matrix系统思想来自电影《黑客帝国》,作者经过多年的努力,利用业余时间,致力于开发并实现了matrix核心里面的多任务调度e-kernel第一版,接下来会继续开发第二版内核的同时,将定义完备的matrix对象模型和e语言语法。往后的任务会更加艰巨,希望新的力量加入,一起来实现这个有趣的工程。 联系邮箱:mx65536@gmail.com 慎重声明: 在这里,我需要向大家,以及陈首席澄清一件事情,matrix并不是我本人的言论,事实上这是跟我一起接私活做项目的合作过的兄弟发言,弯曲的帐号也是他一手包办帮忙申请的,没想到我的朋友如此这样在网上较真,希望各位海涵,如有他骂过的网友和说过的脏话,我代他向你们致歉. 最后,谢谢大家的关注.感谢弯曲,陈首席,以及其他编辑同志,给这个发表文章的机会.谢谢你们搭建这个平台,让更多的思想,技术展现在大家眼前. | |
工具箱
本文链接 |
|
打印此页 | 190条用户评论 »
内网也可以DropBox——私有云“阳盘”小记
作者 tomqq | 2012-03-01 15:54 | 类型 新兴技术 | 25条用户评论 »
过去一两年里,云存储的美国鼻祖Dropbox——这个几十人的小团队在4年间将企业的估值做到了100亿美元。2011年,苹果也推出了自己的云存储产品——iCloud。苹果前CEO乔布斯将iCloud评价为“下一个伟大远见”的产品。同观国内,金山、腾讯、360、阿里、华为、联想、中国移动等巨头纷纷进入,就连酷盘、115网盘等中小创业公司也纷纷一头扎进这个行业当中。
上述公司的技术架构和商业模式也几乎和DropBox如出一辙:建立大规模云存储后台服务,同时推出前台客户端,吸引大量用户参与,从中产生收费用户收取费用。
相对于个人市场,企业用户对文件存储和分发软件有着更紧迫而现实的需求。但是,如果把这种模式照搬到企业市场,存在着一个弊端:即,上述产品都需要用户把数据传送到位于互联网机房的云后台,而基于敏感数据的安全管理以及当前云模式诚信机制的担忧,很多企业不会选择轻易的上传企业数据。同时,企业对存储产品的要求,也有别于个人。
针对企业文件存储需要,在2010年底,几个在通信领域有着丰富工作经验的创业者,成立了新云软件,专门研发针对企业使用的私有云存储软件,并且给该产品起了一个很有四川特色的本土化名称——阳盘(YoungDisk)。针对企业存储需求特点,除了具有个人存储产品好用的客户端和分享功能外,阳盘着力打造了企业需要的数据私有化、数据存储加密,以及按照严格企业组织架构进行文档分发的控制功能。
阳盘基于C/S架构设计,同时也支持web客户端。企业可以将服务器部署在企业内部机房,甚至企业部门内部。同基于个人产品自发共享的模式不同,阳盘为系统设计了一个超级管理员,超级管理员可以给部门管理员赋权,也可以直接将某一个共享目录指派给某部门单独共享。
产品特点
1、文件微观同步技术
有别于传统文件同步,YoungDisk采用文件微观同步技术,将文件拆分成极小的单元进行同步,实现了快速差异对比、差异同步,在较差网络链路的极端情况下,可提供高速同步效果。
2、加密传输通道
文件传输通道采用SSL协议进行加密,数据传输安全有保证,防止黑客恶意窥探和窃听。
3、严格权限管理
用户采用组、用户交叉权限管理,不同的用户可以继承不同组的属性,保障用户仅能按照企业管理规定,操作权限内的文件。
4、灵活组目录共享
组可拥有多个共享目录,组内用户可指定对共享目录内文件的操作权限,包括只读、可删除、读写,
5、选择同步
可选择指定目录进行同步。
6、文件误删除恢复
对于误删除的文件,用户可通过恢复机制进行恢复,保证工作的连续性。
7、手机和WEB客户端
可通过手机和WEB访问存储文件,适用于出差、会议、网吧上网等临时获取指定文件的场合需要。
目前,新云公司团队规模依然不大,从最初的几人发展为10人规模,目标是打造建立企业内部更安全、更灵活的DropBox。2012新春伊始,新云愿意和各路豪杰一起,打造更给力的企业级私有云存储,合作方式包括并不限于产品代理、产品直接整合、甚至直接肉身加入。
在内网也想DropBox起来吗?您还等什么呢?需要的可以在这里跟帖留言,新云团队竭诚为您服务!
| |