linux内核启动的优化
linux内核启动需要时间,并且需要很多的时间,这是逃避不了的,了解linuxbios的朋友可能知道,linuxbios作为bios和别的bios相比启动的特别快,因为它把硬件检测的任务交给了linux内核而不是bios,毕竟bios检测完了内核再检测是一种浪费,为了bios的性能,把工作推给内核是不负责任的行为吗?其实不是,实际上启动时最耗时的操作就是硬件检测和初始化,正是因为如此,linuxbios才把如此艰巨的任务避开,一并给了操作系统内核。
那么内核能把这些任务给谁呢?它必须自己解决之,因为它是基础。为了加快启动速度,linux设计者将硬件检测和初始化的任务交给了很多的内核线程,这样的话,一个内核线程在检测初始化一个硬件等待的时候就可以去检测初始化另一个硬件,一个并行进行,在多cpu机器上会更好。依照linux的传统,一切都是进程,最起码你得有这个意思想让任务成为进程,在内核初始化期间,内核维护了两个链表,一个是pending链表,一个是running链表,将要检测饼初始化的硬件相关的函数加入pending链表就不用管了,linux强大的进程调度机制会很好的处理诸多硬件初始化内核线程的执行,另外,在内核初始化完成以后,这些内核线程的机制接口将长期保留,一旦有繁琐的任务需要并发执行仍然可以用和硬件检测初始化的内核线程的方式来完成,这个机制十分灵活。
我有一点不解的是,为何不能用更加统一的工作队列来实现呢?难道工作队列的并行性不好吗?
转载于:https://blog.51cto.com/dog250/1274187
linux内核启动的优化相关推荐
- Linux 内核启动流程
转载自 http://wenku.baidu.com/link?url=KpOdULJu1CxP1swqRs_Szoyg5r_8rje4N08o4QtB5L9QlPjWesTYlrTPgkxPOriF ...
- 【内核】linux内核启动流程详细分析【转】
转自:http://www.cnblogs.com/lcw/p/3337937.html Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件 ...
- 【内核】linux内核启动流程详细分析
Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件,包括内核入口ENTRY(stext)到start_kernel间的初始化代码, 主要作用 ...
- Linux内核网络性能优化
Linux内核网络性能优化 1. 前言 2. Linux网络协议栈 3. DPDK 4. XDP 4.1 XDP主要的特性 4.2 XDP与DPDK的对比 4.3 应用场景 5. CPU负载均衡 5. ...
- linux内核中启动页面,Linux内核启动过程分析
下面给出内核映像完整的启动过程: arch/x86/boot/header.S: --->header第一部分(以前的bootsector.S): 载入bootloader到0x7c00处,设 ...
- Android研究-linux内核启动到android系统
很多人阅读代码,总喜欢从头开始,这样觉得很安全,有依靠,无论如何总是能知道"头",有头就能找到任何需要的部分. Android生在linux内核基础上,linux内核启动的最后一步 ...
- linux内核唤醒过程,Linux内核启动过程分析
1.Linux内核启动协议 阅读文档\linux-2.6.35\Documentation\x86\boot.txt 传统支持Image和zImage内核的启动装载内存布局(2.4以前的内核装载就是这 ...
- linux文件系统启动流程,linux 内核启动过程以及挂载android 根文件系统的过程
转载 作者:汕头大学-黄珠唐 时间:2009 年10 月29 日 主要介绍linux 内核启动过程以及挂载android 根文件系统的过程,以及介绍android 源代码中文件系统部分的浅析. 主要源 ...
- Linux内核启动过程概述
Hi!大家好,我是CrazyCatJack.今天给大家带来的是Linux内核启动过程概述.希望能够帮助大家更好的理解Linux内核的启动,并且创造出自己的内核^_^ Linux的启动代码真的挺大,从汇 ...
- Linux内核启动流程分析(一)【转】
转自:http://blog.chinaunix.net/uid-25909619-id-3380535.html 很久以前分析的,一直在电脑的一个角落,今天发现贴出来和大家分享下.由于是word直接 ...
最新文章
- 如何查看仅一个用户提交的git日志?
- 【00】设计模式概要
- GM6 pageset - DB get scenario
- 2287. 【POJ Challenge】消失之物(数组递推\分治优化背包)
- mysql账号密码忘_mysql用户名密码忘记了解决方法
- BeginnersBook Perl 教程
- 计算机二级制作简历张静,张静的简历值30分!其他都不是问题
- 字典的增删改查 daty 5
- Java中用三种方法输出字符串_java中两个字符串连接的三种方法
- HTTP权威指南-概述
- 高等数学第七版同济大学课后习题讲解下册 pdf(免费)
- 飞机大战小游戏 C语言(课设任务)
- 炫酷的动态粒子背景效果(vue专属)
- JavaScript学习第十九天
- 答案揭晓 | 关于云基础架构,你了解多少?
- 【工具使用】怎么设置SSH隧道(Port Forwarding)
- 测试时代新推出《测试员》特刊之软件测试基础
- Angular输入框内按下回车会触发其它button的点击事件的解决方法
- qq登录钓鱼php网页,PHP+JS模仿登录钓鱼
- 畅游Python 九:模块:自定义模块、第三方模块、内置模块