《算法导论》第二版答案
算法经典书籍《算法导论》第二版的全部答案,适合看这本书对习题有疑问的同学。
Autodesk(欧特克)笔试面试资料汇总
AUTODESK的面试题在网上是闹的沸沸扬扬,作为一个名企,这是可以理解的,况且其面试题质量也是不错的。抽一些闲暇时间,把网上传的比较多的70道题简单的解答了一遍,不为别的,只为再熟悉一下在大学学过的一些基础知识。希望对大家有用。
《汇编语言》第二版 王爽 中文高清扫描版115M part6 (因为太大,压缩成了6部分,解压后一个文件)
作者简介 王爽,著名计算机科学教育家,哲学家。1 975年出生于黑龙江省齐齐哈尔市。1 997年毕业于宁夏大学计算机及应用专业。2007年开创了可行性哲学理论体系。自1 999年以来,陆续提出并实践了知识屏蔽、线索化、多元环境等一系列对高等专业人才培养具有重要意义的教学与教育思想。多年以来一直积极致力于推动教育发展的各项事业,同时在高等教育、计算机科学与技术、IT产业等诸多领域都有所成就。
目录第1章 基础知识
1.1 机器语言
1.2 汇编语言的产生
1.3 汇编语言的组成
1.4 存储器
1.5 指令和数据
1.6 存储单元
1.7 CPU对存储器的读写
1.8 地址总线
1.9 数据总线
1.10 控制总线
1.11 内存地址空间(概述)
1.12 主板
1.13 接口卡
1.14 各类存储器芯片
1.15 内存地址空间
第2章 寄存器
2.1 通用寄存器
2.2 字在寄存器中的存储
2.3 几条汇编指令
2.4 物理地址
2.5 16位结构的CPU
2.6 8086cPu给出物理地址的方法
2.7 “段地址xl6+偏移地址=物理地址”的本质含义
2.8 段的概念
2.9 段寄存器
2.10 CS和IP
2.11 修改CS、IP的指令
2.12 代码段
实验1 查看CPU和内存,用机器指令和汇编指令编程
第3章 寄存器(内存访问)
3.1 内存中字的存储
3.2 DS 31:1[address]
3.3 字的传送
3.4 ITIOV、add、sub指令
3.5 数据段
3.6 栈
3.7 CPU提供的栈机制
3.8 栈顶超界的问题
3.9 puSh、pop指令
3.10 栈段
实验2 用机器指令和汇编指令编程
第4章 第一个程序
4.1 一个源程序从写出到执行的过程
4.2 源程序
4.3 编辑源程序
4.4 编译
4.5 连接
4.6 以简化的方式进行编译和连接
4.7 1.exe的执行
4.8 谁将可执行文件中的程序装载进入内存并使它运行?
4.9 程序执行过程的跟踪
实验3 编程、编译、连接、跟踪
第5章 【BX】和loop指令
5.1 【BX】
5.2 Loop指令
5.3 在Debu9中跟踪用loop指令实现酮循环程序
5.4 Debu9和汇编编译器masm对指令的不同处理
5.5 loop和【bx】的联合应用
……
第3章 寄存器(内存访问)
第4章 第一个程序
第5章 [BX]和loop指令
第6章 包含多个段的程序
第7章 更灵活的定位内存地址的方法
第8章 数据处理的两个基本问题
第9章 转移指令的原理
第10章 CALL和RET指令
第11章 标志寄存器
第12章 内中断
第13章 int指令
第14章 端口
第15章 外中断
第16章 直接定址表
第17章 使用BIOS进行键盘输入和磁盘读写
《汇编语言》第二版 王爽 中文高清扫描版115M part5 (因为太大,压缩成了6部分,解压后一个文件)
作者简介 王爽,著名计算机科学教育家,哲学家。1 975年出生于黑龙江省齐齐哈尔市。1 997年毕业于宁夏大学计算机及应用专业。2007年开创了可行性哲学理论体系。自1 999年以来,陆续提出并实践了知识屏蔽、线索化、多元环境等一系列对高等专业人才培养具有重要意义的教学与教育思想。多年以来一直积极致力于推动教育发展的各项事业,同时在高等教育、计算机科学与技术、IT产业等诸多领域都有所成就。
目录第1章 基础知识
1.1 机器语言
1.2 汇编语言的产生
1.3 汇编语言的组成
1.4 存储器
1.5 指令和数据
1.6 存储单元
1.7 CPU对存储器的读写
1.8 地址总线
1.9 数据总线
1.10 控制总线
1.11 内存地址空间(概述)
1.12 主板
1.13 接口卡
1.14 各类存储器芯片
1.15 内存地址空间
第2章 寄存器
2.1 通用寄存器
2.2 字在寄存器中的存储
2.3 几条汇编指令
2.4 物理地址
2.5 16位结构的CPU
2.6 8086cPu给出物理地址的方法
2.7 “段地址xl6+偏移地址=物理地址”的本质含义
2.8 段的概念
2.9 段寄存器
2.10 CS和IP
2.11 修改CS、IP的指令
2.12 代码段
实验1 查看CPU和内存,用机器指令和汇编指令编程
第3章 寄存器(内存访问)
3.1 内存中字的存储
3.2 DS 31:1[address]
3.3 字的传送
3.4 ITIOV、add、sub指令
3.5 数据段
3.6 栈
3.7 CPU提供的栈机制
3.8 栈顶超界的问题
3.9 puSh、pop指令
3.10 栈段
实验2 用机器指令和汇编指令编程
第4章 第一个程序
4.1 一个源程序从写出到执行的过程
4.2 源程序
4.3 编辑源程序
4.4 编译
4.5 连接
4.6 以简化的方式进行编译和连接
4.7 1.exe的执行
4.8 谁将可执行文件中的程序装载进入内存并使它运行?
4.9 程序执行过程的跟踪
实验3 编程、编译、连接、跟踪
第5章 【BX】和loop指令
5.1 【BX】
5.2 Loop指令
5.3 在Debu9中跟踪用loop指令实现酮循环程序
5.4 Debu9和汇编编译器masm对指令的不同处理
5.5 loop和【bx】的联合应用
……
第3章 寄存器(内存访问)
第4章 第一个程序
第5章 [BX]和loop指令
第6章 包含多个段的程序
第7章 更灵活的定位内存地址的方法
第8章 数据处理的两个基本问题
第9章 转移指令的原理
第10章 CALL和RET指令
第11章 标志寄存器
第12章 内中断
第13章 int指令
第14章 端口
第15章 外中断
第16章 直接定址表
第17章 使用BIOS进行键盘输入和磁盘读写
《汇编语言》第二版 王爽 中文高清扫描版115M part4 (因为太大,压缩成了6部分,解压后一个文件)
作者简介 王爽,著名计算机科学教育家,哲学家。1 975年出生于黑龙江省齐齐哈尔市。1 997年毕业于宁夏大学计算机及应用专业。2007年开创了可行性哲学理论体系。自1 999年以来,陆续提出并实践了知识屏蔽、线索化、多元环境等一系列对高等专业人才培养具有重要意义的教学与教育思想。多年以来一直积极致力于推动教育发展的各项事业,同时在高等教育、计算机科学与技术、IT产业等诸多领域都有所成就。
目录第1章 基础知识
1.1 机器语言
1.2 汇编语言的产生
1.3 汇编语言的组成
1.4 存储器
1.5 指令和数据
1.6 存储单元
1.7 CPU对存储器的读写
1.8 地址总线
1.9 数据总线
1.10 控制总线
1.11 内存地址空间(概述)
1.12 主板
1.13 接口卡
1.14 各类存储器芯片
1.15 内存地址空间
第2章 寄存器
2.1 通用寄存器
2.2 字在寄存器中的存储
2.3 几条汇编指令
2.4 物理地址
2.5 16位结构的CPU
2.6 8086cPu给出物理地址的方法
2.7 “段地址xl6+偏移地址=物理地址”的本质含义
2.8 段的概念
2.9 段寄存器
2.10 CS和IP
2.11 修改CS、IP的指令
2.12 代码段
实验1 查看CPU和内存,用机器指令和汇编指令编程
第3章 寄存器(内存访问)
3.1 内存中字的存储
3.2 DS 31:1[address]
3.3 字的传送
3.4 ITIOV、add、sub指令
3.5 数据段
3.6 栈
3.7 CPU提供的栈机制
3.8 栈顶超界的问题
3.9 puSh、pop指令
3.10 栈段
实验2 用机器指令和汇编指令编程
第4章 第一个程序
4.1 一个源程序从写出到执行的过程
4.2 源程序
4.3 编辑源程序
4.4 编译
4.5 连接
4.6 以简化的方式进行编译和连接
4.7 1.exe的执行
4.8 谁将可执行文件中的程序装载进入内存并使它运行?
4.9 程序执行过程的跟踪
实验3 编程、编译、连接、跟踪
第5章 【BX】和loop指令
5.1 【BX】
5.2 Loop指令
5.3 在Debu9中跟踪用loop指令实现酮循环程序
5.4 Debu9和汇编编译器masm对指令的不同处理
5.5 loop和【bx】的联合应用
……
第3章 寄存器(内存访问)
第4章 第一个程序
第5章 [BX]和loop指令
第6章 包含多个段的程序
第7章 更灵活的定位内存地址的方法
第8章 数据处理的两个基本问题
第9章 转移指令的原理
第10章 CALL和RET指令
第11章 标志寄存器
第12章 内中断
第13章 int指令
第14章 端口
第15章 外中断
第16章 直接定址表
第17章 使用BIOS进行键盘输入和磁盘读写
《汇编语言》第二版 王爽 中文高清扫描版115M part3 (因为太大,压缩成了6部分,解压后一个文件)
作者简介 王爽,著名计算机科学教育家,哲学家。1 975年出生于黑龙江省齐齐哈尔市。1 997年毕业于宁夏大学计算机及应用专业。2007年开创了可行性哲学理论体系。自1 999年以来,陆续提出并实践了知识屏蔽、线索化、多元环境等一系列对高等专业人才培养具有重要意义的教学与教育思想。多年以来一直积极致力于推动教育发展的各项事业,同时在高等教育、计算机科学与技术、IT产业等诸多领域都有所成就。
目录第1章 基础知识
1.1 机器语言
1.2 汇编语言的产生
1.3 汇编语言的组成
1.4 存储器
1.5 指令和数据
1.6 存储单元
1.7 CPU对存储器的读写
1.8 地址总线
1.9 数据总线
1.10 控制总线
1.11 内存地址空间(概述)
1.12 主板
1.13 接口卡
1.14 各类存储器芯片
1.15 内存地址空间
第2章 寄存器
2.1 通用寄存器
2.2 字在寄存器中的存储
2.3 几条汇编指令
2.4 物理地址
2.5 16位结构的CPU
2.6 8086cPu给出物理地址的方法
2.7 “段地址xl6+偏移地址=物理地址”的本质含义
2.8 段的概念
2.9 段寄存器
2.10 CS和IP
2.11 修改CS、IP的指令
2.12 代码段
实验1 查看CPU和内存,用机器指令和汇编指令编程
第3章 寄存器(内存访问)
3.1 内存中字的存储
3.2 DS 31:1[address]
3.3 字的传送
3.4 ITIOV、add、sub指令
3.5 数据段
3.6 栈
3.7 CPU提供的栈机制
3.8 栈顶超界的问题
3.9 puSh、pop指令
3.10 栈段
实验2 用机器指令和汇编指令编程
第4章 第一个程序
4.1 一个源程序从写出到执行的过程
4.2 源程序
4.3 编辑源程序
4.4 编译
4.5 连接
4.6 以简化的方式进行编译和连接
4.7 1.exe的执行
4.8 谁将可执行文件中的程序装载进入内存并使它运行?
4.9 程序执行过程的跟踪
实验3 编程、编译、连接、跟踪
第5章 【BX】和loop指令
5.1 【BX】
5.2 Loop指令
5.3 在Debu9中跟踪用loop指令实现酮循环程序
5.4 Debu9和汇编编译器masm对指令的不同处理
5.5 loop和【bx】的联合应用
……
第3章 寄存器(内存访问)
第4章 第一个程序
第5章 [BX]和loop指令
第6章 包含多个段的程序
第7章 更灵活的定位内存地址的方法
第8章 数据处理的两个基本问题
第9章 转移指令的原理
第10章 CALL和RET指令
第11章 标志寄存器
第12章 内中断
第13章 int指令
第14章 端口
第15章 外中断
第16章 直接定址表
第17章 使用BIOS进行键盘输入和磁盘读写
《汇编语言》第二版 王爽 中文高清扫描版115M part2 (因为太大,压缩成了6部分,解压后一个文件)
作者简介 王爽,著名计算机科学教育家,哲学家。1 975年出生于黑龙江省齐齐哈尔市。1 997年毕业于宁夏大学计算机及应用专业。2007年开创了可行性哲学理论体系。自1 999年以来,陆续提出并实践了知识屏蔽、线索化、多元环境等一系列对高等专业人才培养具有重要意义的教学与教育思想。多年以来一直积极致力于推动教育发展的各项事业,同时在高等教育、计算机科学与技术、IT产业等诸多领域都有所成就。
目录第1章 基础知识
1.1 机器语言
1.2 汇编语言的产生
1.3 汇编语言的组成
1.4 存储器
1.5 指令和数据
1.6 存储单元
1.7 CPU对存储器的读写
1.8 地址总线
1.9 数据总线
1.10 控制总线
1.11 内存地址空间(概述)
1.12 主板
1.13 接口卡
1.14 各类存储器芯片
1.15 内存地址空间
第2章 寄存器
2.1 通用寄存器
2.2 字在寄存器中的存储
2.3 几条汇编指令
2.4 物理地址
2.5 16位结构的CPU
2.6 8086cPu给出物理地址的方法
2.7 “段地址xl6+偏移地址=物理地址”的本质含义
2.8 段的概念
2.9 段寄存器
2.10 CS和IP
2.11 修改CS、IP的指令
2.12 代码段
实验1 查看CPU和内存,用机器指令和汇编指令编程
第3章 寄存器(内存访问)
3.1 内存中字的存储
3.2 DS 31:1[address]
3.3 字的传送
3.4 ITIOV、add、sub指令
3.5 数据段
3.6 栈
3.7 CPU提供的栈机制
3.8 栈顶超界的问题
3.9 puSh、pop指令
3.10 栈段
实验2 用机器指令和汇编指令编程
第4章 第一个程序
4.1 一个源程序从写出到执行的过程
4.2 源程序
4.3 编辑源程序
4.4 编译
4.5 连接
4.6 以简化的方式进行编译和连接
4.7 1.exe的执行
4.8 谁将可执行文件中的程序装载进入内存并使它运行?
4.9 程序执行过程的跟踪
实验3 编程、编译、连接、跟踪
第5章 【BX】和loop指令
5.1 【BX】
5.2 Loop指令
5.3 在Debu9中跟踪用loop指令实现酮循环程序
5.4 Debu9和汇编编译器masm对指令的不同处理
5.5 loop和【bx】的联合应用
……
第3章 寄存器(内存访问)
第4章 第一个程序
第5章 [BX]和loop指令
第6章 包含多个段的程序
第7章 更灵活的定位内存地址的方法
第8章 数据处理的两个基本问题
第9章 转移指令的原理
第10章 CALL和RET指令
第11章 标志寄存器
第12章 内中断
第13章 int指令
第14章 端口
第15章 外中断
第16章 直接定址表
第17章 使用BIOS进行键盘输入和磁盘读写
《汇编语言》第二版 王爽 中文高清扫描版115M part1 (因为太大,压缩成了6部分,解压后一个文件)
编辑推荐 本书自出版以来,受到业内专家和高校教师、广大计算机专业学生和计算机科学与技术学习者的热烈欢迎和高度评价。许多高校用作教材,教学效果很好。很多人在网络上将其与国外同专业名著相并列向广大读者推荐。事实上,本书已成了推动我国计算机科学与技术教育发展的一部重要著作。本书出版4年连续印刷了8次,成为本专业学生和广大学习者的必读书。
本社为满足广大读者的需求,特请王爽老师对原书进行修订补充,出版第2版,以飨读者。
本书特色:
·采用全新的结构对课程内容进行了组织,对知识进行最小化分割,为读者构造了循序渐进的学习线索
·在深入本质的层面上对汇编语言进行讲解
·对关键环节进行深入的剖析
内容简介汇编语言是各种CPU提供的机器指令的助记符的集合,人们可以用汇编语言直接控制硬件系统进行工作。汇编语言是很多相关课程(如数据结构、操作系统、微机原理等)的重要基础。为了更好地引导、帮助读者学习汇编语言,作者以循序渐进的思想精心创作了这本书。本书具有如下特点:采用了全新的结构对课程的内容进行组织,对知识进行最小化分割,为读者构造了循序渐进的学习线索;在深入本质的层面上对汇编语言进行讲解;对关键环节进行深入的剖析。
本书可用作大学计算机专业本科生的汇编教材及希望深入学习计算机科学的读者的自学教材。
作者简介 王爽,著名计算机科学教育家,哲学家。1 975年出生于黑龙江省齐齐哈尔市。1 997年毕业于宁夏大学计算机及应用专业。2007年开创了可行性哲学理论体系。自1 999年以来,陆续提出并实践了知识屏蔽、线索化、多元环境等一系列对高等专业人才培养具有重要意义的教学与教育思想。多年以来一直积极致力于推动教育发展的各项事业,同时在高等教育、计算机科学与技术、IT产业等诸多领域都有所成就。
目录第1章 基础知识
1.1 机器语言
1.2 汇编语言的产生
1.3 汇编语言的组成
1.4 存储器
1.5 指令和数据
1.6 存储单元
1.7 CPU对存储器的读写
1.8 地址总线
1.9 数据总线
1.10 控制总线
1.11 内存地址空间(概述)
1.12 主板
1.13 接口卡
1.14 各类存储器芯片
1.15 内存地址空间
第2章 寄存器
2.1 通用寄存器
2.2 字在寄存器中的存储
2.3 几条汇编指令
2.4 物理地址
2.5 16位结构的CPU
2.6 8086cPu给出物理地址的方法
2.7 “段地址xl6+偏移地址=物理地址”的本质含义
2.8 段的概念
2.9 段寄存器
2.10 CS和IP
2.11 修改CS、IP的指令
2.12 代码段
实验1 查看CPU和内存,用机器指令和汇编指令编程
第3章 寄存器(内存访问)
3.1 内存中字的存储
3.2 DS 31:1[address]
3.3 字的传送
3.4 ITIOV、add、sub指令
3.5 数据段
3.6 栈
3.7 CPU提供的栈机制
3.8 栈顶超界的问题
3.9 puSh、pop指令
3.10 栈段
实验2 用机器指令和汇编指令编程
第4章 第一个程序
4.1 一个源程序从写出到执行的过程
4.2 源程序
4.3 编辑源程序
4.4 编译
4.5 连接
4.6 以简化的方式进行编译和连接
4.7 1.exe的执行
4.8 谁将可执行文件中的程序装载进入内存并使它运行?
4.9 程序执行过程的跟踪
实验3 编程、编译、连接、跟踪
第5章 【BX】和loop指令
5.1 【BX】
5.2 Loop指令
5.3 在Debu9中跟踪用loop指令实现酮循环程序
5.4 Debu9和汇编编译器masm对指令的不同处理
5.5 loop和【bx】的联合应用
……
第3章 寄存器(内存访问)
第4章 第一个程序
第5章 [BX]和loop指令
第6章 包含多个段的程序
第7章 更灵活的定位内存地址的方法
第8章 数据处理的两个基本问题
第9章 转移指令的原理
第10章 CALL和RET指令
第11章 标志寄存器
第12章 内中断
第13章 int指令
第14章 端口
第15章 外中断
第16章 直接定址表
第17章 使用BIOS进行键盘输入和磁盘读写
TCP/IP详解 卷1:协议
作者: W.Richard Stevens
国际知名的Unix和网络专家,《TCP/IP 详解》(三卷本)作者 W.Richard Stevens(1951-1999),是国际知名的Unix和网络专家;受人尊敬的计算机图书作家;同时他还是广受欢迎的教师和顾问。Stevens先生1951年生于赞比亚,他的家庭曾多次搬迁,最终定居于南非。早年,他就读于美国弗吉尼亚州的费什本军事学校,后获得密歇根大学学士、亚利桑那大学系统工程硕士和博士学位。他曾就职于基特峰国家天文台,从事计算机编程;还曾在康涅狄格州纽黑文市的健康系统国际公司任主管计算机服务的副总裁。 Stevens先生。。。
目 录
译者序
前言
第1章 概述 1
1.1 引言 1
1.2 分层 1
1.3 TCP/IP的分层 4
1.4 互联网的地址 5
1.5 域名系统 6
1.6 封装 6
1.7 分用 8
1.8 客户-服务器模型 8
1.9 端口号 9
1.10 标准化过程 10
1.11 RFC 10
1.12 标准的简单服务 11
1.13 互联网 12
1.14 实现 12
1.15 应用编程接口 12
1.16 测试网络 13
1.17 小结 13
第2章 链路层 15
2.1 引言 15
2.2 以太网和IEEE 802封装 15
2.3 尾部封装 17
2.4 SLIP:串行线路IP 17
2.5 压缩的SLIP 18
2.6 PPP:点对点协议 18
2.7 环回接口 20
2.8 最大传输单元MTU 21
2.9 路径MTU 21
2.10 串行线路吞吐量计算 21
2.11 小结 22
第3章 IP:网际协议 24
3.1 引言 24
3.2 IP首部 24
3.3 IP路由选择 27
3.4 子网寻址 30
3.5 子网掩码 32
3.6 特殊情况的IP地址 33
3.7 一个子网的例子 33
3.8 ifconfig命令 35
3.9 netstat命令 36
3.10 IP的未来 36
3.11 小结 37
第4章 ARP:地址解析协议 38
4.1 引言 38
4.2 一个例子 38
4.3 ARP高速缓存 40
4.4 ARP的分组格式 40
4.5 ARP举例 41
4.5.1 一般的例子 41
4.5.2 对不存在主机的ARP请求 42
4.5.3 ARP高速缓存超时设置 43
4.6 ARP代理 43
4.7 免费ARP 45
4.8 arp命令 45
4.9 小结 46
第5章 RARP:逆地址解析协议 47
5.1 引言 47
5.2 RARP的分组格式 47
5.3 RARP举例 47
5.4 RARP服务器的设计 48
5.4.1 作为用户进程的RARP服务器 49
5.4.2 每个网络有多个RARP服务器 49
5.5 小结 49
第6章 ICMP:Internet控制报文协议 50
6.1 引言 50
6.2 ICMP报文的类型 50
6.3 ICMP地址掩码请求与应答 52
6.4 ICMP时间戳请求与应答 53
6.4.1 举例 54
6.4.2 另一种方法 55
6.5 ICMP端口不可达差错 56
6.6 ICMP报文的4.4BSD处理 59
6.7 小结 60
第7章 Ping程序 61
7.1 引言 61
7.2 Ping程序 61
7.2.1 LAN输出 62
7.2.2 WAN输出 63
7.2.3 线路SLIP链接 64
7.2.4 拨号SLIP链路 65
7.3 IP记录路由选项 65
7.3.1 通常的例子 66
7.3.2 异常的输出 68
7.4 IP时间戳选项 69
7.5 小结 70
第8章 Traceroute程序 71
8.1 引言 71
8.2 Traceroute 程序的操作 71
8.3 局域网输出 72
8.4 广域网输出 75
8.5 IP源站选路选项 76
8.5.1 宽松的源站选路的traceroute
程序示例 78
8.5.2 严格的源站选路的traceroute
程序示例 79
8.5.3 宽松的源站选路traceroute程序
的往返路由 80
8.6 小结 81
第9章 IP选路 83
9.1 引言 83
9.2 选路的原理 84
9.2.1 简单路由表 84
9.2.2 初始化路由表 86
9.2.3 较复杂的路由表 87
9.2.4 没有到达目的地的路由 87
9.3 ICMP主机与网络不可达差错 88
9.4 转发或不转发 89
9.5 ICMP重定向差错 89
9.5.1 一个例子 90
9.5.2 更多的细节 91
9.6 ICMP路由器发现报文 92
9.6.1 路由器操作 93
9.6.2 主机操作 93
9.6.3 实现 93
9.7 小结 94
第10章 动态选路协议 95
10.1 引言 95
10.2 动态选路 95
10.3 Unix选路守护程序 96
10.4 RIP:选路信息协议 96
10.4.1 报文格式 96
10.4.2 正常运行 97
10.4.3 度量 98
10.4.4 问题 98
10.4.5 举例 98
10.4.6 另一个例子 100
10.5 RIP版本2 102
10.6 OSPF:开放最短路径优先 102
10.7 BGP:边界网关协议 103
10.8 CIDR:无类型域间选路 104
10.9 小结 105
第11章 UDP:用户数据报协议 107
11.1 引言 107
11.2 UDP首部 107
11.3 UDP检验和 108
11.3.1 tcpdump输出 109
11.3.2 一些统计结果 109
11.4 一个简单的例子 110
11.5 IP分片 111
11.6 ICMP不可达差错(需要分片) 113
11.7 用Traceroute确定路径MTU 114
11.8 采用UDP的路径MTU发现 116
11.9 UDP和ARP之间的交互作用 118
11.10 最大UDP数据报长度 119
11.11 ICMP源站抑制差错 120
11.12 UDP服务器的设计 122
11.12.1 客户IP地址及端口号 122
11.12.2 目标IP地址 122
11.12.3 UDP输入队列 122
11.12.4 限制本地IP地址 124
11.12.5 限制远端IP地址 125
11.12.6 每个端口有多个接收者 125
11.13 小结 126
第12章 广播和多播 128
12.1 引言 128
12.2 广播 129
12.2.1 受限的广播 129
12.2.2 指向网络的广播 129
12.2.3 指向子网的广播 129
12.2.4 指向所有子网的广播 130
12.3 广播的例子 130
12.4 多播 132
12.4.1 多播组地址 133
12.4.2 多播组地址到以太网地址的转换 133
12.4.3 FDDI和令牌环网络中的多播 134
12.5 小结 134
第13章 IGMP:Internet组管理协议 136
13.1 引言 136
13.2 IGMP报文 136
13.3 IGMP协议 136
13.3.1 加入一个多播组 136
13.3.2 IGMP报告和查询 137
13.3.3 实现细节 137
13.3.4 生存时间字段 138
13.3.5 所有主机组 138
13.4 一个例子 138
13.5 小结 141
第14章 DNS:域名系统 142
14.1 引言 142
14.2 DNS基础 142
14.3 DNS的报文格式 144
14.3.1 DNS查询报文中的问题部分 146
14.3.2 DNS响应报文中的资源记录部分 147
14.4 一个简单的例子 147
14.5 指针查询 150
14.5.1 举例 151
14.5.2 主机名检查 151
14.6 资源记录 152
14.7 高速缓存 153
14.8 用UDP还是用TCP 156
14.9 另一个例子 156
14.10 小结 157
第15章 TFTP:简单文件传送协议 159
15.1 引言 159
15.2 协议 159
15.3 一个例子 160
15.4 安全性 161
15.5 小结 162
第16章 BOOTP: 引导程序协议 163
16.1 引言 163
16.2 BOOTP的分组格式 163
16.3 一个例子 164
16.4 BOOTP服务器的设计 165
16.5 BOOTP穿越路由器 167
16.6 特定厂商信息 167
16.7 小结 168
第17章 TCP:传输控制协议 170
17.1 引言 170
17.2 TCP的服务 170
17.3 TCP的首部 171
17.4 小结 173
第18章 TCP连接的建立与终止 174
18.1 引言 174
18.2 连接的建立与终止 174
18.2.1 tcpdump的输出 174
18.2.2 时间系列 175
18.2.3 建立连接协议 175
18.2.4 连接终止协议 177
18.2.5 正常的tcpdump输出 177
18.3 连接建立的超时 178
18.3.1 第一次超时时间 178
18.3.2 服务类型字段 179
18.4 最大报文段长度 179
18.5 TCP的半关闭 180
18.6 TCP的状态变迁图 182
18.6.1 2MSL等待状态 183
18.6.2 平静时间的概念 186
18.6.3 FIN_WAIT_2状态 186
18.7 复位报文段 186
18.7.1 到不存在的端口的连接请求 187
18.7.2 异常终止一个连接 187
18.7.3 检测半打开连接 188
18.8 同时打开 189
18.9 同时关闭 191
18.10 TCP选项 191
18.11 TCP服务器的设计 192
18.11.1 TCP服务器端口号 193
18.11.2 限定的本地IP地址 194
18.11.3 限定的远端IP地址 195
18.11.4 呼入连接请求队列 195
18.12 小结 197
第19章 TCP的交互数据流 200
19.1 引言 200
19.2 交互式输入 200
19.3 经受时延的确认 201
19.4 Nagle算法 203
19.4.1 关闭Nagle算法 204
19.4.2 一个例子 205
19.5 窗口大小通告 207
19.6 小结 208
第20章 TCP的成块数据流 209
20.1 引言 209
20.2 正常数据流 209
20.3 滑动窗口 212
20.4 窗口大小 214
20.5 PUSH标志 215
20.6 慢启动 216
20.7 成块数据的吞吐量 218
20.7.1 带宽时延乘积 220
20.7.2 拥塞 220
20.8 紧急方式 221
20.9 小结 224
第21章 TCP的超时与重传 226
21.1 引言 226
21.2 超时与重传的简单例子 226
21.3 往返时间测量 227
21.4 往返时间RTT的例子 229
21.4.1 往返时间RTT的测量 229
21.4.2 RTT估计器的计算 231
21.4.3 慢启动 233
21.5 拥塞举例 233
21.6 拥塞避免算法 235
21.7 快速重传与快速恢复算法 236
21.8 拥塞举例(续) 237
21.9 按每条路由进行度量 240
21.10 ICMP的差错 240
21.11 重新分组 243
21.12 小结 243
第22章 TCP的坚持定时器 245
22.1 引言 245
22.2 一个例子 245
22.3 糊涂窗口综合症 246
22.4 小结 250
第23章 TCP的保活定时器 251
23.1 引言 251
23.2 描述 252
23.3 保活举例 253
23.3.1 另一端崩溃 253
23.3.2 另一端崩溃并重新启动 254
23.3.3 另一端不可达 254
23.4 小结 255
第24章 TCP的未来和性能 256
24.1 引言 256
24.2 路径MTU发现 256
24.2.1 一个例子 257
24.2.2 大分组还是小分组 258
24.3 长肥管道 259
24.4 窗口扩大选项 262
24.5 时间戳选项 263
24.6 PAWS:防止回绕的序号 265
24.7 T/TCP:为事务用的TCP扩展 265
24.8 TCP的性能 267
24.9 小结 268
第25章 SNMP:简单网络管理协议 270
25.1 引言 270
25.2 协议 270
25.3 管理信息结构 272
25.4 对象标识符 274
25.5 管理信息库介绍 274
25.6 实例标识 276
25.6.1 简单变量 276
25.6.2 表格 276
25.6.3 字典式排序 277
25.7 一些简单的例子 277
25.7.1 简单变量 278
25.7.2 get-next操作 278
25.7.3 表格的访问 279
25.8 管理信息库(续) 279
25.8.1 system组 279
25.8.2 interface组 280
25.8.3 at组 281
25.8.4 ip组 282
25.8.5 icmp组 285
25.8.6 tcp组 285
25.9 其他一些例子 288
25.9.1 接口MTU 288
25.9.2 路由表 288
25.10 trap 290
25.11 ASN.1和BER 291
25.12 SNMPv2 292
25.13 小结 292
第26章 Telnet和Rlogin:远程登录 293
26.1 引言 293
26.2 Rlogin协议 294
26.2.1 应用进程的启动 295
26.2.2 流量控制 295
26.2.3 客户的中断键 296
26.2.4 窗口大小的改变 296
26.2.5 服务器到客户的命令 296
26.2.6 客户到服务器的命令 297
26.2.7 客户的转义符 298
26.3 Rlogin的例子 298
26.3.1 初始的客户-服务器协议 298
26.3.2 客户中断键 299
26.4 Telnet协议 302
26.4.1 NVT ASCII 302
26.4.2 Telnet命令 302
26.4.3 选项协商 303
26.4.4 子选项协商 304
26.4.5 半双工、一次一字符、一次
一行或行方式 304
26.4.6 同步信号 306
26.4.7 客户的转义符 306
26.5 Telnet举例 306
26.5.1 单字符方式 306
26.5.2 行方式 310
26.5.3 一次一行方式(准行方式) 312
26.5.4 行方式:客户中断键 313
26.6 小结 314
第27章 FTP:文件传送协议 316
27.1 引言 316
27.2 FTP协议 316
27.2.1 数据表示 316
27.2.2 FTP命令 318
27.2.3 FTP应答 319
27.2.4 连接管理 320
27.3 FTP的例子 321
27.3.1 连接管理:临时数据端口 321
27.3.2 连接管理:默认数据端口 323
27.3.3 文本文件传输:NVT ASCII
表示还是图像表示 325
27.3.4 异常中止一个文件的传输:
Telnet同步信号 326
27.3.5 匿名FTP 329
27.3.6 来自一个未知IP地址的匿名FTP 330
27.4 小结 331
第28章 SMTP:简单邮件传送协议 332
28.1 引言 332
28.2 SMTP协议 332
28.2.1 简单例子 332
28.2.2 SMTP命令 334
28.2.3 信封、首部和正文 335
28.2.4 中继代理 335
28.2.5 NVT ASCII 337
28.2.6 重试间隔 337
28.3 SMTP的例子 337
28.3.1 MX记录:主机非直接连到
Internet 337
28.3.2 MX记录:主机出故障 339
28.3.3 VRFY和EXPN命令 340
28.4 SMTP的未来 340
28.4.1 信封的变化:扩充的SMTP 341
28.4.2 首部变化:非ASCII字符 342
28.4.3 正文变化:通用Internet邮件
扩充 343
28.5 小结 346
第29章 网络文件系统 347
29.1 引言 347
29.2 Sun远程过程调用 347
29.3 XDR:外部数据表示 349
29.4 端口映射器 349
29.5 NFS协议 351
29.5.1 文件句柄 353
29.5.2 安装协议 353
29.5.3 NFS过程 354
29.5.4 UDP还是TCP 355
29.5.5 TCP上的NFS 355
29.6 NFS实例 356
29.6.1 简单的例子:读一个文件 356
29.6.2 简单的例子:创建一个目录 357
29.6.3 无状态 358
29.6.4 例子:服务器崩溃 358
29.6.5 等幂过程 360
29.7 第3版的NFS 360
29.8 小结 361
第30章 其他的TCP/IP应用程序 363
30.1 引言 363
30.2 Finger协议 363
30.3 Whois协议 364
30.4 Archie、WAIS、Gopher、Veronica
和WWW 366
30.4.1 Archie 366
30.4.2 WAIS 366
30.4.3 Gopher 366
30.4.4 Veronica 366
30.4.5 万维网WWW 367
30.5 X窗口系统 367
30.5.1 Xscope程序 368
30.5.2 LBX: 低带宽X 370
30.6 小结 370
附录A tcpdump程序 371
附录B 计算机时钟 376
附录C sock程序 378
附录D 部分习题的解答 381
附录E 配置选项 395
附录F 可以免费获得的源代码 406
参考文献 409
缩略语 420
MASM 6.15汇编语言编程调试工具
MASM 6.15 汇编语言编程调试工具,非常好用
MASM 是 Microsoft Macro Assembler 的缩写,它是 微软 为 x86 微处理器家族,所写的一套宏组译器。它最初是用来发展在 MS-DOS 上面执行的软件,同时,它也该系统最流行的组译器。
它支援的宏很灵巧,既广泛又多样性,结构化程式的惯用语法,包含高阶架构式的循环、程序呼叫,以及轮替 (alternation)(因此,MASM 算是高阶组译器的一个范本).
AT&T汇编语言与GCC内嵌汇编简介
1 AT&T与INTEL的汇编语言语法的区别.........................................3
1.1 大小写...........................................................3
1.2 操作数赋值方向...................................................3
1.3 前缀.............................................................3
1.4 间接寻址语法.....................................................4
1.5 后缀.............................................................4
1.6 指令.............................................................5
2 GCC内嵌汇编.............................................................5
2.1 简介.............................................................5
2.2 内嵌汇编举例.....................................................5
2.3 语法.............................................................7
2.3.1 汇编语句模板.................................................7
2.3.2 输出部分.....................................................7
2.3.3 输入部分.....................................................8
2.3.4 限制字符.....................................................8
2.3.5 破坏描述部分................................................14
2.4 GCC如何编译内嵌汇编代码.........................................19
3 后记....................................................................20
高质量C++/C编程指南
目 录
前 言... 6
第1章 文件结构... 11
1.1 版权和版本的声明... 11
1.2 头文件的结构... 12
1.3 定义文件的结构... 13
1.4 头文件的作用... 13
1.5 目录结构... 14
第2章 程序的版式... 15
2.1 空行... 15
2.2 代码行... 16
2.3 代码行内的空格... 17
2.4 对齐... 18
2.5 长行拆分... 19
2.6 修饰符的位置... 19
2.7 注释... 20
2.8 类的版式... 21
第3章 命名规则... 22
3.1 共性规则... 22
3.2 简单的Windows应用程序命名规则... 23
3.3 简单的Unix应用程序命名规则... 25
第4章 表达式和基本语句... 26
4.1 运算符的优先级... 26
4.2 复合表达式... 27
4.3 if 语句... 27
4.4 循环语句的效率... 29
4.5 for 语句的循环控制变量... 30
4.6 switch语句... 30
4.7 goto语句... 31
第5章 常量... 33
5.1 为什么需要常量... 33
5.2 const 与 #define的比较... 33
5.3 常量定义规则... 33
5.4 类中的常量... 34
第6章 函数设计... 36
6.1 参数的规则... 36
6.2 返回值的规则... 37
6.3 函数内部实现的规则... 39
6.4 其它建议... 40
6.5 使用断言... 41
6.6 引用与指针的比较... 42
第7章 内存管理... 44
7.1内存分配方式... 44
7.2常见的内存错误及其对策... 44
7.3指针与数组的对比... 45
7.4指针参数是如何传递内存的?... 47
7.5 free和delete把指针怎么啦?... 50
7.6 动态内存会被自动释放吗?... 50
7.7 杜绝“野指针”... 51
7.8 有了malloc/free为什么还要new/delete ?... 52
7.9 内存耗尽怎么办?... 53
7.10 malloc/free 的使用要点... 54
7.11 new/delete 的使用要点... 55
7.12 一些心得体会... 56
第8章 C++函数的高级特性... 57
8.1 函数重载的概念... 57
8.2 成员函数的重载、覆盖与隐藏... 60
8.3 参数的缺省值... 63
8.4 运算符重载... 64
8.5 函数内联... 65
8.6 一些心得体会... 68
第9章 类的构造函数、析构函数与赋值函数... 69
9.1 构造函数与析构函数的起源... 69
9.2 构造函数的初始化表... 70
9.3 构造和析构的次序... 72
9.4 示例:类String的构造函数与析构函数... 72
9.5 不要轻视拷贝构造函数与赋值函数... 73
9.6 示例:类String的拷贝构造函数与赋值函数... 73
9.7 偷懒的办法处理拷贝构造函数与赋值函数... 75
9.8 如何在派生类中实现类的基本函数... 75
9.9 一些心得体会... 77
第10章 类的继承与组合... 78
10.1 继承... 78
10.2 组合... 80
第11章 其它编程经验... 82
11.1 使用const提高函数的健壮性... 82
11.2 提高程序的效率... 84
11.3 一些有益的建议... 85
参考文献... 87
附录A :C++/C代码审查表... 88
附录B :C++/C试题... 93
附录C :C++/C试题的答案与评分标准
GNU make中文手册
翻译整理:徐海兵
2004-09-11
目 录
第一章:概述
1.1 概述
1.2 准备知识
第二章:GNU make 介绍
2.1 Makefile简介
2.2 Makefile规则介绍
2.3 简单的示例
2.4 make如何工作
2.5 指定变量
2.6 自动推导规则
2.7 另类风格的makefile
2.8 清除工作目录过程文件
第三章:Makefile 总述
3.1 Makefile的内容
3.2 makefile文件的命名
3.3 包含其它makefile文件
3.4 变量 MAKEFILES
3.5 变量 MAKEFILE_LIST
3.6 其他特殊变量
3.7 makefile文件的重建
3.8 重载另外一个makefile
3.9 make如何解析makefile文件
3.9.1 变量取值
3.9.2 条件语句
3.9.3 规则的定义
3.10 总结
第四章:Makefile的规则
4.1 一个例子
4.2 规则语法
4.3 依赖的类型
4.4 文件名使用通配符
4.4.1 统配符使用举例
4.4.2 通配符存在的缺陷
4.4.3 函数wildcard
4.5 目录搜寻
4.5.1 一般搜索(变量VPATH)
4.5.2 选择性搜索(关键字vpath)
4.5.3 目录搜索的机制
4.5.4 命令行和搜索目录
4.5.5 隐含规则和搜索目录
4.5.6 库文件和搜索目录
4.6 Makefile伪目标
4.7 强制目标(没有命令或依赖的规则)
4.8 空目标文件
4.9 Makefile的特殊目标
4.10 多目标
4.11 多规则目标
4.12 静态模式
4.12.1 静态模式规则的语法
4.12.2 静态模式和隐含规则
4.13 双冒号规则
4.14 自动产生依赖
第五章:规则的命令
5.1 命令回显
5.2 命令的执行
5.3 并发执行命令
5.4 命令执行的错误
5.5 中断make的执行
5.6 make的递归执行
5.6.1 变量MAKE
5.6.2 变量和递归
5.6.3 命令行选项和递归
5.6.4 -w选项
5.7 定义命令包
5.8 空命令
第六章:Makefile中的变量
6.1 变量的引用
6.2 两种变量定义(赋值 )
6.2.1 递归展开式变量
6.2.2 直接展开式变量
6.2.3 如何定义一个空格
6.2.4 “?=”操作符
6.3 变量的高级用法
6.3.1 变量的替换引用
6.3.2 变量的套嵌引用
6.4 变量取值
6.5 如何设置变量
6.6 追加变量值
6.7 override 指示符
6.8 多行定义
6.9 系统环境变量
6.10 目标指定变量
6.11 模式指定变量
第七章:Makefile的条件执行
7.1 一个例子
7.2 条件判断的基本语法
7.2.1 关键字“ifeq”
7.2.2 关键字“ifneq”
7.2.3 关键字“ifdef”
7.2.4 关键字“ifndef”
7.3 标记测试的条件语句
第八章:make的内嵌函数
8.1 函数的调用语法
8.2 文本处理函数
8.2.1 $(subst FROM,TO,TEXT)
8.2.2 $(patsubst PATTERN,REPLACEMENT,TEXT)
8.2.3 $(strip STRINT)
8.2.4 $(findstring FIND,IN)
8.2.5 $(filter PATTERN…,TEXT)
8.2.6 $(filter-out PATTERN...,TEXT)
8.2.7 $(sort LIST)
8.2.8 $(word N,TEXT)
8.2.9 $(wordlist S,E,TEXT)
8.2.10 $(words TEXT)
8.2.11 $(firstword NAMES…)
8.3 文件名处理函数
8.3.1 $(dir NAMES…)
8.3.2 $(notdir NAMES…)
8.3.3 $(suffix NAMES…)
8.3.4 $(basename NAMES…)
8.3.5 $(addsuffix SUFFIX,NAMES…)
8.3.6 $(addprefix PREFIX,NAMES…)
8.3.7 $(join LIST1,LIST2)
8.3.8 $(wildcard PATTERN)
8.4 foreach 函数
8.5 if 函数
8.6 call函数
8.7 value函数
8.8 eval函数
8.9 origin函数
8.10 shell函数
8.11 make的控制函数
8.11.1 $(error TEXT…)
8.11.2 $(warning TEXT…)
第九章:执行make
9.1 指定makefile文件
9.2 指定终极目标
9.3 替代命令的执行
9.4 防止特定文件重建
9.5 替换变量定义
9.6 使用make进行编译测试
9.7 make的命令行选项
第十章:make的隐含规则
10.1 隐含规则的使用
10.2 make的隐含规则一览
10.3 隐含变量
10.3.1 代表命令的变量
10.3.2 命令参数的变量
10.4 make隐含规则链
10.5 模式规则
10.5.1 模式规则介绍
10.5.2 模式规则示例
10.5.3 自动化变量
10.5.4 模式的匹配
10.5.5 万用规则
10.5.6 重建内嵌隐含规则
10.6 缺省规则
10.7 后缀规则
10.8 隐含规则搜索算法
第十一章:使用make更新静态库文件
11.1 库成员作为目标
11.2 静态库的更新
11.2.1 更新静态库的符号索引表
11.3 make静态库的注意事项
11.4 静态库的后缀规则
第十二章 : GNU make的特点
12.1 源自System v的特点
12.2 源自其他版本的特点
12.3 GNU make自身的特点
第十三章 和其它版本的兼容
第十四章 Makefile的约定
14.1 基本的约定
14.2 规则命令行的约定
14.3 代表命令变量
14.4 安装目录变量
14.5 Makefile的标准目标名
14.6 安装命令分类
第十五章 make的常见错误信息
附录:关键字索引
1. GNU make可识别的指示 符
2. GNU make函数
3. GNU make的自动化变量
4. GNU make环境变量
后序
GCC技术参考大全(英文原版)
gcc: the complete reference
McGraw Hill出版
英文原版
第一部分:The free software compiler
第二部分:using the compiler collection
第三部分:peripherals and internals
第四部分: appendixes
UNIX环境高级编程
本书全面介绍了UNIX系统的程序设计界面—系统调用界面和标准C库提供的许多函数。 本书的前15章着重于理论知识的阐述,主要内容包括UNIX文件和目录、进程环境、进程控制、进程间通信以及各种I/O。在此基础上,分别按章介绍了多个应用实例,包括如何创建数据库函数库,PostScript 打印机驱动程序,调制解调器拨号器及在伪终端上运行其他程序的程序等。 本书内容丰富权威,概念清晰精辟,一直以来被誉为UNIX编程的“圣经”,对于所有UNIX程序员—无论是初学者还是专家级人士—都是一本无价的参考书籍。
Programming from the Ground Up
Jonathan Bartlett
Programming from the Ground Up
Linux C编程一站式学习
目录
历史
前言
I. C语言入门
1. 程序的基本概念
1. 程序和编程语言
2. 自然语言和形式语言
3. 程序的调试
4. 第一个程序
2. 常量、变量和表达式
1. 继续Hello World
2. 常量
3. 变量
4. 赋值
5. 表达式
6. 字符类型与字符编码
3. 简单函数
1. 数学函数
2. 自定义函数
3. 形参和实参
4. 全局变量、局部变量和作用域
4. 分支语句
1. if语句
2. if/else语句
3. 布尔代数
4. switch语句
5. 深入理解函数
1. return语句
2. 增量式开发
3. 递归
6. 循环语句
1. while语句
2. do/while语句
3. for语句
4. break和continue语句
5. 嵌套循环
6. goto语句和标号
7. 结构体
1. 复合类型与结构体
2. 数据抽象
3. 数据类型标志
4. 嵌套结构体
8. 数组
1. 数组的基本概念
2. 数组应用实例:统计随机数
3. 数组应用实例:直方图
4. 字符串
5. 多维数组
9. 编码风格
1. 缩进和空白
2. 注释
3. 标识符命名
4. 函数
5. indent工具
10. gdb
1. 单步执行和跟踪函数调用
2. 断点
3. 观察点
4. 段错误
11. 排序与查找
1. 算法的概念
2. 插入排序
3. 算法的时间复杂度分析
4. 归并排序
5. 线性查找
6. 折半查找
12. 栈与队列
1. 数据结构的概念
2. 堆栈
3. 深度优先搜索
4. 队列与广度优先搜索
5. 环形队列
13. 本阶段总结
II. C语言本质
14. 计算机中数的表示
1. 为什么计算机用二进制计数
2. 不同进制之间的换算
3. 整数的加减运算
3.1. Sign and Magnitude表示法
3.2. 1's Complement表示法
3.3. 2's Complement表示法
3.4. 有符号数和无符号数
4. 浮点数
15. 数据类型详解
1. 整型
2. 浮点型
3. 类型转换
3.1. Integer Promotion
3.2. Usual Arithmetic Conversion
3.3. 由赋值产生的类型转换
3.4. 强制类型转换
3.5. 编译器如何处理类型转换
16. 运算符详解
1. 位运算
1.1. 按位与、或、异或、取反运算
1.2. 移位运算
1.3. 掩码
1.4. 异或运算的一些特性
2. 其它运算符
2.1. 复合赋值运算符
2.2. 条件运算符
2.3. 逗号运算符
2.4. sizeof运算符与typedef类型声明
3. Side Effect与Sequence Point
4. 运算符总结
17. 计算机体系结构基础
1. 内存与地址
2. CPU
3. 设备
4. MMU
5. Memory Hierarchy
18. x86汇编程序基础
1. 最简单的汇编程序
2. x86的寄存器
3. 第二个汇编程序
4. 寻址方式
5. ELF文件
5.1. 目标文件
5.2. 可执行文件
19. 汇编与C之间的关系
1. 函数调用
2. main函数和启动例程
3. 变量的存储布局
4. 结构体和联合体
5. C内联汇编
6. volatile限定符
20. 链接详解
1. 多目标文件的链接
2. 定义和声明
2.1. extern和static关键字
2.2. 头文件
2.3. 定义和声明的详细规则
3. 静态库
4. 共享库
4.1. 编译、链接、运行
4.2. 动态链接的过程
4.3. 共享库的命名惯例
5. 虚拟内存管理
21. 预处理
1. 预处理的步骤
2. 宏定义
2.1. 函数式宏定义
2.2. 内联函数
2.3. #、##运算符和可变参数
2.4. 宏展开的步骤
3. 条件预处理指示
4. 其它预处理特性
22. Makefile基础
1. 基本规则
2. 隐含规则和模式规则
3. 变量
4. 自动处理头文件的依赖关系
5. 常用的make命令行选项
23. 指针
1. 指针的基本概念
2. 指针类型的参数和返回值
3. 指针与数组
4. 指针与const限定符
5. 指针与结构体
6. 指向指针的指针与指针数组
7. 指向数组的指针与多维数组
8. 函数类型和函数指针类型
9. 不完全类型和复杂声明
24. 函数接口
1. 本章的预备知识
1.1. strcpy与strncpy
1.2. malloc与free
2. 传入参数与传出参数
3. 两层指针的参数
4. 返回值是指针的情况
5. 回调函数
6. 可变参数
25. C标准库
1. 字符串操作函数
1.1. 初始化字符串
1.2. 取字符串的长度
1.3. 拷贝字符串
1.4. 连接字符串
1.5. 比较字符串
1.6. 搜索字符串
1.7. 分割字符串
2. 标准I/O库函数
2.1. 文件的基本概念
2.2. fopen/fclose
2.3. stdin/stdout/stderr
2.4. errno与perror函数
2.5. 以字节为单位的I/O函数
2.6. 操作读写位置的函数
2.7. 以字符串为单位的I/O函数
2.8. 以记录为单位的I/O函数
2.9. 格式化I/O函数
2.10. C标准库的I/O缓冲区
2.11. 本节综合练习
3. 数值字符串转换函数
4. 分配内存的函数
26. 链表、二叉树和哈希表
1. 链表
1.1. 单链表
1.2. 双向链表
1.3. 静态链表
1.4. 本节综合练习
2. 二叉树
2.1. 二叉树的基本概念
2.2. 排序二叉树
3. 哈希表
27. 本阶段总结
III. Linux系统编程
28. 文件与I/O
1. 汇编程序的Hello world
2. C标准I/O库函数与Unbuffered I/O函数
3. open/close
4. read/write
5. lseek
6. fcntl
7. ioctl
8. mmap
29. 文件系统
1. 引言
2. ext2文件系统
2.1. 总体存储布局
2.2. 实例剖析
2.3. 数据块寻址
2.4. 文件和目录操作的系统函数
3. VFS
3.1. 内核数据结构
3.2. dup和dup2函数
30. 进程
1. 引言
2. 环境变量
3. 进程控制
3.1. fork函数
3.2. exec函数
3.3. wait和waitpid函数
4. 进程间通信
4.1. 管道
4.2. 其它IPC机制
5. 练习:实现简单的Shell
31. Shell脚本
1. Shell的历史
2. Shell如何执行命令
2.1. 执行交互式命令
2.2. 执行脚本
3. Shell的基本语法
3.1. 变量
3.2. 文件名代换(Globbing):* ? []
3.3. 命令代换:`或 $()
3.4. 算术代换:$(())
3.5. 转义字符\
3.6. 单引号
3.7. 双引号
4. bash启动脚本
4.1. 作为交互登录Shell启动,或者使用--login参数启动
4.2. 以交互非登录Shell启动
4.3. 非交互启动
4.4. 以sh命令启动
5. Shell脚本语法
5.1. 条件测试:test [
5.2. if/then/elif/else/fi
5.3. case/esac
5.4. for/do/done
5.5. while/do/done
5.6. 位置参数和特殊变量
5.7. 函数
6. Shell脚本的调试方法
32. 正则表达式
1. 引言
2. 基本语法
3. sed
4. awk
5. 练习:在C语言中使用正则表达式
33. 信号
1. 信号的基本概念
2. 产生信号
2.1. 通过终端按键产生信号
2.2. 调用系统函数向进程发信号
2.3. 由软件条件产生信号
3. 阻塞信号
3.1. 信号在内核中的表示
3.2. 信号集操作函数
3.3. sigprocmask
3.4. sigpending
4. 捕捉信号
4.1. 内核如何实现信号的捕捉
4.2. sigaction
4.3. pause
4.4. 可重入函数
4.5. sig_atomic_t类型与volatile限定符
4.6. 竞态条件与sigsuspend函数
4.7. 关于SIGCHLD信号
34. 终端、作业控制与守护进程
1. 终端
1.1. 终端的基本概念
1.2. 终端登录过程
1.3. 网络登录过程
2. 作业控制
2.1. Session与进程组
2.2. 与作业控制有关的信号
3. 守护进程
35. 线程
1. 线程的概念
2. 线程控制
2.1. 创建线程
2.2. 终止线程
3. 线程间同步
3.1. mutex
3.2. Condition Variable
3.3. Semaphore
3.4. 其它线程间同步机制
4. 编程练习
36. TCP/IP协议基础
1. TCP/IP协议栈与数据包封装
2. 以太网(RFC 894)帧格式
3. ARP数据报格式
4. IP数据报格式
5. IP地址与路由
6. UDP段格式
7. TCP协议
7.1. 段格式
7.2. 通讯时序
7.3. 流量控制
37. socket编程
1. 预备知识
1.1. 网络字节序
1.2. socket地址的数据类型及相关函数
2. 基于TCP协议的网络程序
2.1. 最简单的TCP网络程序
2.2. 错误处理与读写控制
2.3. 把client改为交互式输入
2.4. 使用fork并发处理多个client的请求
2.5. setsockopt
2.6. 使用select
3. 基于UDP协议的网络程序
4. UNIX Domain Socket IPC
5. 练习:实现简单的Web服务器
5.1. 基本HTTP协议
5.2. 执行CGI程序
A. 字符编码
1. ASCII码
2. Unicode和UTF-8
3. 在Linux C编程中使用Unicode和UTF-8
B. GNU Free Documentation License Version 1.3, 3 November 2008
参考书目
索引