内容简介
第1章 linux概述
1.1 linux的发展
1.1.1 linux概念
1.1.2 linux和unix的渊源
1.1.3 与linux相关的协议和标准
1.2 linux的内核架构
1.2.1 linux操作系统结构
1.2.2 linux内核体系结构
1.2.3 内核版本和获取
1.2.4 内核源代码目录结构
1.3 linux的主要版本
1.3.1 linux版本介绍
1.3.2 ubuntu的首次使用
1.4 本章小结
习题
第2章 linux基本命令与应用
2.1 认识命令行
2.1.1 terminal
2.1.2 命令用法初体验
2.1.3 其他虚拟终端
2.1.4 相关概念
2.2 使用文本文件
2.2.1 创建文本文件
2.2.2 查看文本文件内容
2.2.3 查找及统计
2.3 目录和文件
2.3.1 目录及文件的基本操作
2.3.2 文件权限
2.4 管理用户和用户组
2.4.1 相关配置文件
2.4.2 相关操作
2.5 其他常见命令
2.5.1 挂载和卸载设备
2.5.2 安装和卸载软件
2.6 本章小结
习题
练习
第3章 从hello linux程序开始
3.1 hello linux
3.1.1 hello_linux的诞生
3.1.2 linux平台c语言编码风格
3.1.3 开发工具
3.2 gcc编译
3.2.1 单文件的编译
3.2.2 多个源文件的编译
3.2.3 其他介绍
3.3 gdb调试
3.3.1 gdb介绍
3.3.2 使用gdb调试c语言文件
3.4 本章小结
习题
练习
第4章 利用makefile管理一个工程
4.1 第一个makefile
4.1.1 利用make编译一个程序文件
4.1.2 利用make编译多个程序文件
4.2 makefile的基本概念与规则
4.2.1 makefile的基本概念
4.2.2 规则
4.3 本章小结
习题
练习
第5章 linux系统中的时间
5.1 时间表示
5.1.1 linux系统时间
5.1.2 linux应用程序时间函数
5.2 利用程序显示系统时间
5.2.1 常用时间函数
5.2.2 高级时间函数
5.3 时间的测量与计时
5.3.1 时间测量
5.3.2 计时器
5.4 本章小结
习题
练习
第6章 多进程程序开发
6.1 进程概念
6.2 进程的创建
6.3 连续调用多次fork函数
6.4 启动外部程序
6.5 本章小结
习题
练习
第7章 进程间通信
7.1 概述
7.2 管道通信
7.2.1 管道概述
7.2.2 无名管道
7.2.3 命名管道
7.3 套接字通信
7.3.1 用文件套接字实现本地进程通信
7.3.2 用网络套接字实现网络进程通信
7.4 本章小结
习题
练习
第8章 利用qt开发gui应用程序
8.1 qt及qt creator
8.1.1 qt简介
8.1.2 qt creator
8.1.3 qt的安装和启动
8.1.4 qt creator的界面组成
8.2 用qt creator完成一个gui项目
8.2.1 创建qt gui项目
8.2.2 程序的运行
8.3 信号和槽
8.3.1 信号和槽的概念
8.3.2 用信号-槽机制响应gui事件
8.3.3 关于信号-槽的进一步说明
8.4 qt设计师
8.4.1 简介
8.4.2 qt设计师的功能
8.5 本章小结
习题
练习
第9章 mysql数据库
9.1 安装mysql
9.2 mysql的基本用法
9.2.1 mysql管理
9.2.2 数据库操作
9.2.3 数据类型
9.2.4 表操作
9.2.5 创建一个数据库
9.3 使用c语言访问mysql数据库
9.3.1 连接数据库
9.3.2 执行sql语句
9.3.3 处理数据
9.4 本章小结
习题
练习
第10章 linux综合应用
10.1 概述
10.1.1 系统需求
10.1.2 本章内容结构
10.2 原型设计
10.2.1 添加资源文件
10.2.2 界面设计
10.2.3 界面布局
10.2.4 添加动作
10.3 系统设计
10.3.1 系统架构
10.3.2 客户端功能设计
10.3.3 服务器功能设计
10.4 系统实现
10.4.1 数据结构(通信协议)
10.4.2 客户端实现
10.4.3 服务器端实现
10.4.4 几点说明
10.5 linux应用综合实训
10.6 本章小结
第11章 构建linux内核系统
11.1 概述
11.2 内核初始化
11.3 内核配置
11.4 内核构建
11.5 本章小结
练习
第12章 添加最简单的linux内核模块
12.1 用户态与内核态
12.1.1 c/c++应用程序的运行机制
12.1.2 linux内核模块
12.2 添加最简单的linux内核模块
12.2.1 lkm代码框架
12.2.2 lkm编译
12.2.3 kello.c的编译、添加和删除
12.2.4 lkm与c应用程序的差异
12.3 printk和某些常见宏
12.3.1 实时显示内核模块运行信息
12.3.2 显示位置信息
12.4 本章小结
练习
第13章 基于proc的linux进程控制块信息读取
13.1 proc伪文件系统
13.1.1 proc中的文件
13.1.2 proc中文件的内容
13.1.3 proc伪文件系统介绍
13.2 linux中的进程控制块
13.2.1 linux进程控制块task_struct
13.2.2 进程重要信息解读
13.3 通过proc读取linux进程信息
13.3.1 创建proc文件
13.3.2 基于seq_file机制的proc文件操作
13.3.3 task_struct信息读取过程
13.3.4 tasklist内核模块编译和添加
13.3.5 tasklist内核模块工作流程
13.4 task_struct重要信息
13.4.1 linux进程调度策略
13.4.2 进程优先级
13.4.3 进程控制块中的其他信息
13.5 向proc文件写入数据
13.5.1 用户空间和内核空间之间传递数据
13.5.2 内核空间内存分配
13.5.3 proc文件的写操作函数
13.6 本章小结
习题
练习
第14章 posix多任务及同步机制
14.1 fork创建进程
14.1.1 fork创建进程的流程
14.1.2 fork/exec创建进程的流程
14.1.3 fork进阶问题
14.2 posix线程机制
14.2.1 posix概述
14.2.2 posix线程创建
14.3 posix多线程及同步机制
14.3.1 多个线程的资源竞争访问
14.3.2 posix同步机制
14.4 条件变量与生产者-消费者问题
14.4.1 同步与互斥
14.4.2 posix条件变量
14.4.3 条件变量在生产者-消费者问题中的应用
14.5 本章小结
习题
练习
第15章 用户态和内核态信号量
15.1 信号量与同步问题
15.1.1 信号量概述
15.1.2 同步问题
15.2 posix信号量
15.2.1 无名信号量
15.2.2 有名信号量
15.2.3 posix信号量用于线程同步问题
15.2.4 posix信号量用于进程间同步
15.2.5 linux中的信号量技术
15.3 内核信号量和内核线程
15.3.1 linux内核信号量
15.3.2 linux内核线程
15.3.3 内核信号量和线程的例子
15.3.4 linux内核同步技术
15.4 本章小结
习题
练习
第16章 基于共享内存的进程间通信
16.1 共享内存
16.2 共享内存映射文件
16.2.1 单个进程的内存映射文件
16.2.2 多个进程间的内存映射文件的同步
16.3 posix共享内存对象
16.4 本章小结
习题
练习
第17章 linux内存管理
17.1 linux物理内存管理机制
17.1.1 内存结点node
17.1.2 内存结点zone
17.1.3 物理页框page
17.2 ia32的寻址机制
17.2.1 ia32的段机制
17.2.2 ia32的页面映射机制
17.2.3 ia32中的控制寄存器以及pae、pse
17.3 ia32结构上的linux地址映射机制
17.3.1 linux中段地址映射机制
17.3.2 ia32 linux段地址映射实验
17.3.3 ia32 linux页地址映射
17.3.4 ia32 linux页地址映射实验
17.4 linux进程地址空间
17.4.1 linux中进程的虚拟地址空间
17.4.2 获取进程虚拟地址空间信息
17.4.3 linux中进程的虚拟存储区域vma
17.4.4 获取进程的虚拟内存区域信息
17.4.5 linux中进程、内存和文件的关系
17.5 本章小结
习题
练习
第18章 linux设备驱动程序
18.1 概述
18.1.1 设备管理基本概念
18.1.2 linux字符设备管理
18.2 字符设备cmos驱动程序
18.2.1 cmos rtc信息
18.2.2 获取cmos rtc信息的驱动程序内核模块
18.2.3 cmos rtc驱动程序内核模块测试
18.3 基于内存映射的杂项设备驱动程序
18.3.1 linux中的杂项设备
18.3.2 设备驱动中的内存映射
18.3.3 基于内存映射的杂项设备驱动程序
18.3.4 测试
18.4 本章小结
习题
练习
第19章 linux虚拟文件系统
19.1 概述
19.1.1 vfs在linux中的作用
19.1.2 vfs支持的文件系统类型
19.1.3 vfs的基本数据结构
19.2 vfs对象的操作
19.2.1 注册文件系统
19.2.2 文件系统装载
19.2.3 与进程相关的文件系统数据结构
19.2.4 从当前进程访问linux内核vfs文件系统
19.3 proc文件系统
19.3.1 主要数据结构
19.3.2 proc文件系统的操作
19.4 本章小结
习题
练习
参考文献