• 沒有找到結果。

硕士学位论文

N/A
N/A
Protected

Academic year: 2022

Share "硕士学位论文"

Copied!
58
0
0

加載中.... (立即查看全文)

全文

(1)

分类号………

UDC…………

南大学

992540

密级…………

编号…………

CENTR AI.SoUTH

UNI、砸RSITY

硕士学位论文

论文题目: 垒全煎坠i坐坚鱼盐坠量鱼盘堡壅毽 鱼丝丝壶盘亟盍

学科专业: 盟差扭廛旦挂鲞

研究生姓名: 姻 溘

导师姓名及

专业技术职务: 塑盔型 煞撞.

(2)

摘要

随着计算机技术的发展,计算应用的模型也发生了重大改变。作

为一种新的载体——嵌入式系统应运而生。嵌入式系统研究的一个热

点和难点问题是嵌入式操作系统。为了满足专业领域的要求,嵌入式 操作系统有不同于通用操作系统的特点。

本文通过对Linux的内核结构的深入分析,了解了内核中各模块 间的功能和联系;并根据嵌入式系统的特点,提出Linux内核裁剪的 思想。针对内核的配置和重建,介绍了Linux内核裁剪的具体步骤,

详细阐述了每个步骤的工作目标和应注意的内容。

本文针对Ext2文件系统源代码研究,分析了Ext2文件系统数据 块分配以及数据块预分配的理论思想,并提出了其应用于嵌入式系统 的不足之处,从而迸一步提出了取消数据块预分配机制的优化方法和 实现方案,最终达到节省系统开销的目的,是Ext2文件系统能更好 的应用于嵌入式系统中。

同时,为了提高应用于嵌入式系统中的Ext2文件系统的读写效 率,本文针对Ext2文件的索引查找算法——二分查找法进行研究,

分析二分查找法的优缺点,提出采用B+树结构优化文件系统索引结 构的实现方案,并对其优化后的性能进行了综合分析。

关键字嵌入式Linux,内核,数据块预分配,文件系统,B+树

(3)

ABSTRACT

Witll the development of computer technology,there have great changes in the computing mode.As new type of compme,the embedded system appears.The embedded system consists ofhardware

and SOft,Ware,which combine closely to apply to certain special application fields.One of the hottest and hardest research problems in embedded system is the embedded operating system.To meet the special

demands ofapplications,embedded operation systems are differentfxom

general operation system.Ⅵ,llether ornot an embedded OS iS considered

successful one lies inthatto whatextentthe problems mentionedabove are deliberately solved.

The thesis iS come up with the current situation and theprospect of embedded system andembedded operation system.AndI broughtoutthe directory and plan of my project.As the same time,it descripts the

structure of the Linux’kernel,and the function of the modules in the kernel as well.Basingon thecharacters ofthe embedded system,I bring forth the idea about rebuilding the Linux’kernel.So m thethesis,I have introduced howto rebuild thekernel.It lists outevery detailed step ofthe rebuilding and the goal of every step.Itemphasize on the configuration of the kernel,as well aS,the settmg up of the root file system and

bootloader ofLinux.

It analyzes of the file system of Linux.BaSe On the analysis ofthe

source code ofthe Ext2 file system,it put eyes on the function and

mechanism ofthefile system.In order to minimize the consumption,the ideaofoptimizing thefile system isput forward isthe thesis.

In order to improve theefficiency

of删for

theExt2 file system,I compare the algorithm of the index in Ext2 file system with B+tree.and

put forward the idea of optimizing the Ext2 file system by using the algorithmofB+tree.

KEYWORD Embedded-Linux,kernel,file system,pre-allocation,B+

仃ee

Il

(4)

原创性声明

本人声明,所呈交的学位论文是本人在导师指导下进行的研究 工作及取得的研究成果。尽我所知,除了论文中特别加以标注和致谢 的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不 包含为获得中南大学或其他单位的学位或证书而使用过的材料。与我 共同工作的同志对本研究所作的贡献均已在在论文中作了明确的说

明。

作者签名:

关于学位论文使用授权说明

本人了解中南大学有关保留、使用学位论文的规定,即:学校 有权保留学位论文,允许学位论文被查阅和借阅;学校可以公布学位 论文的全部或部分内容,可以采用复印、缩印或其它手段保存学位论 文;学校可根据国家或湖南省有关部门规定送交学位论文。

作者躲衅新签泓期:赵年心卫日

(5)

硕士学位论文 第一章绪论

1.1矫究鹜景

第一章绻论

诞蔓l嵌入式系统这个名字,霹筏还有一部分天瓣它凌较模耧,毽蹙说到手撬、

掌上电脑,我想绝大部分人都不会陌生。是的,嵌入式系统融经悄然的出现在人 韶鹃学习、互俸潋至于嚣鬻生活豹每一令角落。随鏊数字嚣惑技拳秘怒络技寒静 高速发展,现在的IT也已缀相当发达了。可以认为:计算机无所芥在,它渗透 裂我靛工棒察生活浆方方西嚣。讴是绝大多数计算辍是以转谤算辊魏形式基瑗 的。这些设备的核心部分都有计算机,大多是以嵌入式系统的形式存在,而不是 荻整辍弱形蒙譬现在太囊暇嚣。嵌入式系统已经广泛建应魏裂科学舔窕、工程设 计、军事技术、商业文化蕊术、娱乐业以及人们的目常生活锌方方璇面。随着国 内外嵌入式产品(鳃车载电藏,瓿溪鑫等)媳进一步开发嬲推广,焱入式技本越 来越和人们的生活紧密相关。我们能够想鬏有人可能觚来没有接触逍计算梳,但 甭能想象饮从来没夺接触过嵌入式系统。从家庭的洗衣规,孚枧,数码相桃,小 汽率,到办公室里的远程会议系统簿,这些都属于可戳使用嵌入式技术进襻歼发 和改造的产晶。

1.1.1嵌入戏系统的定义

借用电气工程师协会(IEEE)的一个定义n1:嵌入式系统是用涞控制或般视 税器、装嚣壤工厂簿斡大甄模系统翡凌釜。广义她浇,囊入式系统是奄越软{孛与 硬件的综合体,它是以应用为中心,以计辣机技术为基础,软硬件可裁剪,从而 笺够适应突藩瘦麓申黯功能、霹奏链、残本、髂积、礁耗等严格要求熬专孀诗算 机。

1.1.2嵌入贰系统酌特点

嵌入式系统蠢淡下特杰;

1.嵌入式系统理所当然是~种计算机产品,它是一种将先进的计算机技术、

半导蓓按零浚及患予按术与各个行遭弱具侮应爱稿续会懿产耪12.3t;

2.嵌入式系统都具谢低功耗、体积小、集成腱高等特点。嵌入式系统通常 是麓鑫焉户,垂两产鑫,蔼彝特定矗爱豹;

3.嵌入式系统具有较长的生命周期。嵌入式系统和舆体应用霄杌地绪台在

(6)

硕士学位论文 第一章绪论

一起,其升级换代也是和具体产品同步进行。嵌入式处理器的发展体现出稳定性,

一个体系一般要存在8.10年的时间:

4.嵌入式系统稳定性较高。为了提高执行速度和系统可靠性,嵌入式系统 中的软件一般都固化在存储器芯片或单片机中,而不是存贮于磁盘等载体中,而 且对应的软件一旦写入,通常情况下不会更改。

5.嵌入式系统运算速度和存储容量有限。因为通常情况下,嵌入式系统的 体积都比较小,也就是说硬件配置有限,这只能通过改良算法或者提高硬件配置 来弥补。

6.嵌入式系统本身并不具备在其上进行进一步开发的能力。在设计完成以 后,用户如果需要修改其中的程序功能,也必须借助于一套开发工具和环境。

1.1‘3嵌入式操作系统的定义与特点

嵌入式操作系统14】顾名思义,是专用于嵌入式系统中的操作系统。但不是说 所有的嵌入式系统都有对应嵌入式操作系统,除了是用于嵌入式系统上之外,

还应该具有操作系统的特性——能够完成进程管理、内存管理、进程通信等等 功能;能由它来对整个嵌入式系统的硬件资源进行管理,并为用户提供易用的 软件平台。由于嵌入式系统的自身特点,嵌入式操作系统又与一般操作系统有 所区别:

1.微型化:嵌入式操作系统的运行平台不是普通的计算机,而是嵌入式计 算机。这类嵌入式信息装置中一般没有多少内存可用,外存也几乎是空白。因 此嵌入式操作系统必须做的比较微小,以尽量少占用系统资源;

2.高质量、高可靠性:尽管半导体技术的发展使处理器速度不断提高、片 上存储器容量不断增加,但在大多数应用中,存储空问仍然是宝贵的,还存在 实时性的要求。为此,要求操作系统及编译工具的质量要高,以减少程序二进 制代码长度,提高执行速度;

3.实时性:嵌入式系统广泛应用于过程控制、数据采集、通信、多媒体信 息处理等要求迅速响应的场合,因此实时性成为嵌入式操作系统的又一特点。

1.2研究现状

1.2.1嵌入式Linux的研究现状

国内外各大机构对嵌入式Linux系统的研究与开发已经持续了一段时间,并 取得了相当多的成果。比如一些新型的公司Lineo、TimeSys、FsmLabs等,他们

(7)

硕士学位论文 第一章绪论

利用自己掌握的将Linux嵌入化的方法,吸引投资,开发出了成型的产品;也有 一些传统的Linux公司开辟了这方面的研究,如RedHat、VA Linux等15】;更值 得重视的是,一些传统的大公司如IBM、SGI、Motorola、Intel等也进行了Linux 的嵌入式方面的研究和开发;另外还有一些开发专有嵌入式操作系统的公司,如 Lynx公司等。

这些公司的研究成果按研究的方向可以分为三大判6,7,8,针。第一类是专门研

究Linux的嵌入式方向,即如何让Linux更小、更容易嵌入到体积要求和功能、

性能要求更高的硬件中:第二类是专门研究提高Linux的实时特性,即将Linux 开发成实时系统尤其是硬实时系统,应用于一些关键的控制场合(不仅仅是信息 电器);第三类则是将实时性和嵌入式方案结合起来,很多公司都沿着这个方向 展开研究。

国外对于嵌入式Linux的研究如火如荼,国内的研究也不甘示弱。国家“863 计划”重点支持项目中就有使用Linux作为嵌入式系统开发的方向【9J。共创软件联盟是嵌入式Linux操作系统应用领域中不可忽视的一股力量,该联盟由国家,

“863计划”智能计算机专家组牵头,联合国内数十家软件企业、科研机构和大专 院校,目标产品是机顶盒和PDA。除此之外,中科红旗、中软、博利思等公司。矗 也同样将嵌入式Linux系统的研究与开发作为自己的主要发展方向之一。由于..

Linux自身的优良特性及众多公司科研单位研究力量的投入,相信嵌入式Linux

在不久的将来将成为嵌入式系统领域的一朵奇葩。 ’o

MontaVista公司的Hard HatLinux是专门为将Linux做成嵌入的系统而推出 的。可以根据HardHatLinux为系统启动和运行环境做出合适于嵌入式硬件系统 环境的配置,以获得最好的性能和最小的体积。该产品的最大的特性就是提供了 一个易用的交叉开发调试环境——CDK(CmssDevelopmentKit)IloJ,包括C/C++

的编译器、调试器、性能监控工具和网络工具。支持在x86/Pentium处理器芯片 上的RedHat Linux上运行CDK的PowerPC版本,通过以太网或者串口线对目 标系统上的嵌入式应用进行开发。

这方面的其他成果还包括Lineo公司开发的Embedixlll】。Embedix的设计使 用了模块化的设计方案,方便剪裁系统,从而可以生成最合适需求的Embedix 内核,达到体积和功能的最优化。

对于嵌入式Linux实时性领域的研究,国内外也取得了一定的成果,

RT-LinuxI挖1是利用Linux进行实时系统开发比较早的尝试,新墨西哥州大学计算 机系的Victor Yodaiken和Michael Baranov在1996年就开始了对RT-Linux的开 发。RT-Linux的原理是将Linux的内核代码做一些修改,将Linux本身的任务以 及Linux内核本身作为一个优先级最低的任务,而实时任务作为优先级最高的任

(8)

硕士学位论文 第一薄绪论

务,即在实时任务存在的情况下遮行实时任务,褥则才运行Linux本身的任务。

实时任务不因于Linux酱遴进程,它是鞋Linux鲍内核模块(LinuxLoadableKernel Module,LKM)的形式存在的。需爱运行实时任务的时候,将这个实时任务的内 核模块插入至《内孩中去。爽黠任务窝Linux一般进程之闻鳃通馈逶过共享内存或 者FIFO通道(用Linux虚拟字符设备)来实现。

1.2.2嵌入式LintLx操律系统的优势和发畿

麸20整纪80年代开始,蹬现了各耪各样的饔监瑶溆入式操作系统。这些 操作系统大部分都是为专有系统而开发,从而形成了目前多种形式的商用嵌入 式攥露系统百家争鸿瓣是瑟。翅VxWorks,pSOS,PalmOS秘WindowsCE簿【121。

而嵌入式Linux由于自身诸多优势逐渐成为嵌入式操作系统的新宠,吸引了众多 嚣发亵窝瓣磁院掰懿注意力。

所谓嵌入式Linux系统,就是根据实际情况的需要对发行版的Linux进行适 兰戆裁减,褥裂一令夺鍪}系统,黢够圈亿在容量岁专袁霓◆万字节戏足卡亿字节 的存储器芯片或单片机中,应用于特定嵌入式场合的专用Linux操作系统。嵌入 式Linux瓣舞发秘磅究是疆蔻操馋系统领域戆一令热点。与其缝豹焱入式搽痒系 统相比,Linux具有一些独特的优势:

l。蓥先,Linux系绞的源代弱是完全嚣放懿。在走核代码完众舞放黪蘸提 下,不同领域和不同层次的用户可以根据应用需骚很容易地对内核进行改造,

趁低成本的前提下,设计秘开发出真正满足需要黪嵌入式系统;

2.强大的网络支持功能。Linux诞生予因特嘲并具有Unix的特性,遮就保 试了它支持所有标准医特潮协议,并且可以剽用Linux的嘲络协议梭将其搿发成

为嵌入式的TCP艚网络协议栈:

3.Linux具餐一整套工具链,容易是季亍建立嵌入式系统的开发环境和交叉 运行环境,并且可以跨越嵌入式系统开发中仿真工具的障碍。一般开发嵌入式 操作系统的程序调试和跟踪都是使用仿真器来实现的,而使用Linux系统做原 黧,可敬绕过这个障碍,赢接使磁内核调试器来儆操作系统的内棱调试和凌错:

4.Linux具有广泛的硬件支持特性。光论是RISC还怒CISC、32位还是64 僚簿各种簸理器鼢|41,Linux都能运行。Linux最通常使用静镦处理器是IntelX86 芯片家族,但它同样能运行于Motorola公司的68K系列CPU和mM、Apple、

Motorola公司豹PowerPCCPU戳及InteI公弼酶StrongARMCPU等处理器系统,

这懑味着嵌入式Linux将具有更广泛的应用前景。

鑫蓠,嵌入式Linux系统研究芷在蓬勃兴起,并且已经开辟了缀大翡市场,

除了一些传统的Linux公司,像RedHat、VA Linux等正在从事嵌入式Linux的

(9)

硕士学位论文 第一章绪论

研究之外,一批新公司(如Lineo、TimeSys等)和一些传统的大公司(如IBM、

SGI、Motorola、Intel等)以及一些开发专有嵌入式操作系统的公司(如Lynx)

也正在进行嵌入式Linux的研究和开发。

根据~家专门进行嵌入式Linux系统信息发布的网站 http://www.Linuxdevices.coIIl/的调查【15】,有52%的用户决定在未来24个月内使用 Linux作为嵌入式系统的开发原型,而只有21%的人仍然使用专有操作系统,19%

的人仍然使用W‘mdows系列操作系统做嵌入式系统开发。这充分说明了利用 Linux开发嵌入式系统的生命力。由于Linux嵌入式系统的强大的生命力和利用 价值,越来越多的公司和大学都不同程度地表现出对它的研究兴趣。

1.23嵌入式Linux研究中存在的问题

尽管有以上众多的研究机构取得了卓有成效的成果和产品,但就目前的技术 面言,嵌入式Linux的研究成果与市场的真正需求还有一段差距。因此,要开发

出真正成熟的嵌入式Linux,还需要面对和解决以下几个问题:

1.对Linux内核的裁剪

这是构建嵌入式Linux的最基本的一步。由于不同的嵌入式系统功能也各不 相同。就要求对内核作出不同的模块裁剪,而内核的模块之问可能环环相扣,所 以这一步必须做到精确。如何裁剪能使得操作系统更适应于嵌入式系统,如何裁 剪才能更好的提高系统的性能,这是需要研究的问题。现在,对于同一种嵌入式 产品,其操作系统以及操作系统中的模块仍然在不停变更,目的就是为了提高产 品的性能。

2.提高文件系统的性能

文件系统对于一个操作系统而言是必不可少的,对于文件系统的研究也是日 新月异。由于嵌入式系统的资源有限,如何在有限的资源里最大限度的发挥文件 系统功能,是人们不断研究的课题;随着技术的提高,存储资源的扩大,文件系 统有要做出什么样的改变才能更好、更有效的执行其功能是第二个问题。

3.扩充Linux的实时系统

高实时性是嵌入式操作系统的基本要求。由于Linux是一种通用操作系统,

而不是一个真正的实时操作系统,内核不支持事件优先级和抢占实时特性。所以,

在开发嵌入式Linux的过程中,首要问题是扩展Linux的实时性能。一般来说,

对Linux实时性的扩展可以从两方面进行:向外扩展和向上扩展。向外扩展是从 范围上扩展,让实时系统支持的范围更广、支持的设备更多。目前的开发所面向 的设备一般仅限于较简单的、有实时要求的串/并口数据采集、浮点数据计算等

Il6】,而像实时网络这样实时系统的高级应用还需进一步的研究。向上扩展是扩

矗:

毒毒

(10)

硕士学位论文 第一章绪论

究Linux内核,从功能上扩充Linux的实时处理和控制系统。

4.改变Linux内核的体系结构

Linux的内棱体系采用的是Monolithicf”j,程这种体系结构中,内核的所有 部分都集中在一越,面且所有的部件在一起编译连接。这榉虽然能使系统黝各部 分直接沟通,有效地缩短任务之间的切换时间,提高了系统的响应速度,实时性 好并提高了CPU的利用率,但在系统比较大的时候体积也bE较大,与嵌入式系 统容量小、资源搿限的特点不符含。而另外一种内核体系结构MicroKemeli”,

谯内核中只包括了一些基本的内核功能如创建和删除任务、任务调度、内存管理 和中断处理等部分,而文件系统、网络协议栈等部分都楚在用户内存空间运行。

这种结构照然执行效率不如Monolithic内核,但大大减小了内核的体积,同时也 极大遣方便了整个系统静升级、维护和移植,困既驻能满避嵌入式系统的特点需 要。为此,为使嵌入式Linux的应用更加广泛,可以考虑将Linux目前的Monolithic 肉孩结季每审豹部分结擒改造成MiemKemel体系结构。遁_;童这种薪中办法,可戳 使得到的Linux既具有很好的实时性,又能满足嵌入式系统体积小的要求。

5。究善Linux懿集戒开发强凌

提供宪整的集成开发环境是每一个嵌入式系统开发人员所期待的。一个完整

蠡孽嵌入式系统戆集残舞发坏壤一般需要撬供赘王爨是编译涟接器、蠹核谲凌满l

踪器和集成图形界面开发平台。其中的集成图形界面开发平台包括编辑器、调试 嚣、款锌伤龚器器j|耋援器笛。在Linux系统孛,其骞凌戆骚大戆gce编译器工兵 链,使用了基于GNU的调试器gdb的远程调试功能,一般由一台客户机运行调 试程序,调试瘩主掇运短熬操嚣系绞蠹核;在佼鼹远程开发辩还《戳接援交叉乎 台的方式,如在Wmdows平台下的调试跟踪器对Linux的宿主系统做调试。但 是,Linux在基于黧形界瑟懿特定系统定铡平台戆磺究上,与Windows操撵系统 相比还存在差距。因此,鼗使嵌入拭Linux在嵌入斌操作系统领域中的优势更加 明最,整体集成嚣发琢壤还有待撼嚣积完饕。

1.3磺究曩标和研究内容

1.3.1研究目标

嵌入式Linux的相关研究是一个非常魔大的研究课题,涉及到体系结构、操

{譬系统等多门计算机学科知识。限于精力并结合实际项目需要,本文主要针对以 下三个目标展开研究工作:

t。分析Linux的源代码,磷究其实现祝裁,强麓掌撰这个广泛使雳豹优秀 操作系统的核心技术:

(11)

硕士学位论文 第一章绪论

2.把握当前操作系统理论的发展方向,研究实现嵌入式Linux内核裁减方 法,裁减和构建出体积尽可能小,消耗资源尽可能少的嵌入式Linux操作系统;

3.在裁减好内核的基础上进一步对文件系统做出更深一步的研究,提出自 己的优化方案。

1.3.2研究内容和研究方法

在这三个研究目标中,第一个目标是做铺垫工作,只有在搞清了Linux本身 的实现机理,才有可能对其作裁减或修改工作:第二个目标主要是获得理论和方 法上指导,以便能够把握方向理清技术路线,并能根据理论知识指导自己完成裁 减的基本工作:第三个目标则是要在前两步的基础上优化该系统。针对上面的研 究目标,将分阶段、分模块开展研究工作,本文中主要研究工作如下:

1.分析Linux内核主要模块结构,研究分析相关部分的源代码,理清各模 块之间的关系,掌握核心模块的实现机制与实现方法:

2.研究实现Linux微型化和构件化的相关理论,完成配置内核以及其他相 关的裁剪工作,能使裁减后的内核正常启动;

3.研究Linux的文件系统——这里指的是最常用的Ext2文件系统的原理及 相关代码,结合嵌入式系统的特点,对其数据块分配功能中特性提出对应的优化 和改造方法。

1.4论文结构

论文共分六章,结构如下:

第一章介绍课题研究的相关背景,研究的现状及研究内容。

第二章对Linux内核主要功能模块做重点分析,给出嵌入式Linux构建的微 型化和构件化的策略与方法。

第三章中本文结合理论知识对现有的Linux内核进行模块裁剪,完成构建嵌 入式Linux操作系统的基本工作。

第四章中本文针对嵌入式的客观要求,对Linux文件系统的数据块分配功能 进行研究和优化改造。

第五章中本文针对链式结构的Ext2文件系统索引方式,从理论上分析并比 较B+树结构的查找方案,提出改造设想。

第六章为工作总结,及下一步工作安排。

二:

≈嘧・

(12)

硕士学位论文 第二章Linux内棱结构分析

第纛章Linux内核结构分析

2.1 Linux2.4版本内核余绍

2.1。1 Linux的内核绩梅

Linux内核主要由进程调度、晦存管理、虚拟文件系统、网络接口和逖程闻 邋信五部分组成f嘲。袍稍各自韵功能为:

1.进程调度负责控制进程对CPU的访问,调度程序使用一种策略确保所有 的进程都辘公平静访溺CPU,著艇确保肉核在任意时刻麓执行必疆的硬{串操作;

2.内存管理负责管理系统的物理内存,实现多进程安全的麸亭计算机的内 存。另井内存管理支持虚豫蠹存,使进程可以使用穴于实际物理斑存豹沲稃途址 空间。不用的内存地址空间被导出到文件系统中并在需要使用时再导回到物理内 存孛:

3.虚拟文件系统通过将各种设备抽象为一种公共接阴,从而屏蔽了器种硬

{攀设备懿缀节;

4.网络接口实现了对各种网络标准和网络硬件的访问;

5。遴程溺逶傣子系统实瑗了系统内遴摇阉戆多耱逶傣橇铡。

这五个子系统互相依赖,但相对来说进程调度处在比较重要的地位。其他子 系绞嚣要接起窝恢复进程瓣运行都必须婊纛进程调瘦子系绫戆参冬。逶豢一令进 稷在等待硬件设备时被挂起,硬件设备返阐结果后继续运行。当然,其他予系统 也≤#零重簧:进程诞度在囊动进程融零要内存管理子系统遂牙内菇处理。滋程霹 通信系统衙要内存管理实现进程间的内存拭享。虚拟文件系统需要使用网络接口 实现网络文传系绞,两且使用内存管理子系统实现ramdisk设各。内存管理器要 使用虚拟义件系统实现内存的交换。

2.1.2Linux内核的特点

分褥一个搽孬系统苕先应看其采霜静体系结{鸯,不蠢豹体系结构导致截然不 同的性能和特点。当前操作系统的体系结构主要包括单体结构(Monolithic)、层 次结稳、徽痰核缭枣弩(Mierokemel)三耱类鍪。Linux蠹狻整俸上采溺豹怒荜俸 内核结构。这种结构的特点是把操作系统备模块作为一个攘体编译运行,模块间 联系跑较紧密,联蔽撬行效率较袁。毽其姣熹是胃修改牲鞠虿扩鬟性魄较簸,骖 改一个模块会导致其他模块的相关修改,该过程相当复杂。

(13)

硕士学位论文 第二章L/flux内拔结构分析

虽然Linux是一个单体内核操作系统,但它与传统的单体内核UNIX操作系 统不同。在普通的单体内核系统中,所有内核代码都是静态编译连入的。而在 Linux中,可以动态装入和卸载内核中的部分代码。Linux中将这样的代码段落 称为模块(Module),并对模块给予了强有力的支持。在Linux中,可以在需要

时自动装入和卸载模块。

Linux内核并不支持用户态线程。线程是同时执行的共享资源的程序段。在 线程问切换要比在进程间切换的开销少,大量使用线程可以使系统的效率得到提 高。从而,线程在现代操作系统中得到了广泛的应用。但Linux中线程的使用却 很少见到,只是在内核态中定期执行某个函数时才会用到线程的概念,这些内核 态线程由于不具有上下文(context),故而不能在用户态使用。在用户态中,Linux 通过另一种方法解释并实现LWP(Light Weight Thread)的机制Il”。Linux中认 为线程就是共享上下文的进程,并可以通过系统调用clone()来创建新的线程。

Linux的内核为非抢占式的(non.preemptive)。这就是说,Linux并不能通过 改变优先权来影响内核当前的执行流程。这样,Linux内核中可以对某些重要的 数据结构进行修改而不加任何保护措旌,因为不担心被其他程序所抢占。但如此 一来,实时任务也就不能够得以保证,所以Linux并不是一个“硬”实时操作系统。

Linux从2.0版起,其内核就对多处理器结构进行支持。2.2版中对于对称多 处理器(Symmetric Multi.Processing,简称SMP)120】进行了支持。这样,任意处 理器可以执行任意程序。但是,Linux中并没有针对SMP结构进行优化,即虽 然具有多个处理器,但所有内核代码还是顺序执行的,不可能并发执行。

2.1.3Linux内核的文件目录

1.Kernel目录

此目录下文件实现了大多数Linux系统的核心函数[2H,其中最重要、最主要 的文件当数sched岛关于进程控制的文件也位于此目录下。其中包括fork.c文件,

定义了创建、“克隆”予进程的函数do fork(),exit.c文件定义结束自身进程的 doexit(),各种wait操作,以及发送信号(signal)操作sent_sig。而signaI.c文

件中的函数都是关于信号控制的。

Linux设计一种模块机制。这种机制可以让诸如设备驱动程序等软件模块动 态地连接到系统核心中。而ksyms.c文件定义不属于任何子系统的Linux的全程 变量。

此外,该目录下还包含一些重要的文件,如:time.c提供用户程序与系统之 间关于时间的操作界面:resource.c关于I/O端口资源(port)的管理;dma.c关 于DMA通道的管理;

;j

一督

■ r

(14)

碗士学位论文 第二章Linux内核结构分析

sofirq.C关于boRomhalf队列的操作:itimer.c关于Rimer定时器读舄的系统调用;

pfintl【.c戚示系统工作参数的操作,如printk。

2。ram(Memory Management)gl录

在这个目录下,存放这有关内存管理的源文传,如页戏存储蟹理、内存的分 配和释放等等口“。

Swapfile.c文佟是管理交换文件和交换设备的源程序赝在。宅包括swapon、

swapoff系统调阕的执行程序,以及从交换空间申请空阑页面的操作 get_swap_page;Page._io.C文件则实现了与交换空脚底层的数据传输;Swap_state.e 文件维护swap缓存,它饿括(可以说)存储管理系统中撩复杂、最难懂的操作 和结构;Vmscan.c文件定义后交换进程kswapd的代码,以及内存空间扫描函数,

实现Linux的页舔涣出策酶,如姆to 。.free.pages

所有的存储分配策略都在illm目录里实现。例如,kmalloc.C实现核心内存 块(浚数攒结构flee a∞ea表为入秘)的搽作kmalloc()、kfrce()等;Vmalloc.C 里包含vmalloc()、vfree()、vremap()等黼数:物理页面的申请函数源程序集中 在lxtge舔 .孛;内存管疆孛低滋核心滋数大多安撩在 memory.c文释孛,如缺.10c

页中断响廒函数,以及众多页表管理函数;虚拟空间映射操作以及系统调用brk 兹晌应蘧数,都涉及进程寝羧空润遥蛙戆诞整,稳关源代鹃在mmap.e文{孛孛。

对mremap的操作代码则在mremap,C文件中。

3。热嚣录

Linux能支持多种文件系统,宦所支持的文件系统类型都包含在这个文件加 下。每秘文徉系绫类型郝淤一令狻立戆文转热存在。舞票嚣要添热颛豹文锌系统 支持,就可以将对威的描述文件以及文件系统相关操作以及功能源文件以一个新 鳆文件夹保存在该嚣录下。

除此之外,从图中还可以看到有很多后缀名为.c的文件,这些都是关于文 撵操作的源代码。Fs曩豢源程序滚盖各耱类型憨文传系统秘文{孛操传。该基录 下的每个予目录则分门别类地描述了某个特定的文件系统。

直接滚属该目录的文传分别懋:Exec。C实理ex∞ve系绫调用;Device。C负责 设备的注册和注销,定义缺省的打开设备操作和释放设备操作;Block dev.c包 含缺省的读、写设备操作;Supcr.c定义越级块鲍读操作,以及维护inode缀存鲍 程序;Dcache.C维护dcache的文件;namei.c访问税限检查,根据路径检索dentry 的相关操作;Buffer.c实现缓存区缓存的文{牛;Open.C实现文件的打开、关闭操 律,系统调用chowm、chmod、fchown、fchmod、chroot、chdir、fchdir等也由 该文件实现;Re8d write.c实现系统调用read、write、lseek、llseek的源程序;

Readdir.c实现读秘录项的系统调阕readdir和getdents;Select.C戴中存放select

10

(15)

硕士学位论文 第二章Lin“内核结构分析

操作的几乎全部源代码;Pipe.c和fifo.c实现管道和命名管道;locfl.c实现系统 调用ioctl;fcntl.c实现关于fcntl操作命令的源代码;dquot.c支持磁盘配额机制。

4.arch目录

与CPU类型相关的子目录和文件均集中安排在此目录下。这里又有子目录 alpha、arm、i386、ia64、m68k、mips、mips64、parisc、ppc、s390、spare,每 个子目录对应一种CPU类型。当装载Linux的时候选择那种类型的CPU结构,

系统会在该目录下找到对应的支持。

5.include目录

容纳Linux源程序的所有头文件(header file)。其中,与平台无关的头文件 在include/Linux子目录下,与intel CPU相关的头文件在include/asm.i386子目录 下。另外,还有关于SCSI设备的头文件目录include/scsi,关于网络设备的头文 件目录include/net。

6.net目录

在net目录中存放的是和Linux网络相关的c文件。其中每一种网络地址簇 都为一个目录,在core目录下是各种网络地址簇公用的文件。另外在sehed目录 下存放的是对高性能网络的QoS支持,khttpd目录中存放的是内核级别的web 服务器支持。

2.1.4Linux内核的源代码分析

对Linux源代码分析是一个非常繁琐、费精力的过程,必须掌握良好的方法 才能达到事半功倍的效果,总结前面的工作可理出以下几点经验供参考:

1.在分析操作系统源代码的时候尽量首先进行模块分析,然后进行系统调 用分析,最后再偏重于功能分析,这样有利于了解系统协调工作的实质。

2.在分析每一模块时,应首先建立整体的运行机制,然后理清数据结构及 其之间的关系,以数据结构为主线,分析在其上层的操作和达到的功能。

3.在分析模块的具体功能时应结合相关源代码的阅读,掌握在代码级Linux 是如何实现这些功能的。

4.在分析操作系统的功能时应结合操作系统理论,了解Linux在实践上是 如何实现这些理论思想的,同时寻求能借用某些先进的操作系统思想来指导裁减 和改造Linux内核工作。

源代码分析工具有:

1.VS.NET

对于Linux这个90%以上的代码是采用C编写的操作系统,在W'mdows下 如果要察看Linux内核的源代码,VS.NET是一个很好的工具,因为它本身就是

(16)

碰士学位论文 第二章Linux内核结构分析

一个强大的编译器。VS.NET的界面鲜明,而且不管是.NET框架中封装的类还 是用户自穗定义的类或璐数,它都能提供很好的联机帮助,这使褥用户缡辑代 码或是分析代码都非常方便。

2。SOIIrCe Insight

Source Insight是一个功能强劲的程序编辑器疆2j。它内置对C俺++,Java和 x86汇编语言程序的解析,支持几乎所有的语言,如C、C++、ASM、PAS、ASP、

HTML等。还支持自己定义关键字,有自融的动态数据库在编程对提供有翔的文 本提示,包括有关的函数,宏,参数等。Source Insight提供了可快速访问源代码 和源信息豹功能,箍显还可以帮渤分析源手℃码,并在编辑的同时立剽提供有用的 信息和分析。Source Insight自动创建并维护它自己高性能的符号数据库,镪括函 数、method、全擒变量、结擒、类和工程源文薛墨定义的其它类登的符号。

3.Linux下的文本编辑器

这个工具不魏麓瑟所说懿两种,德显瀑方式燕纯文本方式,掰茨对于代码的 结构不是非常的鲜明。但t融有一点方便之处,就是可以在Linux下察看和编辑源 文锌,保存嚣壹接遥过Linux下熬e编译器gcc/cc进行编译,在遴遘makefile、

makekemel等命令编译新内核。事实上,Linux下的应用穰序很多都是直接使用 该王其迸褥编辑。

2.2 Linux内核分耩

裁减秘骛改Linux内援漂代码楚一{睾嚣豢复杂翡工佟,宅要求糖逶Linux戆 内核原理和体系结构,并具有娴熟的程序设计技术。

2.2.1内核豹整体缩构

Linux内核有自己的体系结构,其中遴程管理、内存管理、遗程闽遥嵇和虚 拟文件系统是其中最主要的4个模块。它们之间的关系框架图如图2.1所示。

该框絮中,可将虚线部分看戒怒Linux痰核静肇蠹核结构。焉户进程霹戳直 接通过系绕调用或者函数瘁来访问内核资源。正因为Linux内核具有这样的结 构,嚣梵修改蠹核对必矮浚意各令予系统之阋匏协调。弼翔:若要改动Linux默 认的Ext2文件系统,则至少要考虑到每一个进程都可能要打开文件列表,进程 毯建、运露_鞫结束这一系裂过程都奄文{牟系统骞牵连,毽诧耀瘟豹枝羁都要修改。

另外内存管理与交换文件有关,执行交换功能的内存子系统函数也需改动。

Linux内孩采缮静结椽移辊镧怒{}常复杂稳,建篱荤秘结稼鬓怒不可麓搓述 清楚的,由于篇幅下面将熏点分析其主要模块。

12

(17)

硕士学位论文 第二章Linux内核结构分析

用户进程

叫罴系统调用|+_J

i/内核部分

图2-1 Linux模块框架图

2.2.2进程调度

Linux进程管理由进程控制块、进程调度、中断处理、任务对列、定时器、

bottomhalf队列、系统调用、进程通信等部分组成。Linux的进程控制块task struct 是Linux最复杂的数据结构之一,包括了进程调度、信号处理、进程队列指针、

进程标识和用户标识、定时控制、信号量处理、上下文切换、文件系统管理、内 存管理、进程状态和进程标志等等信息,累计80多种属性。进程控制块常驻内 存,集中了所有进程个体特征的描述信息,是Linux实现任何系统功能的基础。

分析该数据结构及和其他模块数据结构的关系是源代码分析的重点。图2・2给出 该数据结构中与进程队列管理、进程内存管理和进程文件管理相关的数据项。

进程是系统分配资源的最小单位。一个进程就是一个运行实体。在Linux中,

所有资源都是以进程为对象来进行分配的。Linux系统是一个多任务的系统,

进程调度就是要保障各个进程能公平的使用系统的CPU资源。Linux内核在保障 进程运行效率的实现方面具有很多特点:

(18)

碗士学位论文 第二章Linux内核结构分析

图2-2进程管理数据结构网

l。Linux设诗了一系列缒数据结穆,宅键§§攥臻途攒述进程豹状态秘其资 源使用情况,以便能公平有效地使用系统资源。Linux的调度算法能确保不出现 某些进程避度占用系统资源恧导致另一些避程无传止地等镣款萤撼。这一方法扶 根本上保诞了系统的高效和稳定。

2。Linux鲍进程创建采用了CopyoNwrite技术1231,即不拷贝父进程的窆问,

而是拷贝父迸程的页表,使父进程和子进程共享物理空间,并将这个共享空间的 访阿权限辍为只读。当父进程和予进程的巢一方进圣亍写操作时,Linux检测到一 个非法操作,这对才将要麓的页进行复制。这一做法免除了只读页的复制,从而 降低了开销。

进程调度子系统可以努为西个模块:调度策略模块、体系结构相关模块、体 系结构独如模块和系统调用接口模块。

1.调度策略模块:该模块主装负责剿断哪个进程将谤闯CPU。策略羽翻定 必须保证所有进程可以得到比较公正的待遇:

2.体系结捣糯关摸浚:该模浃旋设计为将计箨视特宠体系结构擒象为一种 公共接口。这些模块负责和CPU通信实现进程的挂起和愆行。它们知道如何为 遴程傈整那些寄存器窝状态蕾惠叛及翔褥挠行汇编筏礴采实瑗逡穰靛挂熬帮运 行:

3.髂系结耩独立模块:该模块褰潺凌策略模块遥信决定下一令该运移豹迸 程,然后调用体系结构相关模块来恢复进程的运行。另外该模块还调用内存管理 模块保证蘩运行鹣进程静海存霉劐豹恢复;

4.系统调用接口模块:该模块只允许用户进程访问内核明确公布的资源。

这样将溪户进程对蠹孩懿以来限露l在一今缀少交纯豹接蜀蕊壅痤。

14

(19)

硕士学位论文 第二章Linux内核结构分析

2.2.3内存管理

Linux的内存管理子系统采用分页方式管理和使用物理内存资源。它根据不 同的芯片采用不同层次的页表系统(例如Alpha采用三层页表,Intel采用两层页 表)实现了进程的逻辑地址空间到物理内存地址的映射。因此两个进程可以访问 相同的地址空间而使用不同的物理内存。页表还对物理页的访问权限作出了规 定,在进行虚实变换时,Linux将根据页表中规定的访问权限来判定进程对物理 地址的访问是否合法,从而达到存储保护的目的。另外内存管理支持内存交换,

将不用的内存页导出到文件系统中,从而是用户使用到了比实际内存更大的内存 地址空间。

为了改善系统的运行性能,Linux内核采用了多种Cach技术:缓存Cach、

页面Cach、交换Cach和硬件Cach。

存储管理中对实内存的管理主要用到了Inin struct数据结构,如图2.3。其 中task struct结构内嵌了r砌struct结构,此结构包含了用户进程中与存储管理

有关的信息。而对虚存段的管理主要用到了vin area struct数据结构。具体结构 如图2.4。

图2-3实内存管理数据结构

图2-4虚内存管理数据结构

(20)

碗士学位论文 第二章Linu内核结构分析

用户拱有4GB的虚存空问,假并不怒所有的4GB空阃都可以让用户态进程 读写或申请使用。用户态避程实际可串谤的虚存空间为0至3GB。所有遴程的 3GB至4GB的盘存空间的映像都是相同的,以此方式共事核心的代码段和数据 段。为了熊以“自然”的方式显示地表达真燕被进穰使用的虚拟空间,Linux定义 了虚存段,一个Villa段怒某个进程的一段连续的虚存空间,在这段虚存照的所 脊单元拥有相同的特征。

2.2.4虚拟文件系统和文件系统

支持多种文件系统是Linux操作系统的一大特色。目前支持的文件系统有 ext、Ext2、minix、umsdos、ncp、hpfs、nffs、msdos、nfs等。爨隽每一耱文锌 系统都有自己的组织结构和文件操作函数,相互之间差别很大,为了实现不同文 传系统之瓣戆互操作,Linux弓|入了虚羧文传系绕VFS按零,如嚣2-5爱涿。

图2—5 Linux廪拟文件系统

实际的文件系统初始化时将其自身注册到VFS中。这些实际文件系统可以 誊≈造到内核中也可以设计成可搬载模块。义传系统模块可以在系统嚣要时遴撂热 载。加载一个基于块设备麒包含根文件系统的文件系统时,VFS必须读取其超级 块。每个文l孛系统类型的越级块读取例程必须了解文l牛系绕的拓羚结构势将这些 信息映射别VFS超级块中。VFS载系统中保存着一组已经安装文件系统的链表 及其VFS超级块。每个VFS超级块包含一些信息预一些执行特定功能的甄数指 针,例如邈些函数指针中包含一个特定文件系统相关的inode读取晒数指针,该 函数将填炎VFS inode中的域。撼个VFS超块戗含此文件系统中的一个VFS inode的指针。对予根文件系统此inode表示的是‘P目录。

VFS只存在于内存中,它在系统启动时产生,在系统关闭时敬销。VFS的 作用就是群蔽各类文件系统的差异,给用户、应用程序,慧至Linux其他管理模

16

(21)

硕士学位论文 第二章Linux内核结构分析

块提供一个统一的界面。管理VFS数据结构的组成部分主要包括超级块和inode。

文件操作面向外存空间,为了解决外存和内存之间的I/0速度上的差异,从 而提高系统效率,Linux的办法是采用缓冲技术和hash表,主要有inode缓存、

directory缓存、buffer缓存和打开文件表first_file。主要的数据结构有fs—struct 和vfsmount。分别如图2-6和图2—7。

图2-6 fs—struct数据结构

对图2-6中数据结构有如下说明:

1.root、rootmnt是根目录的dentry和其挂载点的vfsmount;

2.Pwd、pwdmnt是当前工作目录的dentry和其挂载点的vfsmount;

3.Altroot,altrootmnt是保存根节点被替换之后原来根目录的dentry和其挂 载点的vfsmount。

图2-7Vfsmount数据结构

对图2.7中数据结构有如下说明:

1.mnt mountpoint:指向文件系统安装点目录的dentry结构;

2.rrmt root:指向被挂文件系统的根目录的dentry结构:

3.mnt parent:指向安装点所隶属的文件系统(其父文件系统),即指向父 文件系统的vfsmount结构。

图2-8给出的是文件系统数据结构关联图,其中:

1.mnt instances:作为接13链到超级块中的以S mounts为头的链表中;

2.mnt_clash:作为接1:3链到所安装目录的dentry中以d_vfsmnt为头的链表 中,该链表所包含的是那些安装到同一目录下的不同文件系统的信息;

(22)

碗士学位论文 第二章Linux内核结构分析

图2-8文件系统数据结构图

(23)

硕士学位论文 第二章Linux内核结构分析

3_mnt—sb:指向该文件系统的超级块;

4.mnt mounts:作为所挂文件系统(子文件系统)vfsmount结构的链表头

5.nmt child:作为子文件系统接口,挂载上一级文件系统中的链表中。

2.3结论分析

通过对整个Linux内核的研究,可以加深对单一内核结构的了解,同时进一 步掌握操作系统的运作机制,对于以后的工作打下了坚实的理论基础。同时也发 现这样一个完善的通用操作系统,其内核模块的功能也是相当完善,但也必然是 相当庞大的,直接把如此大的一个系统应用在嵌入式系统中就存在很多问题。

2.3.1嵌入式Linux面临的挑战

由于Linux在开发初期其目标并不是嵌入式应用,因此在将它作为嵌入式操 作系统使用时存在以下需要改进的方面:

1.从前面的内核分析可以看出:Linux的内核功能非常完善。但是有很多功 能在嵌入式系统中并不需要,如内存交换、系统中用于用户管理的一些代码核数

据结构都可以简化或省去:

2.Linux有一些子系统也可以简化,如虚拟文件系统、PCMCIA总线控制子 系统等等【24】,这样可以有效的减小内核体积;

3.Linux的系统开发库也可以根据需要进行裁剪,以减小应用程序的尺寸:

4.系统开发界面不够友好,缺少基于Windiws的系统开发环境;

5.文件系统的优化,达到有效节省有限的存储空间;

6.嵌入式Linux实时性的提高,因为为了减小系统体积,CPU的处理速度 也必然受到影响,如何提高系统的实时性,关系到系统的响应速度、数据处理速 度以及稳定性和产品竞争力。

系统这些方面的改进需投入大量的人力和物力,花费大量的时间,现在仍有 很多研究机构在努力研发中,期望尽量提高嵌入式操作系统的性能。

2.3.2嵌入式Linux的微型化

在上述六点问题上,有四点是围绕嵌入式操作系统的体积或消耗资源提出 的,那么,如何减小系统的体积,同时不影响系统的执行效率是一个主要的问题。

所以提出前如实操作系统微型化的方案。一般嵌入式系统的硬件资源需要较少,

诸如内存、固态电子盘容量、处理器速度及能量消耗都有严格限制。这对通用的

(24)

硕士学位论文 第二章Linux内核结构分析

操作系统Linux提出了挑战。如何在一个无大容量磁盘、内存容量只有几兆的环 境下提供嶷性能、态可靠性毂诗冀能力,是嵌入式Linux槐建鲍一个主要难题。

1.微型化

嵌入姣操作系统的运褥平台怒嵌入式计算巍。这类嵌入式信怠装置中一般没 有多少内存可用,外存也几乎是空白。因此嵌入式操作系统必须做的比较微小,

以尽量少占用系绞资源。网时嵌入式操作系统都怒蕊向专她化应用的,没蠢必要 掇供面面俱到的强大功能,只需满足部分功能即可,这就使得操作系统的微型化 成为可能。

2.徽内核化

在前蕊的章节中提到,Linux是一种单体走核的结构体系,那么微内核模型 的主导愚戆是:把操作系统分为若干进程,其中每个迸程实现一种服务,例如内 存服务、进程生成服务、处理器调度服务。每个服务器运行在用户态,执行一个 锤环,裣森是否有客户已经申请浆项服务。客户W以是菜一个搡律系统的成分,

也可以是一个应用程序,铝通过发送一个消息给服务器来请求一项服务。运行在 孩心态豹操作系统内核把该淆惑镣给缀务器,该黻务器执行操佟。内核用翳一个 消息把结构返回绘客户。在这种模型中,内核只执行很少的任务,称为微内核

(microkernel)。葵结鞫鲡圈2-9掰示:

躅2母徽内核掭暴结构凝 使用微内核体系结构的优势如下:

l。搽终系统核心实瑗缴鍪亿。嚣秀鼙鞋荛缀多囊蕤(镄麴文锋系统、蕤终 支持等)作为独立的服务器进程移出核心;

2。遂了可靠谯窝独立往,鸯糕子实联擒辞玩。每伞l薮务器程鑫己熬戆蛙空 间中独立邀行,因而防止了受其他进程的影响。此外服务器运行在用户态,它们

(25)

硕士学位论文 第二章Linux内核结构分析

不能直接访问硬件或者修改执行体内存空间;

3.完全适宜于分布式计算模型。由于联网的计算机是以C/S模型为基础 并且使用消息来通信,本地服务器可以容易地发送消息给远程计算机。

2.4本章小结

本章主要针对Linux内核以及其内核主要模块的结构体系、内部联系进行分 析,并对相关的部分源代码进行了研究。对照嵌入式Linux的内核要求,本文分 析了内核裁剪的必要性,并提出了裁剪目标和方法。

(26)

硕士学位论文 第黛章Linux内核的裁减及装载

第三章Linux内核的裁减及装载方法研究

正熬蔼蔼忍章孛掰陈述酶,一令逶焉豹Linux搽孛#系统不遥孺子嵌入式系 统。这就需襄按照系统要求对现有的Linux内核进行改造——量体裁衣,也就是 羧獾不嗣豹硬律环凌,不辎靛买体要求,裁减捧瑶鸯懿Linux系统巾不必鬃豹内 核模块,减小系统体积,降低系统开销。这一步也就足建_焱嵌入式Linux的第一 步。这一黎孛将陈述絮褥辩Linux瘫孩进行裁减,分撰研究Linux凑孩中一些主 要模块的功能;并完成为了使新梭移植到目标板后能正常逯行的一些相关工作。

慰嚣耱;菠翅建嵌入式Linux鸯叛下主簧戆足令步骤:逡择系统缀转、酝霆戳 及构建内核、创建根文件系统、建立Bootloader引导。

3.I选择系统组件

选择系统组件和项目的需求分析非常类似,根据目标开发板的硬件及功能要 求,制定裁剪方寰:决定哪些内核缀馋是嚣要的,哪些是可以裁减浆。选撵系统 组件需要根据实际情况具体问题具体分析,关于这方面的技术较为成熟,本文不 详细奔绍。

3.2配置瓤内核

对内拨的配置实际上就是所说的内核裁剪,将不必要的内核模块除去,保馨 下必需的缀件。这一步也楚整个构造过程中实际的第一步,也是最基础的一步,

后砸的所有工作都是建立在此之上的。对linux内核进行配置的常用方法脊如下 4稀:

1.make eonfig

这季孛方法将醚霞选顼黻命令符的形式搠崮,潮户可敬对选顼逐个进行配置。

配溉完成臌,将配鼹结果保存在.eonfig文件中。如果已经存在有.config的配 置文彳孛,都么藏会议该文{拳串静醚蓬选顼佟麓默认配置设嚣。

2.makeoldconfig

对己蠢静.config文佟进幸亍鬟改,毽廷缝对戳蔫没有淝置遗熬这项滋行设 置。这点与make config方法的区别就是,后者可以对所有的配置选项在重新进 行设菱。

3.makemenuconfig

(27)

硕士学位论文 第三章Linux内核的裁减及装载

与make coniig类似,不过这种方法的显示方式是以菜单模式进行显示的。

4.make xconfig

用于XWindow下的配置,将配置选项以图形菜单的形式显示出来。与make config和make menuconfig一样,如果配置文件以存在,则以该文件的选项值 为默认配置。效果图如图3—1所示。

图3-1makeXconfig演示圉

通过上述的四种方法,都可以完成对内核的配置。上图中列出了配置内核时 列出的主干选项,每个选项中包含有若干子选项,这里就不一一列出。用户可以 根据自己的需要,按照选项提示对配置选项进行取舍。配置完成后,所有的选项 设置都记录在根目录下的.config文件中。下面列出了常见的配置选项名称,包 括Codematurity level options,Loadable module support,Generalsetup,’Memory

technology devices,Block devices,Networking options,ATA/IDE/MFM/RLL

support。SCSI support,Network device support,Input corc support,Character

devices,Filesystems,Console drivers,Sound,Kernel hacking。

3.3编译内核

在完成内核配置之后,下面的工作就是对新内核重新编译。编译内核必须完 成三个步骤:

1.建立内核的依赖关系;

2.创建内核映像;

3.创建内核组件。

參考文獻

相關文件

1、电动力学 郭硕宏编 高等教育出版社 2、电动力学 尹真 编 南京大学出版社 3、Classical Electrodynamics J. Jackson

Administrative Science Quarterly Journal of Accountingand Economics Journal of Accounting Research Journal of Applied Psychology Journalof Financial Economics.. Journal of Finance

Global Logistics and Supply Chain Management, 3rd Edition, John Wiley & Sons. Global Macrotrends and their Impact on Supply

推 荐 期 刊 : Journal of Cross-cultural Psychology, Journal of International Business Studies, Management and Organization Review

Hanning Window 可用來緩和輸入訊號兩端之振幅,以便使得訊號呈現 週期函數的形式。Hanning Window

Since aluminum alloy 6463 has high stacking fault energy, dynamic recrystallization did not occur during extrusion, the billet temperature did not significantly affect the

在行為科學中,曾發展出許多不同的理論模型藉以預測人們的行為。 1970年代的 理性行為理論 (Theory of Reasoned Action, TRA),以及1980年代的計畫行為理論 (Theory

The study found: (一) comparing with the pupils of other grades, the pupils in pupils of sixth grade in Yang-Guang Elementary School emphasized on the growth of