跟老男孩学Linux运维:核心基础篇(上)(第2版)
作者:冉宏元(老男孩)
出版社:机械工业出版社
ISBN:9787111632511
VIP会员免费
(仅需0.8元/天)
¥ 65.0
温馨提示: 价值40000元的1000本电子书,VIP会员随意看哦!
电子书推荐
-
Linux Device Driver 中文版第三版 评分:
linux设备驱动中文第三版,全网页清晰文字版。 目录 1. 第一章 设备驱动简介 1.1. 驱动程序的角色 1.2. 划分内核 1.2.1. 可加载模块 1.3. 设备和模块的分类 1.4. 安全问题 1.5. 版本编号 1.6. 版权条款 1.7. 加入内核开发社团 1.8. 本书的内容 2. 建立和运行模块 2.1. 设置你的测试系统 2.2. Hello World 模块 2.3. 内核模块相比于应用程序 2.3.1. 用户空间和内核空间 2.3.2. 内核的并发 2.3.3. 当前进程 2.3.4. 几个别的细节 2.4. 编译和加载 2.4.1. 编译模块 2.4.2. 加载和卸载模块 2.4.3. 版本依赖 2.4.4. 平台依赖性 2.5. 内核符号表 2.6. 预备知识 2.7. 初始化和关停 2.7.1. 清理函数 2.7.2. 初始化中的错误处理 2.7.3. 模块加载竞争 2.8. 模块参数 2.9. 在用户空间做 2.10. 快速参考 3. 字符驱动 3.1. scull 的设计 3.2. 主次编号 3.2.1. 设备编号的内部表示 3.2.2. 分配和释放设备编号 3.2.3. 主编号的动态分配 3.3. 一些重要数据结构 3.3.1. 文件操作 3.3.2. 文件结构 3.3.3. inode 结构 3.4. 字符设备注册 3.4.1. scull 中的设备注册 3.4.2. 老方法 3.5. open 和 release 3.5.1. open 方法 3.5.2. release 方法 3.6. scull 的内存使用 3.7. 读和写 3.7.1. read 方法 3.7.2. write 方法 3.7.3. readv 和 writev 3.8. 使用新设备 3.9. 快速参考 4. 调试技术 4.1. 内核中的调试支持 4.2. 用打印调试 4.2.1. printk 4.2.2. 重定向控制台消息 4.2.3. 消息是如何记录的 4.2.4. 打开和关闭消息 4.2.5. 速率限制 4.2.6. 打印设备编号 4.3. 用查询来调试 4.3.1. 使用 /proc 文件系统 4.3.2. ioctl 方法 4.4. 使用观察来调试 4.5. 调试系统故障 4.5.1. oops 消息 4.5.2. 系统挂起 4.6. 调试器和相关工具 4.6.1. 使用 gdb 4.6.2. kdb 内核调试器 4.6.3. kgdb 补丁 4.6.4. 用户模式 Linux 移植 4.6.5. Linux 追踪工具 4.6.6. 动态探针 5. 并发和竞争情况 5.1. scull 中的缺陷 5.2. 并发和它的管理 5.3. 旗标和互斥体 5.3.1. Linux 旗标实现 5.3.2. 在 scull 中使用旗标 5.3.3. 读者/写者旗标 5.4. Completions 机制 5.5. 自旋锁 5.5.1. 自旋锁 API 简介 5.5.2. 自旋锁和原子上下文 5.5.3. 自旋锁函数 5.5.4. 读者/写者自旋锁 5.6. 锁陷阱 5.6.1. 模糊的规则 5.6.2. 加锁顺序规则 5.6.3. 细 -粗- 粒度加锁 5.7. 加锁的各种选择 5.7.1. 不加锁算法 5.7.2. 原子变量 5.7.3. 位操作 5.7.4. seqlock 锁 5.7.5. 读取-拷贝-更新 5.8. 快速参考 6. 高级字符驱动操作 6.1. ioctl 接口 6.1.1. 选择 ioctl 命令 6.1.2. 返回值 6.1.3. 预定义的命令 6.1.4. 使用 ioctl 参数 6.1.5. 兼容性和受限操作 6.1.6. ioctl 命令的实现 6.1.7. 不用 ioctl 的设备控制 6.2. 阻塞 I/O 6.2.1. 睡眠的介绍 6.2.2. 简单睡眠 6.2.3. 阻塞和非阻塞操作 6.2.4. 一个阻塞 I/O 的例子 6.2.5. 高级睡眠 6.2.6. 测试 scullpipe 驱动 6.3. poll 和 select 6.3.1. 与 read 和 write 的交互 6.3.2. 底层的数据结构 6.4. 异步通知 6.4.1. 驱动的观点 6.5. 移位一个设备 6.5.1. llseek 实现 6.6. 在一个设备文件上的存取控制 6.6.1. 单 open 设备 6.6.2. 一次对一个用户限制存取 6.6.3. 阻塞 open 作为对 EBUSY 的替代 6.6.4. 在 open 时复制设备 6.7. 快速参考 7. 时间, 延时, 和延后工作 7.1. 测量时间流失 7.1.1. 使用 jiffies 计数器 7.1.2. 处理器特定的寄存器 7.2. 获知当前时间 7.3. 延后执行 7.3.1. 长延时 7.3.2. 短延时 7.4. 内核定时器 7.4.1. 定时器 API 7.4.2. 内核定时器的实现 7.5. Tasklets 机制 7.6. 工作队列 7.6.1. 共享队列 7.7. 快速参考 7.7.1. 时间管理 7.7.2. 延迟 7.7.3. 内核定时器 7.7.4. Tasklets 机制 7.7.5. 工作队列 8. 分配内存 8.1. kmalloc 的真实故事 8.1.1. flags 参数 8.1.2. size 参数 8.2. 后备缓存 8.2.1. 一个基于 Slab 缓存的 scull: scullc 8.2.2. 内存池 8.3. get_free_page 和其友 8.3.1. 一个使用整页的 scull: scullp 8.3.2. alloc_pages 接口 8.3.3. vmalloc 和 其友 8.3.4. 一个使用虚拟地址的 scull : scullv 8.4. 每-CPU 的变量 8.5. 获得大量缓冲 8.5.1. 在启动时获得专用的缓冲 8.6. 快速参考 9. 与硬件通讯 9.1. I/O 端口和 I/O 内存 9.1.1. I/O 寄存器和常规内存 9.2. 使用 I/O 端口 9.2.1. I/O 端口分配 9.2.2. 操作 I/O 端口 9.2.3. 从用户空间的 I/O 存取 9.2.4. 字串操作 9.2.5. 暂停 I/O 9.2.6. 平台依赖性 9.3. 一个 I/O 端口例子 9.3.1. 并口纵览 9.3.2. 一个例子驱动 9.4. 使用 I/O 内存 9.4.1. I/O 内存分配和映射 9.4.2. 存取 I/O 内存 9.4.3. 作为 I/O 内存的端口 9.4.4. 重用 short 为 I/O 内存 9.4.5. 在 1 MB 之下的 ISA 内存 9.4.6. isa_readb 和其友 9.5. 快速参考 10. 中断处理 10.1. 准备并口 10.2. 安装一个中断处理 10.2.1. /proc 接口 10.2.2. 自动检测 IRQ 号 10.2.3. 快速和慢速处理 10.2.4. 实现一个处理 10.2.5. 处理者的参数和返回值 10.2.6. 使能和禁止中断 10.3. 前和后半部 10.3.1. Tasklet 实现 10.3.2. 工作队列 10.4. 中断共享 10.4.1. 安装一个共享的处理者 10.4.2. 运行处理者 10.4.3. /proc 接口和共享中断 10.5. 中断驱动 I/O 10.5.1. 一个写缓存例子 10.6. 快速参考 11. 内核中的数据类型 11.1. 标准 C 类型的使用 11.2. 安排一个明确大小给数据项 11.3. 接口特定的类型 11.4. 其他移植性问题 11.4.1. 时间间隔 11.4.2. 页大小 11.4.3. 字节序 11.4.4. 数据对齐 11.4.5. 指针和错误值 11.5. 链表 11.6. 快速参考 12. PCI 驱动 12.1. PCI 接口 12.1.1. PCI 寻址 12.1.2. 启动时间 12.1.3. 配置寄存器和初始化 12.1.4. MODULEDEVICETABLE 宏 12.1.5. 注册一个 PCI 驱动 12.1.6. 老式 PCI 探测 12.1.7. 使能 PCI 设备 12.1.8. 存取配置空间 12.1.9. 存取 I/O 和内存空间 12.1.10. PCI 中断 12.1.11. 硬件抽象 12.2. 回顾: ISA 12.2.1. 硬件资源 12.2.2. ISA 编程 12.2.3. 即插即用规范 12.3. PC/104 和 PC/104+ 12.4. 其他的 PC 总线 12.4.1. MCA 总线 12.4.2. EISA 总线 12.4.3. VLB 总线 12.5. SBus 12.6. NuBus 总线 12.7. 外部总线 12.8. 快速参考 13. USB 驱动 13.1. USB 设备基础知识 13.1.1. 端点 13.1.2. 接口 13.1.3. 配置 13.2. USB 和 sysfs 13.3. USB 的 Urbs 13.3.1. 结构 struct urb 13.3.2. 创建和销毁 urb 13.3.3. 提交 urb 13.3.4. 完成 urb: 完成回调处理者 13.3.5. 取消 urb 13.4. 编写一个 USB 驱动 13.4.1. 驱动支持什么设备 13.4.2. 注册一个 USB 驱动 13.4.3. 提交和控制一个 urb 13.5. 无 urb 的 USB 传送 13.5.1. usb_bulk_msg 接口 13.5.2. usb_control_msg 接口 13.5.3. 使用 USB 数据函数 13.6. 快速参考 14. Linux 设备模型 14.1. Kobjects, Ksets 和 Subsystems 14.1.1. Kobject 基础 14.1.2. kobject 层次, kset, 和子系统 14.2. 低级 sysfs 操作 14.2.1. 缺省属性 14.2.2. 非缺省属性 14.2.3. 二进制属性 14.2.4. 符号连接 14.3. 热插拔事件产生 14.3.1. 热插拔操作 14.4. 总线, 设备, 和驱动 14.4.1. 总线 14.4.2. 设备 14.4.3. 设备驱动 14.5. 类 14.5.1. class_simple 接口 14.5.2. 完整的类接口 14.6. 集成起来 14.6.1. 添加一个设备 14.6.2. 去除一个设备 14.6.3. 添加一个驱动 14.6.4. 去除一个驱动 14.7. 热插拔 14.7.1. 动态设备 14.7.2. /sbin/hotplug 工具 14.7.3. 使用 /sbin/hotplug 14.8. 处理固件 14.8.1. 内核固件接口 14.8.2. 它如何工作 14.9. 快速参考 14.9.1. Kobjects结构 14.9.2. sysfs 操作 14.9.3. 总线, 设备, 和驱动 14.9.4. 类 14.9.5. 固件 15. 内存映射和 DMA 15.1. Linux 中的内存管理 15.1.1. 地址类型 15.1.2. 物理地址和页 15.1.3. 高和低内存 15.1.4. 内存映射和 struct page 15.1.5. 页表 15.1.6. 虚拟内存区 15.1.7. 进程内存映射 15.2. mmap 设备操作 15.2.1. 使用 remap_pfn_range 15.2.2. 一个简单的实现 15.2.3. 添加 VMA 的操作 15.2.4. 使用 nopage 映射内存 15.2.5. 重新映射特定 I/O 区 15.2.6. 重新映射 RAM 15.2.7. 重映射内核虚拟地址 15.3. 进行直接 I/O 15.3.1. 异步 I/O 15.4. 直接内存存取 15.4.1. 一个 DMA 数据传输的概况 15.4.2. 分配 DMA 缓冲 15.4.3. 总线地址 15.4.4. 通用 DMA 层 15.4.5. ISA 设备的 DMA 15.5. 快速参考 15.5.1. 介绍性材料 15.5.2. 实现 mmap 15.5.3. 实现直接 I/O 15.5.4. 直接内存存取 16. 块驱动 16.1. 注册 16.1.1. 块驱动注册 16.1.2. 磁盘注册 16.1.3. 在 sbull 中的初始化 16.1.4. 注意扇区大小 16.2. 块设备操作 16.2.1. open 和 release 方法 16.2.2. 支持可移出的介质 16.2.3. ioctl 方法 16.3. 请求处理 16.3.1. 对请求方法的介绍 16.3.2. 一个简单的请求方法 16.3.3. 请求队列 16.3.4. 请求的分析 16.3.5. 请求完成函数 16.4. 一些其他的细节 16.4.1. 命令预准备 16.4.2. 被标识的命令排队 16.5. 快速参考 17. 网络驱动 17.1. snull 是如何设计的 17.1.1. 分配 IP 号 17.1.2. 报文的物理传送 17.2. 连接到内核 17.2.1. 设备注册 17.2.2. 初始化每一个设备 17.2.3. 模块卸载 17.3. net_device 结构的详情 17.3.1. 全局信息 17.3.2. 硬件信息 17.3.3. 接口信息 17.3.4. 设备方法 17.3.5. 公用成员 17.4. 打开与关闭 17.5. 报文传送 17.5.1. 控制发送并发 17.5.2. 传送超时 17.5.3. 发散/汇聚 I/O 17.6. 报文接收 17.7. 中断处理 17.8. 接收中断缓解 17.9. 连接状态的改变 17.10. Socket 缓存 17.10.1. 重要成员变量 17.10.2. 作用于 socket 缓存的函数 17.11. MAC 地址解析 17.11.1. 以太网使用 ARP 17.11.2. 不考虑 ARP 17.11.3. 非以太网头部 17.12. 定制 ioctl 命令 17.13. 统计信息 17.14. 多播 17.14.1. 多播的内核支持 17.14.2. 典型实现 17.15. 几个其他细节 17.15.1. 独立于媒介的接口支持 17.15.2. ethtool 支持 17.15.3. netpoll 17.16. 快速参考 18. TTY 驱动 18.1. 一个小 TTY 驱动 18.1.1. 结构 struct termios 18.2. tty_driver 函数指针 18.2.1. open 和 close 18.2.2. 数据流 18.2.3. 其他缓冲函数 18.2.4. 无 read 函数? 18.3. TTY 线路设置 18.3.1. set_termios 函数 18.3.2. tiocmget 和 tiocmset 18.4. ioctls 函数 18.5. TTY 设备的 proc 和 sysfs 处理 18.6. tty_driver 结构的细节 18.7. tty_operaions 结构的细节 18.8. tty_struct 结构的细节 18.9. 快速参考
上传时间:2010-12 大小:929KB
- 6.32MB
Linux Device Drivers / Linux 设备驱动程序(第三版)
2019-03-10Linux驱动基础知识,强烈推荐阅读Linux Device Driver / Linux 设备驱动程序(第三版),附件含中英文版本。
- 2.53MB
Linux设备驱动(LDD) 中文第三版.pdf
2013-03-15Linux内核设备驱动工程师的圣经-《 Linux设备驱动(LDD) 中文第三版.pdf 》,该书系统地讲解内核设备驱动框架及Linux设备驱动的分类及开发Linux设备驱动程序的内功心法,是Linux内核设备驱动开发工程师的葵花宝典!...
- 6.68MB
Linux device driver 3rd
2012-08-09Linux设备驱动第三版
- 11.44MB
linux device driver 3th edition
2008-09-30linux设备驱动程序开发第三版,全面介绍linux环境下各种驱动程序的开发,是最新版。
- 2.64MB
Linux设备驱动程序(第三版)(中英文+所有例子源代码
2012-04-08linux驱动开发的经典指南。每个驱动开必人员必备的开发书籍,中英版都有,还带有所有例子源码
- 9.55MB
Linux+Device+Driver+3rd+Edition
2012-07-03中文译为,Linux 设备驱动第三版 是Linux驱动相关资料中的经典之一。 This is the web site for the Third Edition of Linux Device Drivers, by Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman. For ...
- 11.22MB
Linux Device Driver Third Edtion(Linux设备驱动).tar
2018-06-02本书为linux设备驱动程序开发第三版,可供linux驱动工程师参考与指导
- 5.11MB
Linux DeviceDrivers 3rd Edition
2010-07-23(英文版 第三版 中文书签我自己做的 大家要是不喜欢就用福听PDF删除掉我加上去的东西 我还有很多好资源 大家都去逛逛 还有这个是单本的 网上还有个分很多章的) 前言 1 第一章 设备驱动程序简介 9 设备驱动程序...
- 202.57MB
linux aarch64架构libreoffice安装包
2023-03-20linux aarch64架构libreoffice安装包
- 34KB
(牛客网C++课程)Linux 高并发Web服务器项目实战(带定时检测代码)
2023-02-24(牛客网C++课程)Linux 高并发Web服务器项目实战(带定时检测代码) 技术框架: 1. 线程池 + 非阻塞 socket + epoll + 事件处理的并发模型 2. 状态机解析HTTP请求 3. 心跳机制 4. 简易日志系统 主要内容: 1. 使用 socket 实现服务器和浏览器客户端的通信; 2. 用 epoll 事件检测技术实现 IO 多路复用,提高运行效率; 3. 采用模拟 Proacto r的事件处理模式,利用线程池实现多线程机制,实现高并发通信,减少频繁创建和销毁线程带来的开销;(信号和互斥锁) 4. 主进程负责事件的读写,子线程负责业务逻辑——用有限状态机解析HTTP(GET)请求报文;生成相应的响应报文。 5. 利用链表数据结构实现心跳机制(超时检测处理)。
- 96.79MB
Linux项目设计_媒体播放器(6818).rar
2021-04-14主页有教程与视频 //Linux媒体播放器 //作者:化作尘 //时间:2020年8月8日15:52:45 //qq邮箱:2809786963@qq.com //csdn链接:https://blog.csdn.net/mbs520/article/details/107880118 //哔哩哔哩项目视频:(可点击主页查看)https://b23.tv/bxfxvd 项目功能展示: 一、开机显示登入界面,可密码管理员登入,也可以免密码普通用户登入 二、登入后显示桌面,显示5个应用 ,分别是图片、视频、音乐、设置、文件管理 三、音乐相册功能,播放图片同时播放背景音乐,可以左右滑动切换图片等操作 四、视频播放功能,可以播放avi,mp4等格式视频 五、音乐播放器,可以播放mp3格式的音频 六、设置壁纸,可以根据喜好设置自己喜欢的壁纸 七、文件管理,可以对文件进行预览和删除 一、项目课题: 基于ARM平台的广告机系统设计 (最好可以自己取
- 0B
openssh-server离线安装包
2022-11-04openssh-server离线安装包 三个.deb文件
- 52.9MB
VisualGDB 5.6 R9//支持VS2008-VS2022
2023-05-04VisualGDB 是 Visual Studio 的一个非常强大的扩展,它允许您调试或调试嵌入式系统。这个程序有一个非常有吸引力的用户界面,它具有许多用于调试或调试代码的功能。VisualGDB 还有一个向导,可以帮助您调试程序并为您提供强大的指南。此外,该程序还有许多其他功能,分为常见功能、高级功能、可用性功能、Linux 功能、Android 功能等类别,每个功能都已在“功能和功能”部分为您列出。 畅享版
- 46.83MB
linux下nginx离线安装包及相关依赖包(附教程)
2022-06-151)资源:linux下nginx离线安装包及相关依赖包; 2)教程:https://blog.csdn.net/hualinger/article/details/125298009?spm=1001.2014.3001.5502
- 190B
centos 7.6版本 ISO镜像下载
2020-12-03关于centos7.6版本的镜像文件,适用于练习docker、k8s等容器技术。 亲和性较好,本资源是网盘下载,非网盘会员慎点。
- 617.59MB
tongweb7.0,windows和linux安装包
2023-04-27下载安装部署tongweb
- 1.34MB
rufus-4.1.exe 版本 4.1 (2023.05.31)
2023-06-05Rufus 是一款格式化和创建 USB 启动盘的辅助工具。 本软件适用于以下场景: 需要将可引导 ISO (Windows、Linux、UEFI 等) 刻录到 USB 安装媒介的情况 需要处理未安装操作系统的设备的情况 需要在 DOS 环境下刷写 BIOS 或其他固件的情况 需要运行低级工具的情况 Rufus 麻雀虽小,但五脏俱全!
- 110KB
银河麒麟系统硬盘分区挂载
2023-02-11麒麟系统挂载硬盘方法及分区方法
- 51.93MB
docker-compose-linux-x86-64
2023-04-19docker-compose v2.17.2
- 12.58MB
Linux Centos7 升级最新版OpenSSH-9.6p1 有脚本(支持离线)
2024-01-03包含升级的rpm文件 openssh-9.6p1.tar.gz openssl-1.1.1q.tar.gz zlib-1.3.tar.gz 以及升级脚本 sshupdate2.sh
- 207.28MB
GitKrakenSetup-6.5.1 版本,包括win和linux
2023-04-20GitKrakenSetup-6.5.1 gitkraken-amd64
- 509.59MB
RK3588开发资料(文档),509MB
2022-08-24RK3588开发资料(pdf文档),509MB,Rockchip Linux 开发指南
- 1013KB
Stable Diffusion WebUI linux部署问题
2023-10-15https://huggingface.co/openai/clip-vit-large-patch14/tree/main 资源文件
- 52.85MB
nginx依赖的环境安装包
2023-08-29Linux系统下安装配置 Nginx 超详细图文教程nginx依赖的环境安装包
- 297.87MB
银河麒麟V10_ARM版Qt5.12.8离线安装包(飞腾处理器)
2022-01-211.银河麒麟V10 2.飞腾处理器 3.ARM版本
- 6.3MB
Linux常用命令和基础命令和教程,好用,非常推荐
2024-03-24Linux常用命令和基础命令和教程,好用,非常推荐。
- 69.25MB
FinalShell安装包,让用户通过SSH、Telnet或者RDP等协议连接到远程服务器或设备,实现远程控制和管理
2023-08-28FinalShell是一款功能强大的远程终端软件,它可以让用户通过SSH、Telnet或者RDP等协议连接到远程服务器或设备,实现远程控制和管理。FinalShell支持多标签页、会话管理、命令自动补全、命令批量执行等功能,用户可以方便地在多个终端之间切换,同时也可以对会话进行分组管理。此外,FinalShell还提供了强大的文件传输功能,用户可以直接在本地和远程设备之间进行文件的上传和下载。FinalShell还支持脚本录制和回放,方便用户自动化执行一系列命令。总之,FinalShell是一款易用、功能丰富的远程终端软件,适用于系统管理员、开发人员和网络工程师等多种角色。
- 15.4MB
用于升级CentOS7系统openssh-9.7p1的rpm包
2024-03-18CentOS7离线升级openssh-9.7p1 将openssh-9.7p1的rpm包上传到本地服务器 进入openssh9.7p1文件夹,里面包含openssh-9.7p1升级的rpm包 查看当前openssh的版本 使用yum localinstall openssh-*.rpm 进行更新 授权,重启服务,设置开机自启 查看openssh状态 查看openssh版本
- 1.94MB
apt-get 安装资源包,包括ubuntu-keyring, libapt-pkg, apt
2022-04-21apt-get 安装资源包,包括 ubuntu-keyring_2018.02.28_all.deb libapt-pkg5.0_1.6.14_amd64.deb apt_1.6.14_amd64.deb
- 567.65MB
VMware Workstation 16虚拟机安装包
2022-01-14VMware Workstation 16虚拟机安装包