[an error occurred while processing this directive]

全部商品分类

您现在的位置: 全部商品分类 > 电子电脑 > 计算机技术 > 操作系统

Linux内核模块开发技术指南

  • 定价: ¥119
  • ISBN:9787122479280
  • 开 本:16开 平装
  •  
  • 折扣:
  • 出版社:化学工业
  • 页数:434页
  • 作者:编者:叶常华//王...
  • 立即节省:
  • 2025-07-01 第1版
  • 2025-07-01 第1次印刷
我要买:
点击放图片

导语

  

内容提要

  

    《Linux内核模块开发技术指南》旨在帮助读者快速理解Linux内核,并掌握内核模块开发及性能调优的能力。
    本书以Linux 5.10版本内核为蓝本,通过对内核工作原理的阐释与诸多核心模块的动手实现,详细介绍了内核模块相关基础、并发与互斥、系统调用、内核监控与调试、字符和块设备驱动、外部中断、块I/O调度、文件系统、进程调度、网络数据包过滤、安全模块等内容。
    本书不仅适合初学者学习Linux内核开发的基础知识,也适合有一定基础的开发者深入学习高级主题和前沿技术。

目录

第1章  第一个内核模块Hello,Linux Kernel
  1.1  内核模块的程序构成
    1.1.1  最简单的内核模块
    1.1.2  许可证协议
    1.1.3  模块参数
    1.1.4  模块导出符号
    1.1.5  模块作者
    1.1.6  描述信息
  1.2  打印级别
  1.3  再谈Hello,Linux Kenel
  1.4  常用数据结构
    1.4.1  链表
    1.4.2  哈希链表
    1.4.3  红黑树
    1.4.4  XArray
第2章  proc文件
  2.1  创建proc文件
  2.2  文件读写
    2.2.1  数据传递接口
    2.2.2  实现数据读写
  2.3  创建目录
  2.4  通过偏移量读写文件
  2.5  打开的文件
  2.6  移动读写位置
  2.7  目录项和文件节点
  2.8  I/O控制操作
  2.9  小结
第3章  内核模块开发基础
  3.1  内核补丁
    3.1.1  补丁头
    3.1.2  补丁块
    3.1.3  创建补丁文件
    3.1.4  安装补丁文件
    3.1.5  撤销补丁文件
  3.2  常用的内存分配和释放接口
    3.2.1  kmalloc和kfree
    3.2.2  vmalloc和vfree
    3.2.3  分配连续的内存页
    3.2.4  kmem_cache系列函数
    3.2.5  物理地址和虚拟地址
    3.2.6  几种内存分配接口的关系
  3.3  内存映射
    3.3.1  mmap系统调用
    3.3.2  proc文件的mmap操作
  3.4  获取未映射内存区域
  3.5  散布读
  3.6  内核线程
    3.6.1  进程的状态
    3.6.2  创建内核线程
    3.6.3  二号进程
  3.7  工作队列
  3.8  等待队列
  3.9  实现wait_event和wake_up
  3.10  多路复用
    3.10.1  select系统调用
    3.10.2  proc文件的poll操作
  3.11  定时器
    3.11.1  毫秒级定时器
    3.11.2  高精度定时器
  3.12  延时任务
第4章  并发与互斥
  4.1  信号量
  4.2  互斥体
  4.3  完成量
  4.4  原子操作
    4.4.1  整型原子操作
    4.4.2  位原子操作
  4.5  自旋锁
  4.6  读写锁
  4.7  RCU
    4.7.1  原理
    4.7.2  接口及示例
  4.8  PER_CPU
    4.8.1  原理
    4.8.2  相关接口
    4.8.3  示例程序
  4.9  死锁检测
第5章  系统调用
  5.1  执行系统调用
    5.1.1  系统调用的执行过程
    5.1.2  系统调用的三种执行方式
  5.2  C与汇编
    5.2.1  C语言和汇编语言函数的参数传递
    5.2.2  内联汇编
  5.3  增加系统调用
  5.4  Linux系统调用的实现方式
  5.5  通过软件中断实现系统调用
    5.5.1  通过0x80软件中断执行系统调用
    5.5.2  自己动手实现系统调用
第6章  监控与调试
  6.1  kprobe
    6.1.1  结构体和相关接口
    6.1.2  示例程序
  6.2  kretprobe
    6.2.1  结构体和相关接口
    6.2.2  示例程序
  6.3  uprobe
    6.3.1  结构体和相关接口
    6.3.2  示例程序
  6.4  perf
  6.5  bpftrace
  6.6  kdump
    6.6.1  产生vmcore文件
    6.6.2  查看vmcore文件
    6.6.3  crash工具
    6.6.4  crash分析示例
  6.7  kgdb
第7章  字符设备驱动
  7.1  最简单的字符设备驱动
    7.1.1  相关接口
    7.1.2  示例程序
  7.2  通过字符设备驱动访问串口
    7.2.1  串行通信
    7.2.2  相关寄存器
    7.2.3  串口接收/发送配置
    7.2.4  示例程序
  7.3  通过ioctl操作配置串口参数
    7.3.1  相关寄存器
    7.3.2  示例程序
第8章  外部中断
  8.1  基本概念
  8.2  通过中断读取串口数据
    8.2.1  相关寄存器
    8.2.2  相关接口
    8.2.3  示例程序
  8.3  中断底半部
    8.3.1  工作队列
    8.3.2  tasklet
    8.3.3  软中断
  8.4  常用接口
第9章  文件操作
  9.1  虚拟文件系统(VFS)
    9.1.1  read系统调用的执行过程
    9.1.2  VFS管理的对象
  9.2  write_iter操作
  9.3  flush操作
  9.4  flock操作
  9.5  lock操作
  9.6  splice_read和splice_write
    9.6.1  splice系统调用
    9.6.2  相关结构体和接口
    9.6.3  示例程序
  9.7  copy_file_range操作
    9.7.1  copy_file_range系统调用
    9.7.2  示例程序
    9.7.3  remap_file_range
第10章  块设备驱动
  10.1  块设备
  10.2  相关概念
    10.2.1  通用磁盘结构体gendisk
    10.2.2  块设备对象block_device
    10.2.3  I/O处理基本单元bio
  10.3  第一个块设备驱动
  10.4  块I/O请求队列
    10.4.1  块I/O请求
    10.4.2  请求队列
    10.4.3  相关接口
  10.5  在块设备驱动中使用请求队列
第11章  块I/O调度
  11.1  块I/O调度流程
  11.2  块I/O调度相关结构体
  11.3  写一个块I/O调度器
  11.4  Mq-Deadline调度器
第12章  文件系统
  12.1  注册文件系统
    12.1.1  超级块
    12.1.2  相关接口
    12.1.3  示例程序
  12.2  创建超级块
  12.3  创建根目录
  12.4  本级目录和上级目录
  12.5  增加一个文件
  12.6  增加文件的读写操作
  12.7  动态创建文件
  12.8  文件的删除操作
  12.9  写一个磁盘文件系统
    12.9.1  磁盘文件系统
    12.9.2  注册并创建超级块
    12.9.3  目录下文件的遍历
    12.9.4  在根目录下创建文件
    12.9.5  读取文件数据
    12.9.6  向文件写入数据
第13章  文件数据的管理
  13.1  地址空间
    13.1.1  数据结构
    13.1.2  地址空间操作函数
    13.1.3  文件数据的缓存
  13.2  在文件系统中使用地址空间
    13.2.1  相关接口
    13.2.2  示例程序
  13.3  小结
第14章  进程调度
  14.1  基本概念
    14.1.1  进程调度器
    14.1.2  调度实体
    14.1.3  调度域
    14.1.4  进程控制块
    14.1.5  运行队列
    14.1.6  进程调度流程
  14.2  动手实现进程调度器
  14.3  公平调度器分析
    14.3.1  权重和虚拟运行时间
    14.3.2  负载的计算
    14.3.3  进程的迁移
    14.3.4  为新进程/被唤醒进程选择合适的CPU
第15章  网络数据包过滤
  15.1  Netfilter原理
  15.2  实现最简单的Netfilter模块
  15.3  sk_buff
    15.3.1  结构体介绍
    15.3.2  常用接口
    15.3.3  示例程序
  15.4  IP数据处理的五条链
    15.4.1  PREROUTING链
    15.4.2  INPUT链
    15.4.3  FORWARD链
    15.4.4  OUTPUT链
    15.4.5  POSTROUTING链
  15.5  连接跟踪机制
  15.6  NF Queue
    15.6.1  将数据包传递给应用程序
    15.6.2  创建并监听NF Queue套接字
    15.6.3  示例程序
  15.7  Iptables
  15.8  ARP数据包过滤
第16章  Linux安全模块
  16.1  LSM的实现原理
  16.2  编写一个简单的LSM模块
    16.2.1  打内核补丁
    16.2.2  编写LSM模块
    16.2.3  控制目录的创建
  16.3  理解LSM框架
  16.4  目录访问控制
  16.5  inode节点访问控制
  16.6  文件访问控制
  16.7  小结

 
[an error occurred while processing this directive]