走进Linux 操作系统


sp;      操作系统最底层的组件是内核,其上层搭建了许多系统软件。系统程序包括三个部分。这三个部分分别是:编译环境、应用程序接口和用户接口。编译环境包含汇编,c 等低高级语言编译程序,连接程序和装载程序,这些程序负责将文本格式的程序语言转变为机器能识别和装载的机器代码;应用程序接口(api)包含内核提供的系统调用接口和语言库,系统调用是为了能让应用程序使用内核服务,语言库函数则是为了方便应用程序开发,所以将一些常用的基础功能预先编译以供使用,比如对c语言来说常用的c库有gun c等;用户接口(aui)包括我们熟悉的shell(关于shell 应该专门写一个教程)、系统服务程序和常用的应用程序。     
    这些部分并非所有的操作系统都必须一个不少的包含,不过其中大多数功能都应该提供,尤其内核,系统调用,shell这些基本组件,它们都属于操作系统必备组件,其它组件是否包含需要根据具体系统的要求和应用环境决定,你也可以将其归为操作系统之外的附加部分。     

    系统程序:系统程序是相对应用程序而言的,应用程序针对终端用户需求完成功能,而系统程序则是为了简化应用程序的开发而存在的,比如数据库系统为了应用程序提供了有效的数据传输,存储服务;还有编程语言的执行环境——它由c库实现——也属于一种系统程序,它为应用程序开发提供了诸如i/o操作例程,图形库,计算库等等基础服务。可见系统程序范围覆盖很广,只要面相服务群体不是最终用户的软件都可以划归到系统软件中来。
    内核概念  操作系统最核心,最基础的组件就要属内核了——内核和操作系统的其它系统软件或应用程序本质的区别在于内核运行在高特权级,和硬件直接交互,操作权限几乎不收任何限制,因此内核程序编写也要求格外谨慎,必须保证效率和可靠。    
    特权级别:现代体系结构中往往为了保护操作系统(内核)专用的数据不被应用程序访问,以免关键数据泄露或系统被破坏,将系统(硬件机制)划分为不同的特权级别,敏感数据存在高特权级,且还规定了一些特权指令,其它级别的任务不能访问敏感数据和使用这些特权指令,只有处于特权级别的任务才有权使用。比如ox86体系结构中存在4个特权级别(0,1,2,3)linux操作系统将内核存在0级,其它任务运行在3级。0级被称为内核空间,3级被称为用户空间。内核设计的主要任务内核作为操作系统的核心,运行级别最高。其它系统程序都必须通过它才可以使用系统资源,获取系统服务。所以内核使用最为频繁,一切系统行为无论巨细都要通过内核参与。因此内核运行效率和正确性对整个系统的运行效率和可靠性至观重要,如果内核效率稍微下降,那么在应用程序中就必然造成层层放大。   
    内核要求高效率,所以它必须自系统运行起就要载入内存,并且在运行期间一直驻留在内存中,直到系统关闭。这是内核与其它应用程序或系统程序的另一个显著区别。虽然说内存今天已经不再是天价了,但是毕竟内存容量有限,所以内核大小不能过大(linux内核只有几m或十几m,甚至可以裁减得更小),因此内核只应该包含最基础和核心的功能,其它附加功能应该尽量提到用户空间完成。   
    那么到底有那些功能是操作系统使用最频繁,最需要在内核中实现的呢?内核直接架构于硬件资源之上,因此首先要做的就是对硬件的资源管理。因此内核必须负责:内存管理,进程和进程调度(对cpu的管理),文件系统管理,i/o处理等任务。  
    我们的杂志核心就是在解释内核原理的基础上,带领大家学习内核级别的开发,也就是说进行核心开发。本期仅仅给大家一个概念上的说明,描述内核设计需要完成的主要任务,至于具体内核各部分的详细讨论在后续期刊中将逐步展开。  
    内核至少需要包含如下几个模块。  进程管理:进程是操作系统中的执行代码,是任务在系统内的动态化身。内核必须负责将任务抽象为进程,而且必须能将进程执行,能为进程分配资源,维护进程的执行状态,提供进程间通讯方法。更进一步讲,进程管理还必须保证进程运行的可靠性,因此需要提供进程同步,互斥,防死锁等等服务,另外进程调度也是进程管理中的重要任务。  内存管理:计算机存储部件由快到慢、由小到大分为缓存、内存和磁盘。其中最主要和必须是内存,内存管理包括内存的分配和释放,以及访问保护等。另外对使用虚拟内存的系统,内存管理还包含虚拟内存管理,磁盘交换管理,内存影射等等。  
    文件系统:文件是多数系统中用户使用和管理数据的主要方式,文件系统需要负责用户文件访问,访问权限控制,文件格式转换,数据传输等一系列问题。  设备管理:除了存储设备外,系统还有大量外设需要操作系统管理,比如时钟,网卡,键盘,磁盘等等,设备管理需要负责驱动这些设备为上层调用服务。  
    i/o管理:操作系统中i/o管理负责处理复杂的i/o操作,其中包括i/o缓冲和磁盘调度等。  另外中断管理也是操作系统内核应该实现的功能。    
    以上是操作系统内核设计要考虑的主要问题,其中各种模块彼此相互交错、相互利用。不过这些模块的划分并不是绝对的,在实际系统中可能有不同的组合或更细致地划分,因此我们不必追究模块的具体内容,需要关注的是内核究竟需要完成那些功能。  内核模块大致也有层次之分,我们可以这样理解层次含义:直接和硬件作用的是硬件抽象层,和用户更靠近的属于逻辑抽象层。  所谓硬件抽象层,是指管理硬件设备的模块,比如存储管理、设备管理这些模块将硬件功能抽象为内核数据结构和接口函数,以供上层使用。比如磁盘设备驱动,需要将磁盘设备功能抽象为打开open,写入(write),读取(read)等接口函数;内存管理需要将内存抽象为页、段等结构体。然后分配、合并、释放等工作都是通过操作这些抽象得来的结构体,再由这些结构影射到内存的物理实体上去的完成实际操作的。  
    所谓逻辑抽象层最主要的目的是为了贴近用户需求,最重要的逻辑抽象模块就是文件系统,文件系统的存在完全是从用户角度出发设计的,因为用户最能接受以用文件形式包装的信息,所以文件系统属于逻辑上的抽象,因为物理设备中没有对应文件的实体。  
    对于进程管理来说,其中进程执行和调度要和处理器打交道,应该说属于硬件抽象层,但其中进程状态维护,进程通讯等更接近用户使用,因此可以归结到逻辑抽象层。  另外i/o管理和中断管理些模块,在内核中属于为其它模块服务的借用力量,它们主要被文件系统或设备管理模块使用,但总之是面向硬件的,所以也可以将其归为硬件逻辑层。                                                                           linux操作系统  在众多商业操作系统和免费操作系统中,linux占有独到地位,它不但功能强大,接近于工业强度,而且结构设计幽雅,具有良好的扩展性和移植性,接口定义规范,基本和unix系统兼容。更为重要的优势在于linux操作系统是最具影响力的开源软件,它的产生揭开了开元运动的新纪元,对自由软件发展起到了前所为有的推动作用。  linux开放性,也就是它不拘一格的拿来主义精神,吸引了无数软件爱好者热情的投入到其开发中去,因此linux是当今发展最快,范围最广的开元软件之一。它是社区中大家最乐意讨论和参与的项目,也正是这种开源精神使linux成为操作系统爱好者最好的良师益友,它在教育意义上的贡献是前所未有的。从这节起我们将进入linux世界去探索操作系统软件的严谨,去感受linux的可爱。linux操作系统的起源      linux的第一个版本诞生于1991年,它的作者就是现在大名鼎鼎linus torvalds,这个芬兰小伙子据说最初是在做一个作业调度系统的学校家庭作业,后来他突发灵感开始着手将系统改造为一个实用的操作系统,他在开发初期借助了当时最负盛名的教育类操作系统minx的一些思想和成果,但他的雄心是要将自己这个系统变的比minx更实用、更强健,因此他决定把自己的系统代码公布于众,并且欢迎任何支援者来修改和扩充linux系统——这正是我们现在耳闻祥熟的gun协议的权益——linux选择了当时在世界上最受推崇的un ix系统接口标准:posix.1来作为自己的内核系统调用接口,从此linux成为了unix风格操作系统家族中的新贵,而且是一个代码完全公开的操作系统。     linux的生命力来自于它的开源思想,自linus公开linux代码一来,世界各地的软件工程师和爱好这不断积极地对linux系统今进行修改和加强,先后将其版本从0.1 提高到2.0 、2.2、2.4到如今的2.6,同时linux也被从初期的x86平台移植到了powerpc、sparc、mips、68k等几乎市面上能找到的所有体系结构上。更另人激动的是,拜开源运动之新风,数不胜数的应用软件出现在linux系统之上,这样大大加强了linux系统的实用能力。     linux作为开源软件中的桂冠,越来越受到欢迎,毫无疑问地成为人气最旺,最活跃的gun项目,围绕linux的社区雨后春笋般的出现,这一切都预示着linux将在教育领域,在工业领域在政治领域将得前所未有的成功。linux 操作系统的技术特点   linux系统吸收了unix操作系统的精华思想——“简单就是美”,因此它采用了紧缩内核结构,只在内核中实现那些必要的功能,尽量保持内核精悍短小。至于那些丰富多彩的附加功能统统交给用户空间的库函数或其它系统软件或应用软件完成。  有时大家将直接将linux内核和 linux操作系统化等号,这也没错的。而我们上文提到的操作操作系统多数情况不仅仅只内核而且还只内核之上的系统程序,可以说是广义的操作系统概念,希望大家区别。  为了能受益于unix系统的影响力,linux采用了unix的系统调用接口标准poxis.1,保证了和unix系统的有限兼容,从而抓住了很大一部分unix技术人员。  另外linux起源于小型计、通用算机,并非针对大型和专用计算机设计,因此结构复杂性和规范性都比较适中。  还有就是目前多数linux操作系统版本都是以服务器为出发点,因此网络功能和系管理能力突出,多数应用也是专为网络管理服务的,对于个人用户所关注的桌面应用和嵌入应用关注的实时性支持尚且有限(今年linux发展的一个重要议题就是针对桌面和嵌入开发相应的内核版本)。  linux 内核的特点   linux是一种是实用性很强的现代操作系统,开发它的中

COPYRIGHT(C) 2011 厦门永宏亚得机电科技有限公司版权所有(闽ICP备05025945号) ALL RIGHTS RESERVED?

电话: 0592-5190891 传真: 0592-5190720 E-Mail: E-mail:yade8895@163.com
地址: 厦门市海沧区兴港六里17号2607室 邮编:361009 联系人:翟先生