本书对Linux操作系统及其编程作了整体的介绍,以支持用于开发软件的公开源码模型。对内存管理、进程及其通信机制、PCI、内核模块编程及内核系统结构作了详细的解释,且附有很多程序代码实例。对深入研究Linux下的编程有很大的帮助。
雷蒙序\r\n简介\r\nLinux又档工程小组“公告”\r\n译者序\r\n\r\n第一部分 Linux内核\r\n前言\r\n\r\n第1章 硬件基础与软件基础\r\n\r\n1.1 硬件基础\r\n1.1.1 CPU\r\n1.1.2 存储器\r\n1.1.3 总线\r\n1.1.4 控制器和外设\r\n1.1.5 地址空间\r\n1.1.6 时钟\r\n1.2 软件基础\r\n1.2.1 计算机语言\r\n1.2.2 什么是操作系统\r\n1.2.3 内核数据结构\r\n\r\n第2章 内存管理\r\n\r\n2.1 虚拟内存抽象模型\r\n2.1.1 请求调页\r\n2.1.2 交换\r\n2.1.3 共享虚拟内存\r\n2.1.4 物理寻址模式和虚拟寻址模式\r\n2.1.5 访问控制\r\n2.2 高速级存\r\n2.3 Linux页表\r\n2.4 页分配和回收\r\n2.4.1 页分配\r\n2.4.2 页回收\r\n2.5 内存映射\r\n2.6 请求调页\r\n2.7 Linux页缓存\r\n2.8 页换出和淘汰\r\n2.8.1 减少缓冲区和页级存大小\r\n2.8.2 换出System V共享内存页\r\n2.8.3 换出和淘汰页\r\n2.9 交换级存\r\n2.10 页换入\r\n\r\n第3章 进程\r\n\r\n3.1 Linux进程\r\n3.2 标识符\r\n3.3 调度\r\n3.4 文件\r\n3.5 虚拟内存\r\n3.6 创建进程\r\n3.7 时间和定时器\r\n3.8 执行程序\r\n3.8.1 ELF\r\n3.8.2 脚本文件\r\n\r\n第4章 进程间通信机制\r\n\r\n4.1 信号机制\r\n4.2 管道\r\n4.3 套接字\r\n4.3.1 System V的进程间通信机制\r\n4.3.2 消息队列\r\n4.3.3 信号量\r\n4.3.4 共享存储区\r\n\r\n第5章 PCI\r\n\r\n5.1 PCI的地址空间\r\n5.2 PCI配置头\r\n5.3 PCI的I/O和存储地址空间\r\n5.4 PCI-ISA桥\r\n5.5 PCI-PCI桥\r\n5.5.1 PCI-PCI桥:PCI I/O和存储地址空间的窗口\r\n5.5.2 PCI-PCI桥:PCI配置周期和PCI总线编号\r\n5.6 Linux PCI初始化\r\n5.6.1 Linux内核PCI数据结构\r\n5.6.2 PCI设备驱动程序\r\n5.6.3 PCI的BIOS函数\r\n5.6.4 PCI修正过程\r\n\r\n第6章 中断处理与设备驱动程序\r\n\r\n6.1 中断与中断处理\r\n6.1.1 可编程中断控制器\r\n6.1.2 初始化中断处理数据结构\r\n6.1.3 中断处理\r\n6.2 设备驱动程序\r\n6.2.1 测试与中断\r\n6.2.2 直接存储器访问(DMA)\r\n6.2.3 存储器\r\n6.2.4 设备驱动程序与内核的接口\r\n6.2.5 硬盘\r\n6.2.6 网络设备\r\n\r\n第7章 文件系统\r\n\r\n7.1 第二个扩展文件系统EXT2\r\n7.1.1 EXT2系统的mode节点\r\n7.1.2 EXT2系统的超级块\r\n7.1.3 EXT2系统的组描述符\r\n7.1.4 EXT2系统的目录\r\n7.1.5 在EXT2文件系统中查找文件\r\n7.1.6 在EXT2文件系统中改变文件的大小\r\n7.2 虚拟文件系统\r\n7.2.1 VFS文件系统的超级块\r\n7.2.2 VFS文件系统的mode节点\r\n7.2.3 注册文件系统\r\n7.2.4 装配文件系统\r\n7.2.5 在虚拟文件系统中查找文件\r\n7.2.6 卸载文件系统\r\n7.2.7 VFS文件系统的mode缓存\r\n7.2.8 目录缓存\r\n7.3 缓冲区级存\r\n7.3.1 bdflush内核守护进程\r\n7.3.2 update进程\r\n7.4 /proc文件系统\r\n7.5 特殊设备文件\r\n\r\n第8章 网络\r\n\r\n8.1 TCP/IP网络概述\r\n8.2 Linux中的TCP/IP网络层次结构\r\n8.3 BSD套接率接口\r\n8.4 INET的套接字居\r\n8.4.1 创建BSD套接字\r\n8.4.2 为INET BSD Socket绑定地址\r\n8.4.3 建大INET BSD Socket连接\r\n8.4.4 INET BSD SOCket侦听\r\n8.4.5 接受连接请求\r\n8.5 IP层\r\n8.5.1 套接字缓冲区\r\n8.5.2 接收IP报文\r\n8.5.3 发送IP报文\r\n8.5.4 数据分片\r\n8.6 地址解析协议\r\n8.7 IP路由\r\n\r\n第9章 内核机制与模块\r\n\r\n9.1 内核机制\r\n9.1.1 Bottom Half控制\r\n9.1.2 任务队列\r\n9.1.3 定时器\r\n9.1.4 等待队列\r\n9.1.5 自旋锁\r\n9.1.6 信号量\r\n9.2 模块\r\n9.2.1 模块载入\r\n9.2.2 模块卸载\r\n\r\n第10章 处理器\r\n\r\n10.1 X86\r\n10.2 ARM\r\n10.3 Alpha AXP处理器\r\n\r\n第11章 Linux内核源代码\r\n\r\n11.1 怎样得到Linux内核源码\r\n11.2 内核源码的编排\r\n11.3 从何处看起\r\n\r\n第12章 Linux数据结构\r\n\r\n附录A 有用的Web和FTP站点\r\n附录B 词汇表\r\n\r\n第二部分 Linux内核模块编程指南\r\n致谢\r\n前言\r\n\r\n第1章 Hello,World\r\n1.1 内核模块的Makefiles文件\r\n1.2 多重文件内核模块\r\n第2章 字符设备文件\r\n第3章 /Proc文件系统\r\n第4章 把/proc用于输入\r\n第5章 把设备文件用于输入\r\n第6章 启动参数\r\n第7章 系统调用\r\n第8章 阻塞处理\r\n第9章 替换printk\r\n第10章 任务调度\r\n第11章 中断处理程序\r\n第12章 对称多处理\r\n第13章 常见错误\r\n附录A 2.0和2.2之间的差异\r\n附录B 其他资源\r\n附录C 给出你的评价\r\n\r\n第三部分 Linux程序员指南\r\n\r\n第1章 Linux操作系统\r\n第2章 Linux内核\r\n第3章 Linux libc包\r\n第4章 系统调用\r\n第5章 “瑞士军刀”:ioctl\r\n第6章 Linux进程间通信\r\n6.1 介绍\r\n6.2 半双工Unix管道\r\n6.2.1 基本概念\r\n6.2.2 用C语言创建管道\r\n6.2.3 简便方法\r\n6.2.4 管道的原子操作\r\n6.2.5 关于半双工管道需要注意的几个问题\r\n6.3 命名管道\r\n6.3.1 基本概念\r\n6.3.2 创建FIFO\r\n6.3.3 FIFO操作\r\n6.3.4 FIFO上的阻塞动作\r\n6.3.5 SIGPIPE信号\r\n6.4 系统V IPC\r\n6.4.1 基本概念\r\n6.4.2 消息队列\r\n6.4.3 信号量\r\n6.4.4 semtool:交工大信号量操作程序\r\n6.4.5 共享内存\r\n\r\n第7章 声音编程\r\n\r\n7.1 内部扬声器编程\r\n7.2 声卡编程\r\n\r\n第8章 字符单元图形\r\n\r\n8.1 libC中的I/O函数\r\n8.1.1 格式化输出\r\n8.1.2 格式化输入\r\n8.2 termcap库\r\n8.2.1 前言\r\n8.2.2 获得终端描述\r\n8.2.3 查看终端描述\r\n8.2.4 termcap权能\r\n8.3 Ncurses简介\r\n8.4 初始化\r\n8.5 窗口\r\n8.6 输出\r\n8.6.1 格式化输出\r\n8.6.2 插入字符/行\r\n8.6.3 删除字符/行\r\n8.6.4 方框和直线\r\n8.6.5 背景字符\r\n8.7 输入\r\n8.8 选项\r\n8.8.1 输出选项\r\n8.8.2 输入选项\r\n8.8.3 终端属性\r\n8.8.4 使用选项\r\n8.9 更新终端\r\n8.10 视频属性与颜色\r\n8.11 光标和屏幕坐标\r\n8.12 滚动\r\n8.13 小键盘\r\n8.14 软标签\r\n8.15 杂项\r\n8.16 低级访问\r\n8.17 屏幕转储\r\n8.18 Termcap模拟\r\n8.19 Terminfo函数\r\n8.20 调试图数\r\n8.21 Terminfo仅能\r\n8.21.1 布尔弄权能\r\n8.21.2 数值型权能\r\n8.21.3 字符率到机能\r\n8.22 [N]Curses函数低速\r\n\r\n第9章 I/O端口编程\r\n\r\n9.1 鼠标编程\r\n9.2 调制解调器编程\r\n9.3 打印机编程\r\n9.4 游戏杆编程\r\n\r\n第10章 把应用程序移植到 Linux上\r\n\r\n10.1 介绍\r\n10.2信号处理\r\n10.2.1 SVR4、BSD和POSIX.1下的信号\r\n10.2.2 Linux信号这项\r\n10.2.3 Linux下的信号\r\n10.2.4 Linux支持的信号\r\n10.3 终端I/O\r\n10.4 进程信息和控制\r\n10.4.1 kvm过程\r\n10.4.2 Ptrace和/Proc文件系统\r\n10.4.3 Linux下的进程控制\r\n10.5 可移植条件编译\r\n10.6 补充说明\r\n附录 以字母顺序排列的系统调用\r\n\r\n第四部分 Linux内核概念系统结构\r\n\r\n摘要\r\n前言\r\n\r\n第1章 系统结构\r\n\r\n1.1 系统概述\r\n1.2 内核的目标\r\n1.3 内核结构的概述\r\n1.4 支持多个开发人员\r\n1.5 系统数据结构\r\n1.5.1 任务列表\r\n1.5.2 内存映射\r\n1.5.3 索引节点\r\n1.5.4 数据连接\r\n\r\n第2章 子系统的系统结构\r\n\r\n2.1 进程调度程序系统结构\r\n2.1.1 目标\r\n2.1.2 模块\r\n2.1.3 数据表达\r\n2.1.4 依赖性、数据流和控制流\r\n2.2 内存管理程序系统结构\r\n2.2.1 目标\r\n2.2.2 模块\r\n2.2.3 数据表示\r\n2.2.4 数据沈、控制流和依赖性\r\n2.3 虚拟文件系统系统结构\r\n2.3.1 目标\r\n2.3.2 模块\r\n2.3.3 数据表示\r\n2.3.4 数据流、控制流和依赖性\r\n2.4 网络接口系统结构\r\n2.4.1 目标\r\n2.4.2 模块\r\n2.4.3 数据表示\r\n2.4.4 数据流、控制流和依赖性\r\n2.5 进程间通信系统结构\r\n\r\n第3章 结论\r\n\r\n附录A 术语定义\r\n附录B 参考文献\r\n\r\n第五部分 Linux内核具体系统结构\r\n摘要\r\n\r\n第1章 前言\r\n\r\n1.1 目标\r\n1.2 Linux介绍\r\n1.3 软件系统结构的背景知识\r\n1.4 方法与途径\r\n1.5 适用本书的读者\r\n1.6 本部分的章节安排\r\n\r\n第2章 系统结构\r\n第3章 子系统结构\r\n\r\n3.1进程调度程序\r\n3.1.1 目标\r\n3.1.2 外部接口\r\n3.1.3 子系统描述\r\n3.1.4 数据结构\r\n3.1.5 子系统结构\r\n3.1.6 子系统依赖性\r\n3.2 内存管理程序\r\n3.2.1 目标\r\n3.2.2 外部接口\r\n3.2.3 子系统描述\r\n3.2.4 数据结构\r\n3.2.5 子系统结构\r\n3.2.6 子系统依赖性\r\n3.3 虚拟文件系统\r\n3.3.1 目标\r\n3.3.2 外部接口\r\n3.3.3 子系统描述\r\n3.3.4 设备驱动程序\r\n3.3.5 逻辑文件系统\r\n3.3.6 模块\r\n3.3.7 数据结构\r\n3.3.8 子系统结构\r\n3.3.9 子系统依赖性\r\n3.4 进程间通信\r\n3.4.1 目标\r\n3.4.2 外部接口\r\n3.4.3 子系统描述\r\n3.4.4 数据结构\r\n3.4.5 子系统结构\r\n3.4.6 子系统依赖性\r\n3.5 网络接口\r\n3.5.1 目标\r\n3.5.2 外部接口\r\n3.5.3 子系统描述\r\n3.5.4 数据结构\r\n3.5.5 子系统结构\r\n3.5.6 子系统依赖性\r\n\r\n第4章 结论\r\n\r\n附录A 术语定义\r\n附录B 参考文献\r\n\r\n第六部分 附录\r\n\r\n附录A Linux文档工程拷贝许可证\r\n附录B GNU通用公共许可证