分类: IT业界
2008-11-22 17:54:05
什么是软件?软件(Software)是一系列按照特定顺序组织的计算机数据和指令的集合,
这是Wiki中文网的解释。计算机的数据和指令都以字节信息能的形式进行存储。而它们的
组织结构和顺序则由系统平台决定,这个系统平台包括硬件与操作系统软件。一般来说CPU
会一条一条指令地、顺序地去执行软件中的指令,而对于数据的存取则可能是无序的。
那么CPU是如何把我们的软件运行起来呢。首先我们对软件做个分类。如下图:
应用程序现最外层,越往里走越是接近硬件,共享库是一套工具集,而Driver是用户
程序与硬件交流的必经之路,系统软件则是生成用户应用程序的必要工具,所有层次的交流
到最后都要经过操作系统的Kernel(内核)及驱动程序与硬件进行交流(有一部分驱动程序
可以处于用户程序中)。
操作系统内核是对硬件的一层抽象,跟硬件的交流全部进行了封装,提供了一些接口给
其他程序使用,而基于操作系统的程序将使用操作系统提供的接口对硬件进行访问或说进行
信息交流。
首先计算机系统会把操作系统的内核加载到内存中的某一特点区域,然后执行操作系统
的指令,被运行起来的操作系统控制着整个计算机系统的资源,包括内存分配及回收,硬件
IO的操作,文件的管理,任务的管理等等。
操作系统本身就是一个非常复杂的软件,而且它本身的设计也决定了它内核的交流方
式。一般来说,内核的结构分为微内核和单内核。微内核就是将内核进行功能划分成若干模
块,模块与模块之间通过消息接口进行交流,各模块之间的运作是独立的。而单内核也被划
分成若干模块,但是模块之间的交流不是通过消息,而是直接调用,总体上来看它的各模块
之间在同一个大的模块内,就是内核。
操作系统内核是为了更安全,稳定,高效地使用计算机,使得开发人员可以更快地开发
出应用软件。每一个应用程序都可能有多个单独的应用程序组成,它们被操作系统加载到内
存中并运行起来后表现为操作系统所管理的一个个进程或任务。而这些进程之间的交流方式
多种多样,有很多计算机编程的书箱都会有细说的介绍,这里就不多说。
由于进行相对于现代计算机来说过去笨重,他们在切换时的上下文保存花去了太多时
间,所以又将进程划分成线程,这样的话在一个进程内部又同时有多个线程在分别运行着自
己的那部分指令,而且不需要切换上下文信息。
而其他软件的设计与操作系统的内核设计有很多相似的地方,所以任何软件的内部或外
部的交流都是相似的,都是字节信息能的复制。