Linux GNU C 程序观察pdf下载pdf下载

Linux GNU C 程序观察百度网盘pdf下载

作者:
简介:本篇主要提供Linux GNU C 程序观察pdf下载
出版社:
出版时间:2020-05
pdf下载价格:9.00¥


预览


内容介绍

编辑推荐

观察从C程序到可执行文件,以及在系统中运行的全过程。

内容简介

  《Linux GNU C 程序观察》所讨论的内容是“C语言程序设计”类课程的后续知识,涉及C程序在Linux环境下经过GCC编译/链接生成可执行文件以及在系统中运行的问题。《Linux GNU C 程序观察》能使读者在面对C程序的工程实践问题时,做到心中有数、处处不存疑。
  全书共7章,第1章介绍环境准备,第2章介绍C程序的预处理、编译、汇编和链接的全过程,并介绍了一点关于GCC编译命令及编译选项、GDB调试初步概念,第3章专注于编译环节,即从C到汇编的转换,第4章专注于链接过程,第5章介绍可执行文件在系统中运行时,观察进程与系统的关系、进程对库的调用、程序异常行为等问题,第6、7章介绍一些性能剖析方法,包括GCC自带工具、库函数打桩方法、valgrind及perf工具的简单使用等,第8章介绍一个综合性的实例,即如何将HDFS文件系统使用的gzip压缩,从利用zlib库在CPU上计算转换成利用FPGA加速卡的过程。该实例涉及库的使用和修改、makefile以及相应的C程序实现等多方面知识,让读者从一个工程需求的角度考察其方案与实现。每章后面都有一些练习题,其中有一个与zlib库相关的任务贯穿了各章,读者通过这个连贯的练习将各章知识融会贯通。
  《Linux GNU C 程序观察》可以作为计算机及相关专业高年级本科生或研究生学习Linux环境下的C程序设计教学用书,对希望深入了解Linux内核的读者和相关开发人员也非常有参考价值。

作者简介

深圳大学计算机与软件学院副教授,广东省国产高性能计算系统工程技术研究中心副主任、深圳市服务计算与应用重点实验室常务副主任,长期从事高性能计算研究。华中科技大学计算机科学与技术博士学位。著《OpenMP编译原理及实现技术》《Linux技术内幕》《操作系统之编程观察》译《Intel Parallel Studio环境下的并行程序设计》。发表论文40多篇(含SCI/EI索引多篇),承担和参与国家、省、市科研项目多项,2009-2010年参与基于龙芯3多核处理器的万亿次个人高性能计算机KD-60研制2011~2012年参与基于龙芯3号8核处理器的普及型高性能计算机KD-90研制,上述成果通过安徽省科技厅鉴定。2004-今,深圳大学计算机与软件学院从事科研与教学工作,本科及研究生课程:《操作系统》《现代操作系统》《操作系统课程设计》《计算机体系结构》《Intel并行编程工具》等。

内页插图

目录

第1章 实验环境构建
1.1 安装Linux
1.1.1 下载CentoS7
1.1.2 CentOS7安装
1.2 虚拟机安装Linux
1.2.1 VirtuaIBox安装
1.2.2 虚拟机配置
1.2.3 虚拟机安装Linux
1.3 ssh远程终端访问
1.3.1 PuTTY客户端
1.3.2 无密码登录
1.3.3 Xming图形终端
1.4 初次接触Linux
1.4.1 简单操作
1.4.2 运行HelloWorld程序
1.5 小结

第2章 程序编译与运行
2.1 编译的各阶段
2.1.1 源代码
2.1.2 预处理
2.1.3 编译
2.1.4 汇编
2.1.5 链接
2.1.6 GCC编译驱动
2.2 GCC基本用法
2.2.1 C语言标准
2.2.2 库的使用
2.2.3 搜索路径
2.2.4 编译警告
2.3 GDB调试
2.3.1 代码准备
2.3.2 运行代码
2.3.3 查看变量和内存
2.3.4 图形前端TUI
2.4 小结
练习

第3章 数据、运算与控制
3.1 x86-64 ISA
3.1.1 寄存器
3.1.2 内存空间与I/O空间
3.2 数据
3.2.1 数据大小、字节序
3.2.2 数组、结构体和联合体
3.2.3 数据布局
3.3 运算
3.3.1 数据传送
3.3.2 算术/逻辑运算
3.3.3 加载有效地址
3.4 控制
3.4.1 条件跳转
3.4.2 函数调用
……
第4章 链接与可执行文件
第5章 链接脚本与makefile
第6章 程序运行
第7章 性能剖析
第8章 综合实例:HDFS中实现zlib库的旁路
附录

前言/序言

  我们在当前的c语言程序设计教学工作中,对c语言的语法和编程技术虽然都已经讨论得非常充分,但是作为计算机的“系统观”的建立,只能说仅完成了一半的任务。从C语言如何转换到汇编语言进而生成机器码形式的可执行文件,以及可执行文件如何装入内存并在操作系统环境中运行的细节,对大多数完成本科课程学习的学生而言,仍未达到解惑的程度。学生也许可以通过在网络上找到的业界大牛们提供的零散材料,自行建立起相应的认识,但这毕竟是一个耗时和低效的学习过程。
  本书希望将上述知识,组织成一个相对完整、便于学习与实践的材料,在计算机系统课程学习中(例如深圳大学的“计算机系统2”)作为实验补充材料,让学生全面接触从C语言转换到汇编、进而生成机器码形式的可执行文件直至运行的全过程。在这种学习安排下,即使学生未修学编译原理课程,也能大致理解编译过程所使用的代码转换模板、链接中的符号解析和重定位等知识。除此之外,本书也介绍了程序在系统中运行的各种行为、代码调试和性能剖析工具的使用,对程序生成过程和运行过程都进行细致的观察——类似于电路与系统课程使用的万用表、示波器和频谱仪。有了这些“测量工具”后,C语言的实验教学才能从当前的”犹抱琵琶半遮面”的境况,变得相对完整起来。