首页
┆
咨询
┆
科普
┆
论坛
┆
博客
首页
图书
音乐
影视
化妆品
我的账户
┆
购物车内容
┆
去收银台
动漫周边
┆
数码
┆
最新商品
┆
出版社
┆
丛书
┆
作者
┆
最近出版书籍
┆
在线阅读
┆
RSS
商品搜索
高级搜索
热门搜索词:
殷红博
早期教育与天才
区慕洁
您现在的位置:
书城
>
图书
>
电脑图书
>
操作系统
>
Linux
> 商品信息
Linux内核设计与实现(第2版)
定价: ¥38.00元
金桥价: ¥36.10元
节省: ¥1.90元
出版/发行时间: 2006-01-01
出版社:
机械工业出版社
作者:
美 Robert Love
译者:
陈莉君
ISBN: 7111178653
版次: 1
开本: 16
页数: 289
内容简介
本书填补了Linux内核理论和实践细节之间的鸿沟。本书针对Linux 2.6内核,包括O(1)调度程序、抢占式内核、块I/O层以及I/O调度程序等。本书还包含了Linux内核开发者在开发时需要用到的很多信息,包括调试技术、编程风格、注意事项等等。
如果你是一名Linux内核爱好者,本书的内容可以帮助你大显身手。如果 你是一名普通程序员,本书的内容将会拓宽你的编程思路。 如果你初次接触Linux内核,本书则可以帮助你对内核各个核心子系统有一个整体把握。
第2版新增内容
● 当前Linux 2.6内核的所有主要子系统和最新特点
● 内核模块的新细节
● 虚拟内存和内存分配的扩充内容
● 调试内核代码的附加信息
● 内核同步和定时器的实例
● 了解Linux内核补丁的提交并参与Linux内核社区
目录:
第1章 Linux内核简介 1
1.1 追寻Linus的足迹:Linux简介 2
1.2 操作系统和内核简介 3
1.3 Linux内核和传统Unix内核的比较 5
1.4 Linux内核版本 6
1.5 Linux内核开发者社区 7
1.6 小结 7
第2章 从内核出发 8
2.1 获取内核源码 8
2.1.1 安装内核源代码 8
2.1.2 使用补丁 8
2.2 内核源码树 9
2.3 编译内核 9
2.3.1 减少编译的垃圾信息 10
2.3.2 衍生多个编译作业 11
2.3.3 安装内核 11
2.4 内核开发的特点 11
2.4.1 没有libc库 12
2.4.2 GNU C 12
2.4.3 没有内存保护机制 14
2.4.4 不要轻易在内核中使用浮点数 14
2.4.5 容积小而固定的栈 14
2.4.6 同步和并发 15
2.4.7 可移植性的重要性 15
2.5 小结 15
第3章 进程管理 16
3.1 进程描述符及任务结构 17
3.1.1 分配进程描述符 17
3.1.2 进程描述符的存放 18
3.1.3 进程状态 19
3.1.4 设置当前进程状态 20
3.1.5 进程上下文 21
3.1.6 进程家族树 21
3.2 进程创建 22
3.2.1 写时拷贝 22
3.2.2 fork() 23
3.2.3 vfork() 23
3.3 线程在Linux中的实现 24
3.4 进程终结 26
3.4.1 删除进程描述符 27
3.4.2 孤儿进程造成的进退维谷 27
3.5 进程小结 28
第4章 进程调度 29
4.1 策略 30
4.1.1 I/O消耗型和处理器消耗型的进程 30
4.1.2 进程优先级 30
4.1.3 时间片 31
4.1.4 进程抢占 32
4.1.5 调度策略的活动 32
4.2 Linux调度算法 32
4.2.1 可执行队列 33
4.2.2 优先级数组 35
4.2.3 重新计算时间片 36
4.2.4 schedule() 36
4.2.5 计算优先级和时间片 37
4.2.6 睡眠和唤醒 39
4.2.7 负载平衡程序 41
4.3 抢占和上下文切换 44
4.3.1 用户抢占 45
4.3.2 内核抢占 45
4.4 实时 46
4.5 与调度相关的系统调用 46
4.5.1 与调度策略和优先级相关的系统调用 47
4.5.2 与处理器绑定有关的系统调用 47
4.5.3 放弃处理器时间 47
4.6 调度程序小结 48
第5章 系统调用 49
5.1 API、POSIX和C库 49
5.2 系统调用 50
5.2.1 系统调用号 51
5.2.2 系统调用的性能 51
5.3 系统调用处理程序 51
5.3.1 指定恰当的系统调用 52
5.3.2 参数传递 52
5.4 系统调用的实现 53
5.5 系统调用上下文 55
5.5.1 绑定一个系统调用的最后步骤 55
5.5.2 从用户空间访问系统调用 57
5.5.3 为什么不通过系统调用的方式实现 57
5.6 系统调用小结 58
第6章 中断和中断处理程序 59
6.1 中断 59
6.2 中断处理程序 60
6.3 注册中断处理程序 61
6.4 编写中断处理程序 63
6.4.1 共享的中断处理程序 64
6.4.2 中断处理程序实例 65
6.5 中断上下文 66
6.6 中断处理机制的实现 67
6.7 中断控制 70
6.7.1 禁止和激活中断 70
6.7.2 禁止指定中断线 71
6.7.3 中断系统的状态 72
6.8 别打断我,马上结束 73
第7章 下半部和推后执行的工作 74
7.1 下半部 74
7.1.1 为什么要用下半部 75
7.1.2 下半部的环境 75
7.2 软中断 77
7.2.1 软中断的实现 77
7.2.2 使用软中断 79
7.3 tasklet 80
7.3.1 tasklet的实现 81
7.3.2 使用tasklet 82
7.3.3 ksoftirqd 84
7.3.4 老的BH机制 85
7.4 工作队列 86
7.4.1 工作队列的实现 86
7.4.2 使用工作队列 89
7.4.3 老的任务队列机制 92
7.5 下半部机制的选择 92
7.6 在下半部之间加锁 93
7.7 下半部处理小结 95
第8章 内核同步介绍 96
8.1 临界区和竞争条件 96
8.2 加锁 98
8.2.1 到底是什么造成了并发执行 100
8.2.2 要保护些什么 101
8.3 死锁 102
8.4 争用和扩展性 103
8.5 小结 104
第9章 内核同步方法 105
9.1 原子操作 105
9.1.1 原子整数操作 105
9.1.2 原子位操作 107
9.2 自旋锁 109
9.2.1 其他针对自旋锁的操作 111
9.2.2 自旋锁和下半部 112
9.3 读-写自旋锁 112
9.4 信号量 114
9.4.1 创建和初始化信号量 115
9.4.2 使用信号量 116
9.5 读-写信号量 116
9.6 自旋锁与信号量 117
9.7 完成变量 118
9.8 BKL 118
9.9 禁止抢占 120
9.10 顺序和屏障 121
9.11 小结 124
第10章 定时器和时间管理 125
10.1 内核中的时间概念 125
10.2 节拍率:HZ 126
10.3 jiffies 128
10.3.1 jiffies的内部表示 129
10.3.2 jiffies 的回绕 130
10.3.3 用户空间和HZ 131
10.4 硬时钟和定时器 132
10.4.1 实时时钟 132
10.4.2 系统定时器 132
10.5 时钟中断处理程序 132
10.6 实际时间 134
10.7 定时器 136
10.7.1 使用定时器 136
10.7.2 定时器竞争条件 138
10.7.3 实现定时器 138
10.8 延迟执行 138
10.8.1 忙等待 139
10.8.2 短延迟 140
10.8.3 schedule_timeout() 141
10.8.4 设置超时时间,在等待队列上睡眠 142
10.9 小结 143
第11章 内存管理 144
11.1 页 144
11.2 区 145
11.3 获得页 147
11.3.1 获得填充为0的页 148
11.3.2 释放页 148
11.4 kmalloc() 149
11.4.1 gfp_mask标志 149
11.4.2 kfree() 152
11.5 vmalloc() 153
11.6 slab层 154
11.7 slab分配器的接口 157
11.8 在栈上的静态分配 159
11.9 高端内存的映射 160
11.9.1 永久映射 160
11.9.2 临时映射 161
11.10 每个CPU的分配 162
11.11 新的每个CPU接口 162
11.11.1 编译时的每个CPU数据 162
11.11.2 运行时的每个CPU数据 163
11.12 使用每个CPU数据的原因 164
11.13 分配函数的选择 165
第12章 虚拟文件系统 166
12.1 通用文件系统接口 166
12.2 文件系统抽象层 166
12.3 Unix 文件系统 167
12.4 VFS 对象及其数据结构 168
12.5 超级块对象 169
12.6 索引节点对象 172
12.7 目录项对象 177
12.7.1 目录项状态 177
12.7.2 目录项缓存 178
12.7.3 目录项操作 179
12.8 文件对象 180
12.9 和文件系统相关的数据结构 184
12.10 和进程相关的数据结构 185
12.11 Linux中的文件系统 187
第13章 块I/O层 188
13.1 解剖一个块设备 188
13.2 缓冲区和缓冲区头 189
13.3 bio结构体 191
13.4 请求队列 193
13.5 I/O调度程序 194
13.5.1 I/O调度程序的工作 194
13.5.2 Linus 电梯 195
13.5.3 最终期限I/O调度程序 195
13.5.4 预测I/O调度程序 197
13.5.5 完全公正的排队I/O调度程序 198
13.5.6 空操作的I/O调度程序 198
13.5.7 I/O调度程序的选择 198
13.6 小结 199
第14章 进程地址空间 200
14.1 内存描述符 201
14.1.1 分配内存描述符 202
14.1.2 销毁内存描述符 203
14.1.3 mm_struct 与内核线程 203
14.2 内存区域 203
14.2.1 VMA标志 204
14.2.2 VMA 操作 205
14.2.3 内存区域的树型结构和内存区域的链表结构 206
14.2.4 实际使用中的内存区域 207
14.3 操作内存区域 208
14.3.1 find_vma() 208
14.3.2 find_vma_prev() 209
14.3.3 find_vma_intersection() 209
14.4 mmap()和do_mmap():创建地址区间 210
14.5 munmap()和do_munmap():删除地址区间 211
14.6 页表 212
14.7 小结 213
第15章 页高速缓存和页回写 214
15.1 页高速缓存 214
15.2 基树 217
15.3 缓冲区高速缓存 218
15.4 pdflush后台例程 218
15.4.1 膝上型电脑模式 219
15.4.2 bdflush和kupdated 219
15.4.3 避免拥塞的方法:使用多线程 220
15.5 小结 221
第16章 模块 222
16.1 构建模块 223
16.1.1 放在内核源代码树中 223
16.1.2 放在内核代码外 225
16.2 安装模块 225
16.3 产生模块依赖性 225
16.4 载入模块 225
16.5 管理配置选项 226
16.6 模块参数 228
16.7 导出符号表 229
16.8 小结 230
第17章 kobject与sysfs 231
17.1 kobject 231
17.2 ktype 232
17.3 kset 233
17.4 subsystem 233
17.5 别混淆了这些结构体 234
17.6 管理和操作kobject 234
17.7 引用计数 235
17.8 sysfs 236
17.8.1 sysfs中添加和删除kobject 238
17.8.2 向sysfs中添加文件 238
17.9 内核事件层 241
17.10 小结 242
第18章 调试 243
18.1 调试前需要准备什么 243
18.2 内核中的bug 244
18.3 printk() 244
18.3.1 printk()函数的健壮性 244
18.3.2 记录等级 245
18.3.3 记录缓冲区 246
18.3.4 syslogd和klogd 246
18.3.5 printk()和内核开发时需要留意的一点 246
18.4 oops 247
18.4.1 ksymoops 248
18.4.2 kallsyms 248
18.5 内核调试配置选项 248
18.6 引发bug并打印信息 249
18.7 神奇的SysRq 250
18.8 内核调试器的传奇 251
18.8.1 gdb 251
18.8.2 kgdb 251
18.8.3 kdb 252
18.9 刺探系统 252
18.9.1 用UID作为选择条件 252
18.9.2 使用条件变量 252
18.9.3 使用统计量 252
18.9.4 重复频率限制 253
18.10 用二分查找法找出引发灾难的变更 254
18.11 当所有的努力都失败时 254
第19章 可移植性 255
19.1 Linux的可移植性 256
19.2 字长和数据类型 257
19.2.1 不透明类型 258
19.2.2 指定数据类型 259
19.2.3 长度明确的类型 259
19.2.4 char型的符号问题 260
19.3 数据对齐 260
19.3.1 避免对齐引发的问题 261
19.3.2 非标准类型的对齐 261
19.3.3 结构体填补 261
19.4 字节顺序 262
19.4.1 高位优先和低位优先的历史 264
19.4.2 内核中的字节顺序 264
19.5 时间 264
19.6 页长度 264
19.7 处理器排序 265
19.8 SMP、内核抢占、高端内存 265
19.9 小结 266
第20章 补丁、开发和社区 267
20.1 社区 267
20.2 Linux编码风格 267
20.2.1 缩进 268
20.2.2 括号 268
20.2.3 每行代码的长度 269
20.2.4 命名规范 269
20.2.5 函数 269
20.2.6 注释 269
20.2.7 typedef 270
20.2.8 多用现成的东西 271
20.2.9 在源码中不要使用ifdef 271
20.2.10 结构初始化 271
20.2.11 代码的事后修正 272
20.3 管理系统 272
20.4 提交错误报告 272
20.5 创建补丁 273
20.6 提交补丁 273
20.7 小结 274
附录A 链表 275
附录B 内核随机数产生器 281
附录C 复杂度算法 285
参考资料 287
这件商品于 2006-01-18 添加.
Google AdSense...
出版社-机械工业出版社
...
更多
机器与机构设计(英文版)
电脑办公八合一教程/新零距离电脑课堂系列
超高压交流输电工程(原书第3版)/国际电气工程先进技术译丛
PHP+Ajax完全自学手册(附光盘珍藏版)/编程红宝书
计算机网络与互联网(面向计算机科学与技术专业规范系列教材)
PHP完全自学手册(附光盘珍藏版)/编程红宝书
数字系统的VHDL设计(21世纪高等院校电子信息类本科规划教材)
好服务大生意(优质服务手册原书第2版)
管理成就生活
译者-陈莉君
...
更多
Linux内核编程
首次购物
购物演示
常见问题
隐私条款
付款方式
网上支付
邮局汇款
银行汇款
配送方式
运费收取标准
到货时间
会员专区
我的账单
我的收藏
有问必答
帮助中心
找回密码
联系我们
关于我们
|
网站地图
|
用户注册
|
广告客户
|
招聘信息
|
业务信息
Copyright©2006-2009 JQCQ.com,WONDER. All Rights Reserved
重庆科技咨询中心.重庆网得信息技术有限公司.版权所有
Email: book@jqinfo.com
电话:023-63002289-802 63659911 传真:023-63659907 短信查询:13638319092(
短信
)
邮编:400013 地址:重庆市渝中区双钢路3号科协大厦15楼 收款人:科普书社