Linux内核模块开发技术指南-叶常华王步冉-化学工业 pdf下载
isbn:9787122479280
限时特惠
00:00:00
活动结束后恢复原价
纸质书参考价
¥23
电子版限时价
¥5.99
省 18 元
选择版本
内容简介
本篇主要提供Linux内核模块开发技术指南-叶常华王步冉-化学工业电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com


| 商品基本信息,请以下列介绍为准 | |
| 商品名称: | Linux内核模块开发技术指南 |
| 作者: | 叶常华、王步冉 编著 著 |
| 定价: | 119.0 |
| 出版社: | 化学工业 |
| 出版日期: | 24-05-01 |
| IN: | 9787122479280 |
| 印次: | |
| 版次: | 1 |
| 装帧: | 平装 |
| 开本: | 16开 |
| 内容简介 |
| 《Linux内核模块开发技术指南》旨在帮助读者快速理解Linux内核,并掌握内核模块开发及性能调优的能力。 本书以Linux 5.10版本内核为蓝本,通过对内核工作原理的阐释与诸多核心模块的动手实现,详细介绍了内核模块相关基础、并发与互斥、系统调用、内核监控与调试、字符和块设备驱动、外部中断、块I/O调度、文件系统程调度、网络数过滤、模块等内容。 本书不仅适合初学者学nux内核开发的基础知识,也适合有一定基础的深入学主题和前沿技术。 |
| 目录 |
| 1章 个内核模块Hello,Linux Kernel 001 1.1 内核模块的程序构成 001 1.1.1 简单的内核模块 002 1.1.2 许可证协议 004 1.1.3 模块参数 004 1.1.4 模块导出符号 006 1.1.5 模块作者 007 1.1.6 描述信息 008 1.2 打印级别 008 1.3 再谈Hello,Linux Kenel 009 1.4 常用数据结构 011 1.4.1 链表 011 1.4.2 哈希链表 011 1.4.3 红黑树 012 1.4.4 XArray 013 2章 proc文件 018 2.1 创建proc文件 018 2.2 文件读写 022 2.2.1 数据传递接口 022 2.2.2 实现数据读写 022 2.3 创建目录 024 2.过偏移量读写文件 025 2.5 打开的文件 027 2.6 移动读写位置 029 2.7 目录项和文件节点 032 2.8 I/O控制操作 039 2.9 小结 042 3章 内核模块开发基础 043 3.1 内核丁 043 3.1.1 丁头 043 3.1.2 丁块 044 3.1.3 创建丁文件 044 3.1.4 安装丁文件 045 3.1.5 撤销丁文件 046 3.2 常用的内存分配和释放接口 046 3.2.1 kmalloc和kfree 047 3.2.2 vmalloc和vfree 048 3.2.3 分配连续的内存页 048 3.2.4 kmem_cache系列函数 048 3.2.5 物理地址和虚拟地址 050 3.2.6 几种内存分配接口的关系 053 3.3 054 3.3.1 mmap系统调用 055 3.3.2 proc文件的mmap操作 056 3.4 获取未映射内存区域 059 3.5 散布读 060 3.6 内核线程 0 3.6.1程的状态 0 3.6.2 创建内核线程 067 3.6.3 二程 069 3.7 工作队列 070 3.8 等待队列 071 3.9 实现wt_event和wake_up 078 3.10 多路复用 082 3.10.elect系统调用 082 3.10.2 proc文件的poll操作 084 3.11 定时器 086 3.11.1 毫秒级定时器 086 3.11.2 高精度定时器 089 3.12 延时任务 093 4章 并发与互斥 095 4.1 信号量 09.2 互斥体 098 4.3 完成量 099 4.4 原子操作 102 4.4.1 整型原子操作 103 4.4.2 位原子操作 105 4.5 自旋锁 105 4.6 读写锁 108 4.7 RCU 111 4.7.1 原理 111 4.7.2 接口及示例 112 4.8 PER_CPU 114 4.8.1 原理 114 4.8.2 相关接口 115 4.8.3 示例程序 11.9 死锁检测 117 5章 系统调用 1 5.1 执行系统调用 1 5.1.1 系统调用的执行过程 1 5.1.2 系统调用的三种执行方式 121 5.2 C与汇编 123 5.2.1 C语言和汇编语言函数的参数传递 123 5.2.2 内联汇编 127 5.3 增加系统调用 132 5.4 Linux系统调用的实现方式 136 5.5 通过软件中断实现系统调用 138 5.5.1 通过0x80软件中断执行系统调用 138 5.5.2 自己动手实现系统调用 140 6章 监控与调试 141 6.1 kprobe 141 6.1.1 结构体和相关接口 141 6.1.2 示例程序 142 6.2 kretprobe 145 6.2.1 结构体和相关接口 146 6.2.2 示例程序 147 6.3 uprobe 149 6.3.1 结构体和相关接口 149 6.3.2 示例程序 151 perf 154 6.5 bpftrace 160 6.6 kdump 163 6.6.1 产生v文件 163 6.6.2 查看v文件 163 6.6.3 crash工具 1 6. crash分析示例 167 6.7 kgdb 170 7章 字符设备驱动 175 7.1 简单的字符设备驱动 175 7.1.1 相关接口 175 7.1.2 示例程序 178 7.2 通过字符设备驱动访问串口 181 7.2.1 串行通信 181 7.2.2 相关寄存器 181 7.2.3 串口/发送配置 183 7.2.4 示例程序 183 7.3 通过ioctl操作配置串口参数 188 7.3.1 相关寄存器 188 7.3.2 示例程序 188 8章 外部中断 191 8.1 基本概念 191 8.2 通过中断读取串口数据 192 8.2.1 相关寄存器 192 8.2.2 相关接口 193 8.2.3 示例程序 194 8.3 中断底半部 197 8.3.1 工作队列 197 8.3.2 tasklet 198 8.3.3 软中断 0 8.4 常用接口 3 9章 文件操作 6 9.1 虚拟文件系统(VFS) 6 9.1.1 read系统调用的执行过程 7 9.1.2 VFS管理的对象 8 9.2 write_iter操作 8 9.3 flush操作 211 9.4 flock操作 215 9.5 lock操作 218 9.6 splice_read和splice_write 221 9.6.plice系统调用 221 9.6.2 相关结构体和接口 222 9.6.3 示例程序 227 9.7 copy_file_range操作 229 9.7.1 copy_file_range系统调用 229 9.7.2 示例程序 230 9.7.3 remap_file_range 233 10章 块设备驱动 235 10.1 块设备 235 10.2 相关概念 236 10.2.1 通用磁盘结构体gendisk 236 10.2.2 块设备对象block_device 239 10.2.3 I/O处理基本单元bio 240 10.3 个块设备驱动 244 10.4 块I/O请求队列 247 10.4.1 块I/O请求 247 10.4.2 请求队列 249 10.4.3 相关接口 251 10.5 在块设备驱动中使用请求队列 254 11章 块I/O调度 257 11.1 块I/O调度流程 257 11.2 块I/O调度相关结构体 258 11.3 写一个块I/O调度器 265 11.4 Mq-Deadline调度器 269 12章 文件系统 271 12.1 注册文件系统 271 12.1.1 块 271 12.1.2 相关接口 273 12.1.3 示例程序 273 12.2 创建块 275 12.3 创建根目录 278 12.4 本级目录和上级目录 281 12.5 增加一个文件 285 12.6 增加文件的读写操作 288 12.7 动态创建文件 289 12.8 文件的删除操作 294 12.9 写一个磁盘文件系统 295 12.9.1 磁盘文件系统 295 12.9.2 注册并创建块 297 12.9.3 目录下文件的遍历 304 12.9.4 在根目录下创建文件 308 12.9.5 读取文件数据 310 12.9.6 向文件写入数据 313 13章 文件数据的管理 319 13.1 地址空间 319 13.1.1 数据结构 319 13.1.2 地址空间操作函数 3 13.1.3 文件数据的缓存 323 13.2 在文件系统中使用地址空间 324 13.2.1 相关接口 324 13.2.2 示例程序 327 13.3 小结 332 14章程调度 333 14.1 基本概念 333 14.1.1程调度器 333 14.1.2 调度实体 338 14.1.3 调度域 338 14.1.4程控制块 341 14.1.5 运行队列 344 14.1.6程调度流程 34.2 动手实程调度器 347 14.3 公平调度器分析 353 14.3.1 权重和虚拟运行时间 353 14.3.2 负载的计算 355 14.3.3程的迁移 357 14.3.4 为程/被唤程选择合适的CPU 360 15章 网络数过滤 362 15.1 Netfilter原理 362 15.2 实现简单的Netfilter模块 363 15.3 uff 369 15.3.1 结构体介绍 369 15.3.2 常用接口 373 15.3.3 示例程序 377 15.4 IP数据处理的五条链 384 15.4.1 PREROUTING链 384 15.4.2 INPUT链 385 15.4.3 FORWARD链 386 15.4.4 OUTPUT链 386 15.4.5 POSTROUTING链 387 15.5 连接跟踪机制 387 15.6 NF Queue 391 15.6.1 将数传递给应用程序 391 15.6.2 创建并监听NF Queue套接字 392 15.6.3 示例程序 400 15.7 Iptab 412 15.8 ARP数过滤 412 16章 Linux模块 415 16.1 LSM的实现原理 415 16.2 编写一个简单的LSM模块 417 16.2.1 打内核丁 417 16.2.2 编写LSM模块 419 16.2.3 控制目录的创建 422 16.3 理解LSM框架 425 1 目录访问控制 427 16.5 inode节点访问控制 430 16.6 文件访问控制 432 16.7 小结 434 |
| 作者简介 |
| 无 |