书籍详情
Linux内核精析
作者:郑阿奇
出版社:电子工业出版社
出版时间:2013-02-01
ISBN:9787121192111
定价:¥109.00
购买这本书可以去
内容简介
Linux是一个完全免费、开放、跨平台的操作系统,是类UNIX系统中的一员,它支持多用户、多线程、多进程,实时性好、功能强大。学习Linux的关键在于对内核的理解和把握,本书作者长期从事Linux系统特别是嵌入式系统产品的研发,积累了丰富的经验。书中全面、系统、深入地介绍了Linux,对Linux内核进行了深度的剖析。全书共15章,包括概述、Linux内核启动、进程、进程地址空间、进程的调度、内存管理、进程间通信、系统调用、内核同步、设备驱动程序、中断、时钟、文件系统、ext文件系统和内核模块。每一章的内容都深入浅出,文字和程序相结合,每一部分的说明都比较详细,尽可能让读者看得懂、能理解。
作者简介
暂缺《Linux内核精析》作者简介
目录
目 录
第1章 概述\t1
1.1 Linux的内存管理机制\t1
1.2 Linux的基本组成\t3
1.2.1 进程\t3
1.2.2 进程间通信\t4
1.2.3 内存管理\t4
1.2.4 设备驱动\t5
1.2.5 中断\t6
1.2.6 时钟\t6
1.2.7 文件系统\t6
1.2.8 内核模块\t7
1.3 本章小结\t7
第2章 Linux内核启动\t8
2.1 BOIS启动阶段\t8
2.2 实模式setup阶段\t9
2.3 保护模式startup_32阶段\t14
2.4 内核启动start_kernel\t17
2.5 本章小结\t39
第3章 进程\t40
3.1 进程的表示\t40
3.1.1 进程描述符\t40
3.1.2 命名空间\t47
3.1.3 进程标识\t52
3.2 进程关系\t63
3.3 进程的复制\t64
3.3.1 写时复制\t64
3.3.2 执行系统调用\t65
3.4 新进程启动\t94
3.5 进程的切换\t103
3.6 进程的退出\t106
3.7 本章小结\t118
第4章 进程地址空间\t119
4.1 进程虚拟地址空间\t119
4.1.1 进程地址空间的布局\t120
4.1.2 进程地址空间布局的创建\t123
4.2 线性区\t125
4.2.1 虚拟内存区域的表示\t127
4.2.2 虚拟内存区域的操作\t131
4.2.3 缺页的异常处理\t150
4.2.4 堆的管理\t157
4.3 本章小结\t159
第5章 进程的调度\t160
5.1 数据结构\t160
5.1.1 调度器类\t162
5.1.2 就绪队列\t164
5.1.3 调度实体\t166
5.2 进程优先级\t168
5.2.1 优先级内核表示\t168
5.2.2 优先级的计算\t171
5.2.3 计算负荷权重\t173
5.2.4 核心调度器\t175
5.3 CFS调度器\t176
5.3.1 CFS调度器对象\t176
5.3.2 CFS调度器的管理结构\t177
5.3.3 CFS调度器操作\t178
5.3.4 CFS队列操作\t182
5.3.5 周期性调度器\t186
5.3.6 进程加入就绪队列\t189
5.3.7 选择下一个进程\t192
5.3.8 唤醒进程\t195
5.3.9 新进程处理\t202
5.4 实时调度类\t204
5.4.1 实时进程的数据结构\t204
5.4.2 实时调度器操作\t205
5.5 本章小结\t207
第6章 内存管理\t208
6.1 内存管理的框架\t208
6.1.1 非一致内存访问(NUMA)\t208
6.1.2 内存管理区\t210
6.1.3 物理内存地址空间\t214
6.2 内存管理初始化\t216
6.2.1 建立数据结构\t216
6.2.2 启动过程内存管理的初始化\t222
6.2.3 页表的初始化\t230
6.2.4 内存管理结构的初始化\t233
6.3 伙伴算法\t242
6.3.1 伙伴算法初始化与释放\t243
6.3.2 内存分配API\t248
6.3.3 内核中不连续页的分配\t254
6.3.4 内核映射\t259
6.4 slab分配器\t264
6.4.1 slab分配器的原理\t264
6.4.2 slab分配器的实现\t265
6.4.3 通用对象\t282
6.5 slub分配器\t284
6.5.1 slub分配器的原理\t284
6.5.2 slub分配器的初始化\t287
6.5.3 slub内存的分配\t289
6.5.4 slub内存的释放\t295
6.6 本章小结\t297
第7章 进程间通信\t298
7.1 管道\t298
7.1.1 管道相关的数据结构\t298
7.1.2 管道的创建\t300
7.1.3 管道的撤销\t306
7.1.4 向管道写入数据\t307
7.1.5 从管道读取数据\t311
7.2 FIFO\t314
7.3 System V IPC\t317
7.3.1 IPC信号量\t317
7.3.2 消息队列\t321
7.3.3 共享内存\t323
7.4 信号\t324
7.4.1 信号发送\t327
7.4.2 信号传递与捕获\t338
7.5 本章小结\t346
第8章 系统调用\t347
8.1 系统调用简介\t347
8.2 系统调用的实现\t347
8.3 系统调用的参数传递\t363
8.4 异常表\t364
8.5 本章小结\t367
第9章 内核同步\t368
9.1 原子操作\t368
9.2 自旋锁\t370
9.3 读/写自旋锁\t372
9.4 信号量\t372
9.5 RCU机制\t374
9.6 屏障\t377
9.7 互斥量\t378
9.8 本章小结\t379
第10章 设备驱动程序\t380
10.1 I/O体系结构\t380
10.2 设备文件\t381
10.2.1 字符设备、块设备和其他设备\t381
10.2.2 主、从设备号的表示\t383
10.3 字符设备注册\t383
10.3.1 数据结构\t383
10.3.2 字符设备的注册过程\t385
10.4 与文件系统关联\t389
10.4.1 inode中的设备文件成员\t389
10.4.2 标准文件操作\t390
10.5 字符设备操作\t391
10.5.1 字符设备的表示\t391
10.5.2 打开设备文件\t392
10.6 块设备操作\t394
10.6.1 块设备的处理\t394
10.6.2 块设备的表示\t397
10.6.3 向系统添加硬盘和分区\t404
10.6.4 请求结构\t407
10.6.5 BIO\t409
10.6.6 提交请求\t411
10.6.7 I/O调度\t415
10.7 资源分配\t416
10.7.1 资源管理\t416
10.7.2 I/O内存\t418
10.8 总线系统\t419
10.8.1 通用驱动程序模型\t419
10.8.2 PCI总线\t432
10.8.3 USB总线\t438
10.9 本章小结\t446
第11章 中断\t447
11.1 中断处理与中断描述符\t447
11.2 中断的初始化\t450
11.3 中断请求队列的初始化\t460
11.4 中断的处理\t464
11.5 中断与异常的返回\t475
11.6 软中断\t477
11.7 tasklet\t483
11.8 工作队列\t487
11.9 本章小结\t492
第12章 时钟\t493
12.1 低分辨率定时器\t493
12.1.1 数据结构\t494
12.1.2 动态定时器\t495
12.2 通用时钟框架\t501
12.2.1 clocksource概述\t502
12.2.2 clocksource操作\t505
12.2.3 tickless机制\t507
12.3 高分辨率定时器\t520
12.3.1 高分辨率定时器管理结构\t521
12.3.2 高分辨率定时器的初始化\t525
12.3.3 高分辨率定时器操作\t529
12.3.4 高分辨率定时器的实现\t535
12.3.5 动态时钟\t541
12.4 时钟中断处理\t552
12.5 软件定时器\t560
12.5.1 软件定时器的初始化\t560
12.5.2 软件定时器的注册与处理\t562
12.6 本章小结\t563
第13章 文件系统\t564
13.1 虚拟文件系统管理\t564
13.2 通用文件模型\t565
13.2.1 VFS的超级块对象\t565
13.2.2 VFS的inode结构\t570
13.2.3 VFS的文件对象\t575
13.2.4 VFS的目录对象\t578
13.2.5 与进程相关的文件\t579
13.3 文件的类型\t581
13.3.1 磁盘文件\t581
13.3.2 网络文件\t581
13.3.3 特殊文件\t581
13.4 虚拟文件系统处理\t581
13.4.1 文件系统类型注册\t581
13.4.2 文件系统的挂载\t584
13.4.3 文件系统的卸载\t606
13.4.4 路径定位\t609
13.4.5 文件的打开与关闭\t630
13.4.6 文件的读/写\t648
13.5 proc文件系统\t669
13.5.1 数据结构\t669
13.5.2 proc文件系统的初始化\t672
13.5.3 安装proc文件系统\t673
13.5.4 proc数据项管理\t679
13.6 sysfs文件系统\t701
13.6.1 数据结构\t701
13.6.2 安装sysfs文件系统\t703
13.6.3 文件与目录的操作\t706
13.7 本章小结\t714
第14章 ext文件系统\t715
14.1 简介\t715
14.2 ext2文件系统的物理结构\t716
14.3 ext2文件系统的数据结构\t717
14.3.1 超级块\t717
14.3.2 组描述符\t720
14.3.3 索引节点表\t720
14.3.4 目录和文件\t723
14.3.5 ext2文件系统内存中的结构\t724
14.4 ext2文件系统操作\t726
14.5 ext2磁盘空间管理\t758
14.5.1 创建索引节点inode\t759
14.5.2 删除索引节点inode\t766
14.5.3 释放数据块\t770
14.6 ext3文件系统\t772
14.7 本章小结\t774
第15章 内核模块\t775
15.1 模块的实现\t775
15.1.1 模块的表示\t776
15.1.2 模块的依赖关系
第1章 概述\t1
1.1 Linux的内存管理机制\t1
1.2 Linux的基本组成\t3
1.2.1 进程\t3
1.2.2 进程间通信\t4
1.2.3 内存管理\t4
1.2.4 设备驱动\t5
1.2.5 中断\t6
1.2.6 时钟\t6
1.2.7 文件系统\t6
1.2.8 内核模块\t7
1.3 本章小结\t7
第2章 Linux内核启动\t8
2.1 BOIS启动阶段\t8
2.2 实模式setup阶段\t9
2.3 保护模式startup_32阶段\t14
2.4 内核启动start_kernel\t17
2.5 本章小结\t39
第3章 进程\t40
3.1 进程的表示\t40
3.1.1 进程描述符\t40
3.1.2 命名空间\t47
3.1.3 进程标识\t52
3.2 进程关系\t63
3.3 进程的复制\t64
3.3.1 写时复制\t64
3.3.2 执行系统调用\t65
3.4 新进程启动\t94
3.5 进程的切换\t103
3.6 进程的退出\t106
3.7 本章小结\t118
第4章 进程地址空间\t119
4.1 进程虚拟地址空间\t119
4.1.1 进程地址空间的布局\t120
4.1.2 进程地址空间布局的创建\t123
4.2 线性区\t125
4.2.1 虚拟内存区域的表示\t127
4.2.2 虚拟内存区域的操作\t131
4.2.3 缺页的异常处理\t150
4.2.4 堆的管理\t157
4.3 本章小结\t159
第5章 进程的调度\t160
5.1 数据结构\t160
5.1.1 调度器类\t162
5.1.2 就绪队列\t164
5.1.3 调度实体\t166
5.2 进程优先级\t168
5.2.1 优先级内核表示\t168
5.2.2 优先级的计算\t171
5.2.3 计算负荷权重\t173
5.2.4 核心调度器\t175
5.3 CFS调度器\t176
5.3.1 CFS调度器对象\t176
5.3.2 CFS调度器的管理结构\t177
5.3.3 CFS调度器操作\t178
5.3.4 CFS队列操作\t182
5.3.5 周期性调度器\t186
5.3.6 进程加入就绪队列\t189
5.3.7 选择下一个进程\t192
5.3.8 唤醒进程\t195
5.3.9 新进程处理\t202
5.4 实时调度类\t204
5.4.1 实时进程的数据结构\t204
5.4.2 实时调度器操作\t205
5.5 本章小结\t207
第6章 内存管理\t208
6.1 内存管理的框架\t208
6.1.1 非一致内存访问(NUMA)\t208
6.1.2 内存管理区\t210
6.1.3 物理内存地址空间\t214
6.2 内存管理初始化\t216
6.2.1 建立数据结构\t216
6.2.2 启动过程内存管理的初始化\t222
6.2.3 页表的初始化\t230
6.2.4 内存管理结构的初始化\t233
6.3 伙伴算法\t242
6.3.1 伙伴算法初始化与释放\t243
6.3.2 内存分配API\t248
6.3.3 内核中不连续页的分配\t254
6.3.4 内核映射\t259
6.4 slab分配器\t264
6.4.1 slab分配器的原理\t264
6.4.2 slab分配器的实现\t265
6.4.3 通用对象\t282
6.5 slub分配器\t284
6.5.1 slub分配器的原理\t284
6.5.2 slub分配器的初始化\t287
6.5.3 slub内存的分配\t289
6.5.4 slub内存的释放\t295
6.6 本章小结\t297
第7章 进程间通信\t298
7.1 管道\t298
7.1.1 管道相关的数据结构\t298
7.1.2 管道的创建\t300
7.1.3 管道的撤销\t306
7.1.4 向管道写入数据\t307
7.1.5 从管道读取数据\t311
7.2 FIFO\t314
7.3 System V IPC\t317
7.3.1 IPC信号量\t317
7.3.2 消息队列\t321
7.3.3 共享内存\t323
7.4 信号\t324
7.4.1 信号发送\t327
7.4.2 信号传递与捕获\t338
7.5 本章小结\t346
第8章 系统调用\t347
8.1 系统调用简介\t347
8.2 系统调用的实现\t347
8.3 系统调用的参数传递\t363
8.4 异常表\t364
8.5 本章小结\t367
第9章 内核同步\t368
9.1 原子操作\t368
9.2 自旋锁\t370
9.3 读/写自旋锁\t372
9.4 信号量\t372
9.5 RCU机制\t374
9.6 屏障\t377
9.7 互斥量\t378
9.8 本章小结\t379
第10章 设备驱动程序\t380
10.1 I/O体系结构\t380
10.2 设备文件\t381
10.2.1 字符设备、块设备和其他设备\t381
10.2.2 主、从设备号的表示\t383
10.3 字符设备注册\t383
10.3.1 数据结构\t383
10.3.2 字符设备的注册过程\t385
10.4 与文件系统关联\t389
10.4.1 inode中的设备文件成员\t389
10.4.2 标准文件操作\t390
10.5 字符设备操作\t391
10.5.1 字符设备的表示\t391
10.5.2 打开设备文件\t392
10.6 块设备操作\t394
10.6.1 块设备的处理\t394
10.6.2 块设备的表示\t397
10.6.3 向系统添加硬盘和分区\t404
10.6.4 请求结构\t407
10.6.5 BIO\t409
10.6.6 提交请求\t411
10.6.7 I/O调度\t415
10.7 资源分配\t416
10.7.1 资源管理\t416
10.7.2 I/O内存\t418
10.8 总线系统\t419
10.8.1 通用驱动程序模型\t419
10.8.2 PCI总线\t432
10.8.3 USB总线\t438
10.9 本章小结\t446
第11章 中断\t447
11.1 中断处理与中断描述符\t447
11.2 中断的初始化\t450
11.3 中断请求队列的初始化\t460
11.4 中断的处理\t464
11.5 中断与异常的返回\t475
11.6 软中断\t477
11.7 tasklet\t483
11.8 工作队列\t487
11.9 本章小结\t492
第12章 时钟\t493
12.1 低分辨率定时器\t493
12.1.1 数据结构\t494
12.1.2 动态定时器\t495
12.2 通用时钟框架\t501
12.2.1 clocksource概述\t502
12.2.2 clocksource操作\t505
12.2.3 tickless机制\t507
12.3 高分辨率定时器\t520
12.3.1 高分辨率定时器管理结构\t521
12.3.2 高分辨率定时器的初始化\t525
12.3.3 高分辨率定时器操作\t529
12.3.4 高分辨率定时器的实现\t535
12.3.5 动态时钟\t541
12.4 时钟中断处理\t552
12.5 软件定时器\t560
12.5.1 软件定时器的初始化\t560
12.5.2 软件定时器的注册与处理\t562
12.6 本章小结\t563
第13章 文件系统\t564
13.1 虚拟文件系统管理\t564
13.2 通用文件模型\t565
13.2.1 VFS的超级块对象\t565
13.2.2 VFS的inode结构\t570
13.2.3 VFS的文件对象\t575
13.2.4 VFS的目录对象\t578
13.2.5 与进程相关的文件\t579
13.3 文件的类型\t581
13.3.1 磁盘文件\t581
13.3.2 网络文件\t581
13.3.3 特殊文件\t581
13.4 虚拟文件系统处理\t581
13.4.1 文件系统类型注册\t581
13.4.2 文件系统的挂载\t584
13.4.3 文件系统的卸载\t606
13.4.4 路径定位\t609
13.4.5 文件的打开与关闭\t630
13.4.6 文件的读/写\t648
13.5 proc文件系统\t669
13.5.1 数据结构\t669
13.5.2 proc文件系统的初始化\t672
13.5.3 安装proc文件系统\t673
13.5.4 proc数据项管理\t679
13.6 sysfs文件系统\t701
13.6.1 数据结构\t701
13.6.2 安装sysfs文件系统\t703
13.6.3 文件与目录的操作\t706
13.7 本章小结\t714
第14章 ext文件系统\t715
14.1 简介\t715
14.2 ext2文件系统的物理结构\t716
14.3 ext2文件系统的数据结构\t717
14.3.1 超级块\t717
14.3.2 组描述符\t720
14.3.3 索引节点表\t720
14.3.4 目录和文件\t723
14.3.5 ext2文件系统内存中的结构\t724
14.4 ext2文件系统操作\t726
14.5 ext2磁盘空间管理\t758
14.5.1 创建索引节点inode\t759
14.5.2 删除索引节点inode\t766
14.5.3 释放数据块\t770
14.6 ext3文件系统\t772
14.7 本章小结\t774
第15章 内核模块\t775
15.1 模块的实现\t775
15.1.1 模块的表示\t776
15.1.2 模块的依赖关系
猜您喜欢