-1528-0序言从嵌入式系统到超级服务站,Linux已获得广泛的应用。Linux是一个完整通用的Unix类分布式操作系统,它的结构紧凑、功能强、效率高、可移植性好且在Internet上可自由取用。Linux和Unix操作系统一样,操作系统的主要功能集中在内核,内核中包含进程管理、文件管理、设备管理和网路管理等部份。本文深入剖析Linux操作系统内核的启动过程,希望对Linux学习和使用者有所启迪。1内核结构及平台相关性本文剖析的内核版本为2.6.9。当我们使用tar命令将li-nux-2.6.9.tar.bz2解开时,内核源代码被放在了linux-2.6.9/目录中。Linux内核各功能文件分别储存在linux-2.6.9/目录下的相应子目录中。Linux操作系统可以工作在多种不同硬件平台上,如8080xx8686CPU系列(80386以上)、SUNsparc64和arm26等。为了让Linux彰显优良的可移植性,Linux内核代码针对不同的硬件平台包含有对应的启动和初始化程序。
这种程序处于arch/子目录中。用户完全可以按照自己的须要,从内核代码中各取所需,即时编译和更换系统内核,这也是Linux操作系统获得世界各地网路爱好者普遍支持的主要诱因。鉴于绝大部份Linux应用于Intel80x86系列平台,所以本文也仅限对Linux在80x86系列平台的启动过程进行剖析。本文所要阐述的启动程序坐落arch/i386/boot/目录,系统的启动过程主要由boot-sect.s、setup.s和head.s等3个汇编程序完成。2系统启动流程当PC的电源打开后,80x86结构的CPU将自动步入实模式,并从地址0XFFFF0开始自动执行程序代码,这个地址一般是ROM-BIOS中的地址。PC机的BIOS将执行个别系统的检查,如测试显存等,并在数学地址0处开始初始化中断向量。随后,它将可启动设备的第1个磁道(c盘引导磁道,512字节)读入显存绝对地址0x7C00处,并把控制权交给这段代码。Li-nux的这段代码(boot/bootsect.s)是用8086汇编语言编撰,它首先把自己举到显存地址0x90000,并跳转到这儿执行。
之后把启动设备中后2KB代码(boot/setup.s)读入到显存0x90200处深入分析linux内核源代码 pdf,而内核的其它部份(system模块)则被读入到从地址0x10000开始处。随即setup.s将把system模块联通到显存起始处,这样system模块中代码的地址就等于实际的化学地址,以便对内收稿日期:2005-03-02。基金项目:国家自然科学基金项目(60074032)。作者简介:程耕国(1947-)kali linux,男,湖南茶陵人,博士,院长,研究方向为智能控制、机电一体化和估算科学软件开发;刘先勇(1980-),男,湖南常德人,硕士研究生,研究方向为数据库理论及应用、嵌入式操作系统;鲍考明(1974-),男,河南固始人,硕士linux文本编辑器,助教深入分析linux内核源代码 pdf,研究方向为管理信息系统、数据库应用、Internet/Intranet及电子商务的研究与开发。Linux内核启动过程剖析程耕国,刘先勇,鲍考明(重庆科技学院信息科学与工程大学,浙江杭州430081)摘要:结合Linux内核代码,剖析了80x86平台上Linux操作系统内核的启动过程,非常对内核的动态加载、CPU工作模式的转换以及内存分页机制最终启动的全过程做了较为细致的阐述。
该剖析有助于更深入地了解Linux内核的工作原理和多任务操作系统的实现机理,是将Linux运用于嵌入式系统的前期工作。关键词:Linux;内核;启动过程;保护模式;中断描述符中图法分类号:TP316文献标示码:A文章编号:1000-7024(2006)09-1528-02StartupprocessanalysisofLinuxkernelCHENGGeng-guo,LIUXian-yong,BAOKao-ming(CollegeofInformationScienceandEngineering,WuhanUniversityofScienceandTechnology,Wuhan430081,China)Abstract:CombiningwiththecodesofLinuxkernel,thestartupprocessofLinuxkernelonIntel8080xx8686platformisanalyzed.Particularly,thedynamicloadingofkernel,thetransformationofCPUworkingmodeandtheprocessesofpagingmechanismareelaboratedindetail.ThisisanecessarystepforfurtherhackingLinuxkernelandanessentialworkformakingaLinuxbuilt-insystem.AnditisalsohelpfultounderstandtheimplementationofmultitaskOS.Keywords:Linux;kernel;startupprocess;protectionmode;interruptdescriptor2006年5月计算机工程与设计ComputerEngineeringandDesignMay2006第27卷第9期Vol.27No.9