- 1、本文档共86页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
5.3.3编译内核第一步:配置内核*makemenuconfig:一个文本模式、简单的菜单模式的配置界面5.3.3编译内核第一步:配置内核*makexconfig:基于Tcl/Tk的X图形配置界面进入操作系统
(4)建立init进程*Linux要建立的第一个进程是init进程启动所需的Shell脚本文件Linux系统启动所必须的用户登陆后自己设定的系统启动所必须的脚本存放在系统默认的配置文件目录/etc下。首先调用的是/etc/inittab.5.1.3内核的移植*Linux移植:就是把Linux操作系统针对具体的目标平台做必要改写之后,安装到该目标平台,使其正确地运行起来,即把内核从一种硬件平台转移到另外一种硬件平台上运行。这个概念目前在嵌入式开发领域讲的比较多。对于嵌入式Linux系统来说,有各种体系结构的处理器和硬件平台,并且用户需要根据需求自己定制硬件板。只要硬件平台有些变化,即使非常小,可能也需要做一些移植工作。5.1.3内核的移植*Linux针对于特定的硬件平台的软件包叫做BSP(BoardSupportPackage)。内核移植工作主要是修改跟硬件平台相关的代码,一般不涉及Linux内核通用的程序。移植的难度也取决于两种硬件平台的差异。01通常都可以找到相同处理器的参考板,并且可以获取到Linux内核源代码。目前Linux内核的社区已经对常见的硬件平台做了很多工作,移植工作已经简单了02移植的准备工作*01040203选择参考板,获取到Linux内核源代码:四点原则分析内核代码,弄清楚哪些设备有驱动程序,哪些还没有。确信Linux对参考板的支持情况,配置编译Linux内核,在目标板上运行测试。可能最新的Linux内核版本支持的最好,但是也可能需要在老内核版本上打补丁。分析平台相关的部分代码实现;分析内核编译组织方式;分析内核启动的初始化程序;分析驱动程序的实现。移植过程的基本内容*获取某一版本的Linux内核源码,根据具体目标平台对源码进行必要的改写(主要是修改体系结构相关部分)1然后添加一些外设的驱动,打造一款适合需要的目标平台(可以是嵌入式便携设备也可以是其它体系结构的PC机)的新操作系统,对该系统进行针对具体目标平台的交叉编译,生成一个内核映象文件2最后通过一些手段把该映象文件烧写(安装)到目标平台中。3通常,对Linux源码的改写工作难度较大,它要求不仅对Linux内核结构要非常熟悉,还要求对目标平台的硬件结构要非常熟悉,同时还要求对相关版本的汇编语言较熟悉,因为与体系结构相关的部分源码往往是用汇编写的。所以这部分工作一般由目标平台提供商来完成。开发者所要做的就是从目标平台提供商的网站上下载相关版本Linux内核的补丁(Patch)。把它打到Linux内核上,再进行交叉编译就行。4第五章Linux内核*Linux内核概述Linux内核模块简介Linux的编译和定制Linux系统调用举例5.2Linux内核模块简介*进程管理模块存储管理模块多进程是一个简单的思想(如下图):5.2.1进程管理模块*一个进程一直运行,直到它必须等待,通常是等待一些系统资源,等拥有了资源,它才可以继续运行。在一个单进程的系统,比如DOS,CPU被简单地设为空闲,这样等待的时间就会被浪费。在一个多进程的系统中,同一时刻许多进程在内存中。当一个进程必须等待时,操作系统将剥夺这个进程对CPU的使用权,并将它交给另一个合适的进程。5.2.1进程管理模块*进程的切换:当一个进程被剥夺了CPU,而系统转向去运行另外一个进程的时候,就发生了上下文切换,或者叫做进程切换。负责完成新的进程选择和进程切换的代码就是调度程序5.2.1进程管理模块*态的切换和上下文切换(书)5.2.1进程管理模块*Linux的进程状态task_struct*Linux中,每一个进程用一个task_struct的数据结构来表示,用来管理系统中的进程。01当一个新的进程被创建后,从系统内存中分配一个新的task_struct,并增加到task的链表中。02为了更容易查找,用current指针指向当前运行的进程。03task_struct*task_struct结构有个成员state表示进程当前的运行状态,已定义的状态如下:(include/linux/sched.h中)#defineTASK_RUNNING 0#defineTASK_INTERRUPTIBLE 1#defineTASK_UNINTERRUPTIBLE 2#
文档评论(0)