张伟杰
(吉林建筑工程学院计算机科学与工程学院,长春 130118)
Linux是一种自由和开放源码的类Unix操作系统.目前存在着许多不同的Linux,但其都使用了Linux内核.Linux可安装在各种计算机硬件设备中,从手机、平板电脑、路由器和视频游戏控制台,到台式计算机、大型机和超级计算机.Linux是一个领先的操作系统,世界上运算速度最快的计算机运行的都是Linux操作系统.
Linux操作系统的诞生、发展和成长过程始终依赖着以下5大支柱:UNIX操作系统、MINIX操作系统、GNU计划、POSIX标准和Internet网络.
Unix操作系统是美国AT&T的贝尔实验室的Ken.Thompson,Dennis Ritchie和Douglas Mcllroy于1969年夏在DEC PPP-7小型计算机上开发的一个分时操作系统.1971年Ken.Thompson和Dennis Ritchie成功地用C语言重写了Unix内核.1974年,Unix以“仅用于教育目的”的协议,提供给大学作为教学之用,成为当时操作系统课程中的范例教材.各大学、公司开始通过Unix源码对Unix进行了各种各样的改进和扩展,于是,Unix开始广泛流行.后来,AT&T公司开始注意到Unix带来的商业价值,公司的律师开始寻找一些手段来保护Unix,并让其成为一种商业机密.从1979年Unix的版本V7开始,Unix的许可证开始禁止大学使用Unix的源码,包括在授课中学习.MINIX系统是由美藉荷兰侨民Andrew.S.Tanenbaum(AST)于1987年开发的,源于Unix源码被禁止使用,开发该系统主要用于学生学习操作系统原理.MINIX的名称取自英语Mini Unix,是一个迷你版本的类Unix操作系统,它是重新发展的,并没有使用任何的AT&T的程序码,到1991年时版本是1.5,当时该操作系统在大学使用是免费的,但其它用途不是,当然目前都已经是免费的.
GNU是“GNU’s Not Unix”的递归缩写,是一个名叫Richard Stallman认为Unix是一个相当好的操作系统,如果大家都能将自已所学贡献出来,那么,这个系统将会更加优异.他倡导的Open Source的概念,就是针对Unix这一事实,反对实验室里的产品商业化、私有化.实现一个仿Unix操作系统成了他追求的明确战略目标.为了这个理想,Richard Stallman于1984年创立了GNU,计划开发一套与Unix相互兼容的软件.1985年,他又创立了自由软件基金会(Free Software Foundation)来为GNU计划提供技术、法律以及财政支持.自发起这个计划以来,GNU开始大量的产生或收集各种系统所必备的组件,例如:函数库、编译器、调试工具、文本编辑器、网站服务器,以及一个Unix的使用接口(Unix Shell)等,但由于种种原因,GNU一直没有开发操作系统的Kernel.
POSIX表示可移植操作系统接口(Portable Operating System Interface),电气与电子工程师协会(Institute of Electrical and Electronics Engineers,IEEE)最初开发POSIX标准,是为了提高Unix环境下应用程序的可移植性.然而,POSIX并不局限于Unix,许多其它操作系统,例如,DEC Open VMS和Microsoft Windows NT都支持POSIX标准,现在它已经发展成为一个非常庞大的标准族[1].
1991年,芬兰赫尔辛基大学的一名学生Linus Torvalds,他主修的课程中有一门课是操作系统,专门研究程序设计和执行,并且本课程采用MINIX做为实验系统.Linus不满足于该系统的功能,就希望能给其添加一些功能.于是,他就根据实际的需要编写了磁盘驱动程序以便下载访问新闻组的文件,又编写了文件系统以便能够阅读MINIX文件系统中的文件,这就是0.0.1版本的Linux.
Linus从一开始就决定自由传播Linux,他把源代码发布在网上,于是,众多的爱好者和程序员也都通过互联网加入到Linux的内核开发工作中.这个思想与FSF资助发起的GNU的自由软件精神不谋而合.
GNU是为了推广自由软件的精神以实现一个自由的操作系统,然后从应用程序开始,实现其内核.而当时Linux的优良性能备受GNU的赏识,于是,GNU就决定采用Linus及其开发的内核.在他们共同努力下,Linux这个完整的操作系统诞生了.其中的程序开发共同遵守General Public License(GPL)协议和POSIX标准,规定了源码必须可以无偿地获取并且修改.
Linux以平均两星期更新一次的速度迅速成长,如今已经有超过250种发行版本,且可以支持所有体系结构的处理器,如X86,PowerPC,ARM,Xscale等.迄今为止,它的内核版本也已经从原先的0.0.1发展到现在的 2.6.xx.
Linux的特点有:自由软件,开放源代码;真正的多用户、多任务操作系统;可灵活裁剪配置;支持多种硬件平台;提供强大的管理功能;完全符合POSIX标准;具有丰富的图形用户界面;具有强大的网络功能[2].
Linux一般由内核、Shell、文件结构和实用工具4个主要部分组成.
Linux内核是整个Linux系统的灵魂,Linux内核负责整个系统的内存管理、进程调度和文件管理.它从用户那里接受命令,并把命令送给内核去执行.Linux内核的容量并不大,并且大小可以裁剪,这个特性对嵌入式系统非常有好处.内核功能主要包括进程管理、内存管理、文件系统、设备控制和网络功能.
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行.
实际上Shell是一个命令解释器,它解释由用户输入的命令且把它们送到内核.不仅如此,Shell有自已的编程语言用于对命令编辑,它允许用户编写由Shell命令组成的程序.Linux系统提供多种不同的Shell以供选择.常用的有 SH(Bourne Shell),CSH(C-Shell),KSH(Korn Shell)和 BASH(Bourne Again Shell).
Linux是一个多用户系统,采用目录的方式管理文件,呈多级树形结构,用户可以设置目录和文件的权限.如图1所示是Linux文件结构目录[2].
图1 Linux的目录结构
标准的Linux系统都有一套叫做实用工具的程序,它们是专门的程序,例如,编辑器、执行标准的计算操作等.用户也可以产生自已的工具.实用工具可分3类:
(1)编辑器:用于编辑文件;
(2)过滤器:用于接收数据并过滤数据;
(3)交互程序:允许用户发送信息或接收来自其他用户的信息.
内核、Shell和文件结构一起形成了基本的操作系统结构.它们使用户可以运行程序、管理文件,以及使用系统,而实用工具的程序,辅助用户完成一些特定的任务[3].
嵌入式Linux系统的开发,无疑是正在蓬勃兴起,并已形成了很大的市场,国内外很多大、中型公司都在进行嵌入式Linux的研究和开发[4].但就目前的技术而言,嵌入式Linux的研究成果与市场的真正需求还有一些距离,因此,要达到大规模商业化,还面临如下挑战:
(1)实时性,有待扩展.嵌入式操作系统的基本要求之一是实时性,因为Linux的内核不支持事件优先级和抢占实时特性,还不完全满足实时操作系统的要求,所以在以后的研究和开发的过程中,首要问题是扩展Linux的实时性能;
(2)集成开发环境,有待完善.Linux在基于图形界面的特定系统定制平台的研究上,与Windows操作系统相比还存在差距.因此,要使嵌入式Linux在嵌入式操作系统领域中的优势更加明显,整体集成开发环境还有待提高和完善;
(3)Linux内核体系结构是Monolithic,该结构效率高,体积大,不太适合嵌入式系统.而Microkernel结构,在内核中只包括一些基本的内核功能,体积小,较适合嵌入式系统.为此,要使嵌入式Linux应用更加广泛,若将Linux目前的Monolithic内核中的部分结构改造成Microkernel体系结构,可使得到的Linux既具有很好的实用性,又能满足嵌入式系统体积小的要求.
[1] 陈莉君,康 华,张 波.Linux内核设计与实现[M].北京:中国机械工业出版社,2006:2-5.
[2] 陈 颐.嵌入式技术原理与应用[M].北京;北京航空航天大学出版社,2011:254-258.
[3] 华清远见嵌入式培训中心.嵌入式Linux应用程序开发[M].北京:人民邮电出版社,2009:1-4.
[4] 任桥伟.Linux内核修炼之道[M].北京:人民邮电出版社,2010:2-13.