没有合适的资源?快使用搜索试试~ 我知道了~
Linux驱动开发必看详解神秘内核
4星 · 超过85%的资源 需积分: 12 34 下载量 168 浏览量
2011-05-11
22:19:00
上传
评论 2
收藏 511KB DOC 举报
温馨提示
试读
31页
Linux驱动开发必看详解神秘内核,内核的启动,驱动模块的加载和卸载。驱动的生命周期讲解
资源推荐
资源详情
资源评论
在开始步入 设备驱动程序的神秘世界之前,让我们从驱动程序开发人员
的角度看几个内核构成要素,熟悉一些基本的内核概念。我们将学习内核定时
器、同步机制以及内存分配方法。不过,我们还是得从头开始这次探索之旅。
因此,本章要先浏览一下内核发出的启动信息,然后再逐个讲解一些有意思的
点。
2.1 启动过程
图 显示了基于 计算机 系统的启动顺序。第一步是 从
启动设备中导入主引导记录,接下来 中的代码查看分区表并从活
动分区读取 、 或 等引导装入程序,之后引导装入程序
会加载压缩后的内核映像并将控制权传递给它。内核取得控制权后,会将自身
解压缩并投入运转。
基于 的处理器有两种操作模式:实模式和保护模式。在实模式下,用
户仅可以使用 内存,并且没有任何保护。保护模式要复杂得多,用户可
以使用更多的高级功能如分页。
必须中途将实模式切换为保护模式。但
是,这种切换是单向的,即不能从保护模式再切换回实模式。
内核初始化的第一步是执行实模式下的汇编代码,之后执行保护模式下
文件上一章修改的源文件中的 !"#$%"%&函数。
!"#$%"%&函数首先会初始化 子系统,之后让内存和进程管理系统就
位,接下来启动外部总线和 设备,最后一步是激活初始化程序,它是
所有 进程的父进程。初始化进程执行启动必要的内核服务的用户空间脚
本,并且最终派生控制台终端程序以及显示登录&'(提示。
%1011111111511111111111111111111"%!%"+%,
实模式下的初始化代码通过使用 的 16 服务并执行 1%1 号
函数即上面的 %1 字符串来获得系统的内存映射信息。内存映射信息
中包含了预留的和可用的内存,内核将随后使用这些信息创建其可用的内存池。
在附录 的 节,我们会对 提供的内存映射问题进行更深入的讲解。
图 内核启动信息
2.1.2 758MB LOWMEM available
2 以内的常规的可被寻址的内存区域被称作低端内存。内存分配函
数 $&&' 就是从该区域分配内存的。高于 2 的内存区域被称为高端
内存,只有在采用特殊的方式进行映射后才能被访问。
在启动过程中,内核会计算并显示这些内存区内总的页数。
2.1.3 Kernel command line: ro root=/dev/hda1
的引导装入程序通常会给内核传递一个命令行。命令行中的参数类
似于传递给 程序中 函数的 "(+78列表,唯一的不同在于它们是传递
给内核的。可以在引导装入程序的配置文件中增加命令行参数,当然,也可以
在运行过程中修改引导装入程序的提示行78。如果使用的是 这个引导
装入程序,由于发行版本的不同,其配置文件可能是4''("4("4 '3 或
者是4''("4%&!。如果使用的是 ,配置文件为% &&' '3。
下面给出了一个 ("4 '3 文件的例子增加了一些注释,看了紧接着 &%
$%"%&) 的那行代码之后,你会明白前述打印信息的由来。
,%3&19''-%)$%"%&4.,%3&
%'696!% ','&%"4'''",%"'"*"%%"!
&%$%"%&)9''*'
9:-%4''(%"%!,%!-%;"!*"''3-%;"!,!$
9,%"-%4'',"% '".,!%,+&<)="'=
9, %!--%"''*"'!-'&,4%'%,"%,'&.
$%"%&-,1>14''+&<)"'"''?,%+-,
9''$,%"!% '@A"%%(",%'".0)B$3"%%,@
",-,1>14''",
9
命令行参数将影响启动过程中的代码执行路径。举一个例子,假设某命令行参
数为 4''',%,如果该参数被设置为 ,意味着你希望在启动过程中打印一
些调试信息并在启动结束时切换到 "&%+%& 的第 ) 级初始化进程的启动信息
打印后就会了解 "&%+%& 的含义C如果 4''',% 参数被设置为 1,意味着你
希望启动过程相对简洁,并且设置 "&%+%& 为 。既然已经熟悉了
文件,下面就在该文件中增加如下修改:
! !(%,4''',%?C
! ##
!#4''',%#!%* -"D!"
E
FF(%#'*'G!">G4''',%C
FF"%"C
H
DI,&%*"%%"@4''',%?@D
##!%*@4''',%?@>!#4''',%#!%*C
34''',%E
FFD"+%"4'!%'*D
FFDD
H
DD
D34''',%!> -''!%"&%+%&'3)>%&!%
FF!J -'"&%+%&'3D
34''',%E
FF"(+#7KK"(!8?@)@C
H%&!%E
FF"(+#7KK"(!8?@@C
H
DD
请重新编译内核并尝试运行新的修改。
2.1.4 Calibrating delay...1197.46 BogoMIPS
(lpj=2394935)
在启动过程中,内核会计算处理器在一个 L5. 时间内运行一个内部的延迟
循环的次数。L5. 的含义是系统定时器 个连续的节拍之间的间隔。正如所料,
该计算必须被校准到所用 的处理速度。校准的结果被存储
-"%3?@-*0!'"(% '@"(%?#4&$M存储在称为
剩余30页未读,继续阅读
资源评论
- imkdk2015-07-18这个还不错,就是组织上有点乱。
绿竹痕
- 粉丝: 118
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功