朋友qq空间上面的.解读一下.加点注释.主要使用计算机系统结构的知识解读或者证明或者补充.REM表示注释.REM end表示结束
我将对怎么展开和如何展开加以讨论.
初识云操作系统
什么是“云操作系统”?“云操作系统”即采用“云计算”、“云存储”方式的操作系统。那什么又是“云计算”呢?“云计算”是IT产业较为时髦的词语,一般是指分布式计算,途径在各数据处理中心设置计算机服务器群,将“云计算”作为一种服务,提供用户使用。“云存储”亦类然:把用户的数据存储在“云网络”中,从而避免使用本地资源进行存储,实现异地使用存储资源的目的。下面我将谈我所理解的“云操作系统”。
云操作系统的鲜明特点将是“网络化”。将“云计算”作为任务发送给各个处于不同地理位置的服务器处理,得到结果返回。这种网络是一种“云网络”,有内存的拓扑结构,以使得能最有效地利用服务器的计算性能,为用户提出的“云计算”任务提供高效的计算服务。“网络化”还将用户的存储的资源分布地存储在各大服务器上,一是保证了脱离本地机器时,仍能使用自己的存诸了的资源,二是可以方便地与它人共享---如与家人共享,与同事朋友共享,公司的硬件资源的异地共享(租用服务器的云计算服务)。
REM云存储有两个问题.就是锁的问题.加上服务可靠性.计算中脏数据是不允许产生的.云计算的核心是各个终端自己还是一个公用的计算机互连网络?如果是用户自己就太方便了.成本不高.像梅森质数就是利用分布式来搞定.我把我的空隙CPU时间段拿出来供大家使用.(一个合理的算法和管理调度).我开机1小时.它在计算.突然我要关机了怎么办?计算的东西给于时间可以模仿计算机中断技术.保护上下文.上传之.如果突然断电就只有重新来.好在互连网络早就有了写写相关.而这个空闲的东西迅雷想必是很成熟了.当时的盗链技术是一绝.REM end
云操作系统的又一鲜明特点是安全。这安全是指“云计算”、“云存储”在逻辑上的安全性。也就是说,云计算通过云服务,可以通过多种多样的安全保障措施来保障您数据的安全。有可能的方式为:1,云网络操作系统内存的安全性,这种安全性于本地来说是“严格受限”的计算。任何服务都是相互隔离的,用户任务各个数据之间没有任何内在相关性,任何已知的病毒在这种环境下都将失效------数据、计算任务的隔离性。2,云网络的逻辑安全性。在云网络中传输的数据是严格保护的,包括使用各种各样的数据加密措施来保障云计算任务与数据的安全;不仅如此,云网络是冗余存放,多重备份的网络式存储,任何局部化的数据损害不会影响到用户数据的安全。
REM很多企业高管,我都认为云计算得安全问题是一个不可或缺的问题.就连理论上屏蔽硬件的java都有漏洞何况可以任意接触各个子电脑的代码段.高级语言下面有低级语言.低级语言下面有微指令.微指令下面有机器语言.机器语言可以用定向能技术执行..REM end
云操作系统还具有计算的可扩充性。本地硬件资源不足可以动态地申请网络硬件资源来为用户服务(当然这种网络服务视计算任务的时间空间复杂度收费),这对于用户来说是透明的不可见的,然而用户将切身地体验到这种模式的好处。比方说,你可以手机终端运行魔兽、CS、CF、时况足球得大型的3D游戏,你还可能用你的个人PC作为一个网络服务器,提供上百万人同时在线的网络服务。但这种服务在现在看来,以个人PC提供这种需要巨型机才能完成的服务是多么的难以置信。一言以蔽之,你可以用任何有限的本地硬件资源来实现近乎无限的大型计算量。这种虚拟存在的计算将深刻地影响到未来的计算机行业的发展。
REM这个就是好.就是好.就是好.除非忽略中国的网速.
云操作系统将使得软件计时服务成为主要的软件服务,从而从根本上杜绝了软件盗版问题。云操作系统内在的网络化以及安全性,保障了计算的分布式实现。从而可以有效地把软件视为一种计时服务而提供给用户。这种计时服务的好处将是:避免将任何完整的二进制形式的可执行文件(软件)发布到个人空间中(这为软件的破解与盗版提供了方便)。从而保障了软件资源的安全,保护了软件发明者的知识产权。当然,在这种情况下,软件资源也是可以设置为免费方式的-------这要看作者怎么看待他发明的软件了。
REM为啥我开的东西要免费.可以效仿IPHONE的软件收费.
云操作系统将实现无病毒,数据安全,存储方便,共享方便,软件发布安全方便,计算资源可以动态扩充的多种优点的网络服务。未来的IT业,将是云计算的产业!
REM这个互连网络不规整.很多问题要解决.
云操作系统的设计与实现
上面谈了一些云操作系统本身的概念及其特点,那么这种操作系统是如何设计实现的呢?这种操作系统在设计与实现与又有什么样的特点,未来的云计算下的软件又是怎么开发,对于云的各种内存的优点又将以何种方式实现?
这些问题至今没有公开的公认的答案,不过我是可以提供一些我思考得到的方法的。
云计算操作系统作为一种网络化的操作系统。本地硬件资源只是提供一种接入云网络的一些必要的计算及通信,基本的软件(操作软件等)资源。本质上它只是一种接入云网络的终端软件。因为其复杂性不宜过高。也就是说,这应该是一个轻量级的操作系统。这个系统将为接入云计算网络提供基本的通信及计算能力。
它在基本功能上应该具有:基本的网络通信能力,有限的存储资源(用以存储云系统软件,对通信服务的临时数据进行存储-------当然,你也可以存储你的本地资源---但为了安全,一般不建议这么做),有限的计算能力(可以执行云操作系统的命令)。
REM不管是不是脏数据.定期备份是好喜欢.最好还是自己有个副本.
它的基本组件有:对硬件资源进行管理的设备管理器(本地资源也可以作为一种特殊的云计算资源为用户服务-----这种资源是免费的,而本地硬件资源不足时,可以动态申请网络硬件资源为共云计算提供服务),云存储管理器(包括对本地资源的管理与网络存储资源的管理)。对云任务通信的网络通信能力(也包括对本地进程间的通信)。对云计算任务提供多线程并行服务(包括本地线程与网络线程)。提供“云计算”功能的云计算组件(云计算高级语言API),提供云存储及共享的云存储组件(云存储高级语言API),当然还有云计算、存储共享的云界面。
它的设计:可以参考分布式操作系统与网络操作系统。所不同的是,这里的硬件资源有一定的区别的,一是云服务器、云存储器与本地CPU及存储器的付费方式是不一样的。而且它的管理方式也很大的不一样。云操作系统提供一种云端的共享服务。这种不仅是在计算上,也存在于存储层次。这种云操作系统十分依赖于云网络提供的服务。没有这些服务,对于云计算(包括本地的计算---因为软件很可能存储于网络上的任何一个地方,这个“地方”却往往不是本地终端)很可能寸步难行。因而拥有一个可靠的云平台(网络服务器平台)至关重要。因此设计完这样的一种云操作系统,必需也提供一种网络服务器及存储环境,否则开发这样的操作系统是毫无意义的。
它的推广:可以采用云操作系统免费发放的方式进行推广(对云计算、云存储收费)。在此操作系统的基础上,提供开发云软件的IDE。方便大家开发云计算软件。并且将云共享平台及云计算平台提供给开发者及普通用户,方便云应用软件的传播与发展。
深入研究云计算模式
上次我写了篇《初识云操作系统》的文章。这次我将着重介绍如何进行云计算,以及云计算所涉及的方方面面的知识。当然,这都是我按我自己的了解到的知识再加上自己的创造而写的,并不算是什么权威的东西。可以认为是我自己的一些感想!
云计算,即分布式计算、网格计算的衍生物。在本地计算资源不足的情况下,将计算任务发送到网络服务器上,由网络服务器代为完成其计算任务。
REM还有个是并行计算.
云计算的模式主要有以下三个(参考了网络操作系统相关知识):
一、线程迁移模式,这个是量级最小的一级迁移,再小就难以协同了(至少实现难度上会比这个难),有的时候需要将进程里的各个线程分到不同的服务器上运行,以期达到更好的计算性能。如矩阵计算需要特殊的CPU等,而非矩阵运算可以使用一般的CPU即可。
REM个人理解.矩阵运算还是在一个或者一类CPU来完成.虽然N核是透明的.但是可以用线性代数知识对矩阵分块.我没有见过网格计算.但是这思想就是线代中的分块计算. REM end
二、进程级任务迁移模式。一个进程可包括多个线程。因而是一个完整的计算任务的迁移。如:把在手机运行魔兽游戏的进程迁移到网络服务器上,只能输入输出进行传送及结果的回传(输入---键盘鼠标的输入,运行结果---动画结果)。又如运行别的大型的程序,如一个科学计算的大型算法程序。这些都可以将整个进程迁移到别的服务器上进行计算,得到结果再返回即可。
REM线程是CPU执行的最小单位.进程是资源分配的最小单位.一个程序可能不止一个进程.这个进程可以放到超级计算机上面..(这个超级计算机很可能带了很多进程.这样的超级计算机要相当超级.如果是树形的模型就可以.不知道树形模型是否符合云的思想.也可以是集合的模型)REM end
三、作业级作务迁移。作业即在某一段时间内计算机要完成的计算及逻辑处理任务。这是粒度最大的一类迁移。比如将手机作为一个大型门户网站的服务器,这是计算能力肯定是不够的,怎么办。可以使用云服务进行虚拟服务器的配置。将某一段时间内的服务任务都放到这些云服务器,让云服务代为处理所有的一切。当然,通过你的手机终端,你可以对这些作业进行实时的监控及管理。
对于上述过程是如何实现的呢。云操作系统可以采用隐式和显示调度两种方式。
一、隐式调度。对于线程等一级的调度可以采用隐式调度,当然,这隐式调度也是经过用户允许的隐式调度。如云计算服务费用太贵,用户可以不采用此种方式。但如果用户将模式设定为:在计算过程中,为了更高的性能,操作系统可以以最好的方式对线程进行“云调度”。那么云操作系统可以完全按照云计算任务所需的计算能力,进行动态的“云调度”。
二、显式调度。一旦需要进行“云调度”,则必先征求用户的同意(比如弹出对话框,以征求用户的意见)。这里的“云调度”涉及计算任务的调度及“云设备”的调度。(云设备---比如需要用到“云打印机”等)。
在具体的云计算的调度(即计算任务的迁移调度),可以采用两者的综合来平衡之。
REM这个需要提前声明.管理上看是否方便.还有个脏数据的问题.打印到了一半断电了..需要有备份REM end
云计算的底层实现
云计算要将一个计算作务迁移到别一台机器上,要涉及很多的问题。其中最为关键的问题是:
一、数据如何进行迁移及共享。这里的数据包括代码数据及程序运行所需的数据(堆、栈内存数据,文件数据,设备资源等)。
二、运行结果将如何返回给用户。是实时返回还是运行结束再一次性返回。运行结果是如何描述的,内容是什么----图形亦或仅仅是数据。这些数据将如何描述及再现。
三、如何迁移,应该迁移到什么样的机器上,这些机器是如何分配和调度的。各个服务器是相互间是平等的还是有主从关系的。这些协作的算法及服务器又得安装怎样的操作系统(管理软件)来完成这些任务的协作。
四、对于已经在云端注册云服务的用户,如何保证其计算任务的可持续性,以及完整性及安全性。可持续性指的是,如果用户的云端下线之后,服务该如何进行,现场该如何保存等。完整性是指,如何将这些运行结果反映到用户的云环境中。比如在云端对云存储的数据进行了动态的修改,那么这些数据的修改如何保证其能完整无缺的保存下来---将计算结果保存起来。安全性,云计算服务器出现异常,如何避免出现不可预料的结果。
五、云计算如何将本地资源与云服务器资源结合起来,以提供给用户最优质的云计算服务。如优先使用本地的云设备,把本地的云计算设备整合成一个局域的云网络。
虽然我提出了这些实现云计算所要解决问题,但是并不是说我就已经拥有了这些问题的答案。因为这些都是些很现实的问题,涉及到了具体的实现了。没有做就没有发言权,所以还是等我做了再说。
云计算的应用程序的编制及实现机制。这是极其关键的。是云应用的基础。没有云应用程序的编写,用户的云计算任务将无法得到满足,因而提供一种云编程模式是十分关键的。
参考微软的.net,可以设想的实施方案为:
一、将基本的类库及服务编写成通用的代码集(程序集),由本地编写程序时调用之。这点可以构造统一的应用程序编程模式。标准接口,标准类库,这将进一步降低云计算任务迁移的数据量。(只需将极少量的非标准化代码及程序所需数据进行迁移即可----当然,这里涉及了托管机制)。强大的类库及云计算例程(标准化的程序集)将为代码的迁移的方便提供最为优良的保障。
二、将代码编译成中间代码形式,采用托管的方法对代码进行动态的编译及执行。生成一些移植性其好的托管代码。有利于程序集的迁移。这就好比,如果你云行的一个程序。我在服务器端已经安装有的话,那么程序你就不需要从用户端迁移到服务器了,只需要将程序所需的数据迁移即可。这迁移所需的时空资源大为降低。
三、将云应用程序存储于云端,由云网络提供方便的迁移。比如你在家上传了一个应用程序。那么你这个程序将保存在离你家最近的云网络中,当你需要将云计算“托管”出去,那么直接从最近的服务器得到该云计算服务即可。当你离开注册地(云应用程序上传所在地)时,在外地运行你所需的程序,可以通过云网络进行快速的转移,近而解决了云共享的问题。当然,这在用户看来是不可见的。
从这点来说,微软的.net战略还是具有一定的优势的。商业云的发展值得我们继续关注。
文章结尾语:
随着云计算技术的不断发展,以上谈到的各种问题也将逐步的解决,云计算所涉及的各种计算模式也将渐渐清晰,唯一还值得我们警醒的是:我们自己的云又以哪里,难道云计算只能靠大型的IT厂商来支持发展吗?我想不是的,在上面我也谈到,如果一台主机断网了或者局域网里面亦有着很多功能强劲的主机,为什么我们不能把云操作系统弄好一点,让这些离散的“云设备”(脱离了互联网的计算设备)也具有云计算的能力了-------实现了这种功能的云操作系统也是我们所需要的。所以不管是大云还是小的云朵,只要是给这个世界带来了美丽的风景线,就值得我们去创造它。