图书介绍

Linux内核编程PDF|Epub|txt|kindle电子书版本网盘下载

Linux内核编程
  • (美)CLAUDIASALZBERGRODRIGUEZGORDONFISCHERSTEVENSMOLSKI著;陈莉君,贺炎,刘霞林译 著
  • 出版社: 北京:机械工业出版社
  • ISBN:7111192176
  • 出版时间:2006
  • 标注页数:386页
  • 文件大小:23MB
  • 文件页数:400页
  • 主题词:Linux操作系统

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

Linux内核编程PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

1.1 UNIX发展史1

第1章 概述1

1.2 标准和通用接口2

1.3 自由软件和开放源码3

1.4 Linux发布版的快速浏览3

1.4.1 Debian4

1.4.2 Red Hat/Fedora4

1.4.3 Mandriva4

1.4.4 SUSE4

1.4.5 Gentooo4

1.4.6 Yellow Dog4

1.4.7 其他发布版5

1.5 内核版本信息5

1.6 基于Power的Linux5

1.7 操作系统的概念6

1.9.1 用户接口7

1.8 内核组织7

1.9 Linux内核概述7

1.9.2 用户身份鉴别8

1.9.3 文件和文件系统8

1.9.4 进程12

1.9.5 系统调用15

1.9.6 Linux调度程序15

1.9.7 Linux设备驱动程序16

1.10 可移植性和体系结构相关性16

小结17

习题17

第2章 内核探索工具集18

2.1 内核中常见的数据类型18

2.1.1 链表18

2.1.2 查找21

2.1.3 树21

2.2 汇编23

2.2.1 PowerPC24

2.2.2 x8626

2.3 汇编语言示例28

2.3.1 x86中的汇编示例29

2.3.2 PowerPC中的汇编示例31

2.4 内联汇编33

2.4.1 输出操作数33

2.4.2 输入操作数33

2.4.3 修改过的寄存器(或者已修改元素列表)33

2.4.4 参数的编号方式34

2.4.5 约束条件34

2.4.6 asm34

2.4.7 _volatile_34

2.5 特殊的C语言用法37

2.5.1 asmlinkage37

2.5.4 const和volatile38

2.5.3 inline38

2.5.2 UL38

2.6 内核探测工具一览39

2.6.1 objdump/readelf39

2.6.2 hexdump40

2.6.3 nm41

2.6.4 objcopy41

2.6.5 ar41

2.7 内核发言:倾听来自内核的消息41

2.7.1 printk()41

2.7.2 dmesg41

2.7.3 /var/log/messages42

2.8 其他42

2.8.1 _init42

2.8.2 likely()和unlikely()42

2.8.3 IS_ERR和PTR_ERR43

小结44

项目:Hellomode44

2.8.4 通告程序链44

习题47

第3章 进程:程序执行的基本模型48

3.1 引入程序49

3.2 进程描述符51

3.2.1 与进程属性相关的域53

3.2.2 与调度相关的域54

3.2.3 涉及进程间相互关系的域56

3.2.4 进程信任度相关的域58

3.2.5 进程权能相关的域59

3.2.6 进程限制相关的域60

3.2.7 文件系统和地址空间相关的域61

3.3 进程的创建:fork()、vfork和clone()系统调用62

3.3.1 fork()函数64

3.3.2 vfork()函数64

3.3.3 clone()函数65

3.3.4 do_fork()函数66

3.4 进程生命周期68

3.4.1 进程的状态68

3.4.2 进程状态转换69

3.5 进程的终止72

3.5.1 sys_exit()函数73

3.5.2 do_exit()函数73

3.5.3 父进程通知和sys_wait4()75

3.6 了解进程的动态:调度程序的基本构架77

3.6.1 基本结构78

3.6.2 从等待中醒来或者激活79

3.7 等待队列83

3.7.1 添加到等待队列85

3.7.2 等待事件86

3.7.3 唤醒进程88

3.8 异步执行流程90

3.8.1 异常90

3.8.2 中断92

小结109

项目:current系统变量110

习题112

第4章 内存管理113

4.1 页115

4.1.1 标志116

4.2 内存区117

4.2.1 内存区描述符117

4.2.2 内存区操作辅助函数组119

4.3.1 请求页面函数族120

4.3 页面120

4.3.2 释放页面的函数族121

4.3.3 伙伴系统122

4.4 Slab分配器126

4.4.1 缓存描述符127

4.4.2 通用目的缓存描述符131

4.4.3 slab描述符131

4.5.1 slab分配器有关的全局变量133

4.5 slab分配器的生命周期133

4.5.2 创建缓存134

4.5.3 slab创建与cache_grow()139

4.5.4 Slab的销毁:退还内存与kmem_cache_destroy()141

4.6 内存请求路径142

4.6.1 kmalloc()142

4.6.2 kmem_cache_alloc()143

4.7 进程内存结构144

4.7.1 mm_struct144

4.7.2 vm_area_struct146

4.8 进程映像分布于线性地址空间147

4.9 页表150

4.10 缺页150

4.10.1 x86缺页异常151

4.10.2 缺页处理程序151

4.10.3 PowerPC缺页异常158

小结158

项目:进程内存映射159

习题160

第5章 输入/输出161

5.1 硬件如何实现总线、桥、端口和接口161

5.2 设备165

5.2.1 块设备概述165

5.2.2 请求队列和I/O调度166

5.2.3 示例:“通用”块设备驱动程序174

5.2.4 设备操作176

5.2.7 时钟设备177

5.2.5 字符设备概述177

5.2.6 网络设备177

5.2.8 终端设备178

5.2.9 直接存储器存取178

小结178

项目:创建并口驱动程序178

习题186

6.1.1 文件和文件名187

第6章 文件系统187

6.1 文件系统的一般概念187

6.1.2 文件类型188

6.1.3 附加文件属性188

6.1.4 目录和路径名189

6.1.5 文件的操作189

6.1.6 文件描述符189

6.1.7 磁盘块,磁盘分区及其实现190

6.1.8 性能191

6.2 Linux的虚拟文件系统191

6.2.1 VFS的数据结构193

6.2.2 全局链表和局部链表的引用203

6.3 与VFS相关的结构204

6.3.1 fs_struct结构205

6.3.2 files_struct结构205

6.4 页缓冲208

6.4.1 address_space结构209

6.4.2 buffer_head结构210

6.5 VFS的系统调用和文件系统层212

6.5.1 open()213

6.5.2 close()217

6.5.3 read()220

6.5.4 write()235

小结236

习题237

第7章 调度和内核同步238

7.1 Linux调度程序239

7.1.1 选择下一个进程239

7.1.2 上下文切换244

7.1.3 让出CPU251

7.2 抢占259

7.2.1 显式内核抢占259

7.2.2 隐式用户抢占259

7.2.3 隐式内核抢占260

7.3 自旋锁和信号量262

7.4 系统时钟:关于时间和定时器264

7.4.1 实时时钟:现在几点了?264

7.4.2 读取PPC实时时钟266

7.4.3 读取x86的实时时钟268

小结269

习题270

第8章 内核引导271

8.1 BIOS和Open Firmware272

8.2 引导装入程序(Boot Loaders)272

8.2.1 GRUB273

8.2.2 LILO275

8.2.3 PowerPC和Yaboot276

8.3 体系结构相关的内存初始化277

8.3.1 PowerPC的硬件内存管理277

8.3.2 基于Intel x86体系结构的硬件内存管理286

8.4 原始的RAM盘294

8.3.3 PowerPC和x86的代码汇集294

8.5 开始:start_kernel()295

8.5.1 调用lock_kernel()296

8.5.2 调用page_address_init()298

8.5.3 调用printk(linux_banner)300

8.5.4 调用setup_arch300

8.5.5 调用setup_per_cpu_areas()303

8.5.6 调用smp_prepare_boot_cpu()304

8.5.7 调用sched_init()305

8.5.8 调用build_all_zonelists()307

8.5.9 调用page_alloc_init307

8.5.10 调用parse_args()308

8.5.11 调用trap_init()310

8.5.12 调用rcu_init()310

8.5.13 调用init_IRQ()311

8.5.15 调用time_init()312

8.5.14 调用softirq_init()312

8.5.16 调用console_init()313

8.5.17 调用profile_init()314

8.5.18 调用local_irq_enable()314

8.5.19 配置initrd315

8.5.20 调用mem_init()315

8.5.21 调用late_time_init()320

8.5.22 调用calibrate_delay()320

8.5.23 调用pgtable_cache_init()321

8.5.24 调用buffer_init()322

8.5.25 调用security_scaffolding_startup()323

8.5.26 调用vfs_caches_init()323

8.5.27 调用radix_tree_init()329

8.5.28 调用signal_init()330

8.5.29 调用page_writeback_init()330

8.5.30 调用proc_root_init()332

8.5.31 调用init_idle()334

8.5.32 调用rest_init()334

8.6 init线程(或进程1)335

小结339

习题339

第9章 构建Linux内核340

9.1 工具链340

9.1.1 编译程序341

9.1.2 跨编译程序341

9.1.3 链接程序342

9.1.4 ELF二进制目标文件342

9.2 编译内核源代码346

9.2.1 解释源代码346

9.2.2 编译内核映像349

小结355

习题355

第10章 向内核添加代码356

10.1 浏览源代码356

10.1.1 熟悉文件系统356

10.1.2 Filps和Fops357

10.1.3 用户空间和内核空间359

10.1.4 等待队列360

10.1.5 工作队列和中断363

10.1.6 系统调用365

10.1.7 其他类型的驱动程序365

10.1.8 设备模型和sysfs系统文件368

10.2 编写源代码370

10.2.1 设备基础370

10.2.2 符号输出372

10.2.3 IOCTL373

10.2.4 轮询与中断375

10.2.5 工作队列和Tasklets379

10.2.6 增加系统调用的代码380

10.3 编译和调试382

小结383

习题384

参考文献385

热门推荐