早期的计算机系统其实是没有操作系统的,因为操作系统本身也是靠计算机硬件执行的一种程序。因此,操作系统就是一种可以提供给其他程序编写并运行的程序。由程序来运行程序,而不是由程序自己来运行,这是操作系统提供的一种虚拟化表现。
1.早期计算机单任务模式
早期计算机只允许同一时间执行一个任务。比如开机,从软盘或者其他介质上执行程序,直到执行完毕或者人为中断。执行完后拿出介质,再插入另一张介质,重新载入执行另一个新的程序。在执行程序的过程中,一旦意外终止,就要重新运行。
如果有10个人要用一台计算机来执行程序,第一个人拿着他的软盘,上面有一个数学题计算程序,他插入软盘,然后靛启机器,扫描器从软盘特定的扇区载入程序代码执行。结果显示在显示器上,比如这个程序2个小时运行完毕,第一个人从显示器上抄下结果.走了。后面有9个人在排队等待用计算机。然后第二个人同样拿着他的软盘,插入软驱,重启……每次更换程序,都需要重新启动机器,简直就是梦魇。再者,如果某个程序运行期间。会有空闲状态,则其他程序也仍然需要等待,CPU只能在那里空振荡。
2.操作系统的多任务模式
操作系统的出现解决了这两个问题。操作系统本身也是一段程序,计算机加电之后,首先运行操作系统,随时可以载入其他程序执行,也就是说它可以随时从软盘上读取其他程序的代码,并切换到这段代码上让CPU执行,执行完毕后则立即切换回操作系统本身。但是每次也总是要等待这个程序执行完毕,才能接着载入下一个程序执行。当被载入的程序执行的时候,不能做任何其他的事情,包括操作系统本身的程序模块,任何产生中断的事件,都会中断正在运行的程序。
程序执行完毕之后,会将CPU使用权归还操作系统,从而继续操作系统本身的运行。这种操作系统称为单任务操作系统,典型代表就是DOS。
一丝在 DOS中载入一个程序执行,如果没有任何中断事件发生,则这个程序就独占CPU,执行完毕之后,回到DOS操作系统,接着可以继续执行另外一个程序。经过这样的解决,执行多个程序,期间就再也不用重新启动机器了。
在这个基础上,操作系统又将多个程序一个接一个的排列起来,成批的执行,中途省掉了人为载入程序的过程,这个叫做批处理。批处理操作系统,相对于单任务操作系统来说,可以顺序的、无须人上千预的批量执行程序,比简单的单任务操作系统又进了一步,但是其本质还是单任务性,即一段时间之内,仍然只会观察到一个应用程序在运行,仍然只是一个程序独占资源。
再后来,操作系统针对系统时钟中断,开发了专门的中断服务程序,也就是多任务操作系统中的调度程序。时钟中断到来的时候,CPU根据中断向量表的内容,指向调度程序所在的内存地址入口,执行调度程序的代码,调度程序所作的就是将CPU的执行跳转到各个应用程序所在的内存地址入口。每次中断,调度程序以一定的优先级,指向不同程序的入口。这样就能做到极细粒度的应用程序入口切换,如果遇到某个程序还没有执行完毕就被切出了,则操作系统会自动将这个程序的运行状态保存起来,待下次轮到的时候,提取出来继续执行。比如每10ms中断一次,那么也就是说每个应用程序,,可以运行10ms的时间。然后CPU运行下一个程序,这样依次轮回。微观上,每个程序运行的时候,还是独占CPU,但是这个独占的时间非常小,通常10ms,那么一秒就可以在宏观上同时运行100个程序。这就是多任务操作系统。多任务操作系统的关键,就是具有多任务调度程序。
通过这样的虚拟化,运行在操作系统之上的所有程序都会认为自己是独占一台计算机的硬件运行。
3.虚拟化的好处
上面说了计算机硬件以及操作系统,其实计算机系统从诞生的那一天开始,就在不断地进行着虚拟化过程,时至今日,计算机虚拟化进程依然在坛快发展着。
硬件逻辑被虚拟化成汇编语句,汇编语句再次被封装,虚拟化成高级语言的语句。高级语言的语句,再次被封装,形成一个特定目的的程序,或者称为函数,然后这些函数,再通过互相调用,生成更复杂的函数,再将这些函数组合起来,就形成了最终的应用程序。程序再被操作系统虚拟成一个可执行文件。其实这个文件代表厂什么呢?到了底层,其实就是一次一次的对CPU的电路信号刺激。也就是说,硬件电路逻辑,一层层的被虚拟化,最终虚拟成一个程序。程序就是对底层电路上下文逻辑的另种表达形式。
虚拟化的好处显而易见,虚拟化将下层的复杂逻辑,转变为上层的简单逻辑,方便人类读懂,也就是说“科技。以人为本”。任何技术,部是为了将上层逻辑变得更加简单,而不是越变越复杂。当然使上层越简单,下层就要做更多的工作,就越复杂。
整个计算机技术,从开始到现在,就是一个不断的抽象、封装、虚拟、映射的过程,一直到现在还在不断抽象封装着,比如Java等比C抽象封装度更高的高级语言,当然使用起来也比C方便和简单多了,但是随之而来的,其下层就要复杂一些,所以Java代码一般运行速度慢,耗费资源也大,但是对于现在飞速发展的硬件能力,是不成问题的。
同样,CPU也不仅仅只是一味地增加晶体管数量这么简单。CPU制造者也在想尽办法将一些功能封装到CPU的逻辑电路中,从而出现了更多的指令集,这些指令集就像程序函数一样,不必理解它内部到底怎么实现的,只需要发给CPU, CPU就会启动逻辑电路计算。所以CPU的设计除了提高主频之外,更重要的是内部逻辑的优化,集成度的提高,更多的抽象和封装。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:操作系统与虚拟化