`
totoxian
  • 浏览: 1030768 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

linux内核启动的优化

 
阅读更多

<!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning /> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL /> <w:BalanceSingleByteDoubleByteWidth /> <w:DoNotLeaveBackslashAlone /> <w:ULTrailSpace /> <w:DoNotExpandShiftReturn /> <w:AdjustLineHeightInTable /> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:UseFELayout /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--> <!--[if gte mso 10]> <mce:style><! /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} --> <!--[endif]-->

linux内核启动需要时间,并且需要很多的时间,这是逃避不了的,了解linuxbios的朋友可能知道,linuxbios作为bios和别的bios相比启动的特别快,因为它把硬件检测的任务交给了linux内核而不是bios,毕竟bios检测完了内核再检测是一种浪费,为了bios的性能,把工作推给内核是不负责任的行为吗?其实不是,实际上启动时最耗时的操作就是硬件检测和初始化,正是因为如此,linuxbios才把如此艰巨的任务避开,一并给了操作系统内核。

那么内核能把这些任务给谁呢?它必须自己解决之,因为它是基础。为了加快启动速度,linux设计者将硬件检测和初始化的任务交给了很多的内核线程,这样的话,一个内核线程在检测初始化一个硬件等待的时候就可以去检测初始化另一个硬件,一个并行进行,在多cpu机器上会更好。依照linux的传统,一切都是进程,最起码你得有这个意思想让任务成为进程,在内核初始化期间,内核维护了两个链表,一个是pending链表,一个是running链表,将要检测饼初始化的硬件相关的函数加入pending链表就不用管了,linux强大的进程调度机制会很好的处理诸多硬件初始化内核线程的执行,另外,在内核初始化完成以后,这些内核线程的机制接口将长期保留,一旦有繁琐的任务需要并发执行仍然可以用和硬件检测初始化的内核线程的方式来完成,这个机制十分灵活。

我有一点不解的是,为何不能用更加统一的工作队列来实现呢?难道工作队列的并行性不好吗?

分享到:
评论

相关推荐

    linux内核启动流程.doc

    linux内核启动流程的简单分析,帮助掌握大概流程,简单明晰

    Linux启动时间优化方案调研报告

    Linux启动时间优化方案调研报告,包括boot loader ,内核启动优化和用户空间启动优化。

    Linux 2.6.36内核优化指南

    优化前后性能对比 项目优化前优化后 内核尺寸4.1M 1.6M 启动时间(含dhcp+默认init service) 22s 14s 启动后的内存占用25M 22M APP SPEC测试成绩待测待测

    linux服务优化脚本

    关闭无用的系统服务,加快系统启动速度。可根据注释自行修改

    Linux系统启动时间的极限优化

    如果你的Linux内核因为某些原因不能更新为2.6.11之后的版本,那么可以参考CELF提供的方法修改或直接下载它们提供的补丁:http://tree.celinuxforum.org/CelfPubWiki/PrintkTimes 开启PrintkTime功

    千万字肝翻Linux内核源码,对底层原理深耕深分析,从入门到入狱

    内存屏障、内存映射、同步机制、GDB基本功能、CPU缓存、内核启动流程、 syncookie、读写分析、NFS实现框架、网络新特性、skb核心操作、HASH算法、过滤框架Nftables、接 收框架、页缓存PageCache、Netfilter框架、...

    Linux 系统优化的一些建议(内核优化)

    例如物理内存只有1g,启动2个程序各申请1g是可以的,linux通过这种过度分配的方式来达到内存的充分利用,当程序实际使用内存超出物理内存时,会被系统按照优先级,杀掉一部分程序以确保其它程序的正常运行;...

    Linux内核参数调整方法

    由于Linux的内核参数信息都存在内存中,因此可以通过命令直接修改,并且修改后直接生效。但是,当系统重新启动后,原来设置的参数值就会丢失,而系统每次启动时都会自动去/etc/sysctl.conf文件中读取内核参数,因此...

    Linux内核测试工具perf使用简介

     由于我们经常是在自己编译的内核上进行开发工作,这里需要有包含调式信息的内核启动镜像文件vmlinux,在自定义内核的基础之上,进入linux内核源码,linux/tools/perf  make  make install  提示:  1...

    Linux系统启动时间优化方案

    Linux系统启动时间优化方案,(1)首先是对Linux启动过程的跟踪和分析,生成详细的启动时间报告。较为简单可行的方式是通过PrintkTime功能为启动过程的所有内核信息增加时间戳,便于汇总分析。PrintkTime最早为CELF所...

    1 秒内启动Linux的方法

    尽可能快的启动系统,对于自动化设备是非常重要的。系统能够在用户无法感知的时间内启动,也就意味着在不需要...后续的优化,主要针对引导程序、Linux内核和应用程序展开。 引导程序优化 引导程序主要完成对CPU的基础

    车载Android操作系统快速倒车启动技术研究_胡鼎.pdf

    Linux 内核、根文件系统的快速启动方法,通过测量BootLoader、Linux 内核、根文件系 统的启动时间,获得延时的主要影响因素,并依据Android车载倒车系统的特点,优化设 计了耗时的关键点。试验研究表明,该方法可...

    如何实现1秒启动Linux?

    尽可能快的启动系统,对于自动化设备是非常重要的。系统能够在用户无法感知的时间内启动,也意味着在不需要工作时,可以完全切断电源,而不是挂起...后续的优化,主要针对引导程序、Linux内核和应用程序展开。  引导

    [乐檬k30-t] fly-on v5.0 优化直刷补丁

    2)Linux 内核优化 提升改善电耗和电池寿命 3)Entropy generator 引擎来减小滞后(选择启动) 4)每48小时自动zipalign system和data分区的app,减少RAM使用 5)Sqlite优化使得访问数据库速度更快 6)CPU模式...

    一个公司的linux培训资料

    一个公司的linux培训资料,...嵌入式linux启动优化技术 嵌入式Linux网络编程 高效学习Linux内核 嵌入式linux图形界面开发 linux驱动学习方法与关键技术 微软嵌入式技术 Silverlight_For_Windows_Embedded

    OEL linux安装文档.docx

    2010年9月,Oracle Enterprise Linux发布新版内核——Unbreakable Enterprise Kernel,专门针对Oracle软件与硬件进行优化,最重要的是Oracle数据库运行在OEL上性能可以提升超过75% 。Oracle Enterprise Linux是由...

    嵌入式设计及linux驱动开发指南——基于ARM9处理器.pdf

    9.1.2 Linux内核对USB规范的支持 9.1.3 OHCI简介 9.2 Linux下USB系统文件结点 9.3 USB主机驱动结构 9.3.1 USB数据传输时序 9.3.2 USB设备连接/断开时序 9.4 主要数据结构及接口函数 9.4.1 数据传输管道 ...

    嵌入式Linux C编程入门(第2版) PPT

    第8章 嵌入式linux c语言基础——arm linux内核常见数据结构 225 8.1 链表 226 8.1.1 链表概述 226 8.1.2 单向链表 226 8.1.3 双向链表 233 8.1.4 循环链表 234 8.1.5 arm linux中链表使用实例 ...

    tracepoint_lttng使用详解

    LTTng 是一个 Linux 平台开源的跟踪工具,是一套软件组件,可允许跟踪 Linux 内核和用户程序,并控制跟踪会话(开始/停止跟踪、启动/停止事件 等等)。这些组件被绑定如下三个包: •LTTng-tools:库和用于跟踪会话...

Global site tag (gtag.js) - Google Analytics