linux编程入门2.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《linux编程入门2.pdf》由会员分享,可在线阅读,更多相关《linux编程入门2.pdf(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、CH01 A Tour of Computer Systems计算机系统的五个事实程序生命周期高速缓存与存储器层次结构操作系统管理硬件2010_Spring_csapppe.cqnu2 Reality#1:Ints are not Integers,Floats are not Reals计算机系统的五个事实.1Is x2 0?Floats:Yes!Ints:40000*40000 -1600000000 500000*500000 -?Is(x+y)+z =x+(y+z)?Unsigned&Signed Ints:Yes!Floats:(1e20+-1e20)+3.14-3.14 1e20+
2、(-1e20+3.14)-?3计算机算术不能产生随机值 算术操作具有重要的数学性质结论:需要理解哪种抽象应用在哪个上下文中。对编译器的编写者和重要应用的编程者都是重要的问题。计算机系统的五个事实.1不能想当然地认为具有通常的特性由于表示的有限性整数操作要满足“环”的特性:交换律,结合律,分配律浮点操作要满足“有序”的特性:单调性,值的正负号4Reality#2:Youve got to know assembly可能你永远不会用汇编语言写程序编译器比人更好一些,也更细致一些理解汇编是解释机器级执行模型的钥匙存在 bugs 的程序行为导致高级语言模型失效调优程序性能需要理解程序源代码的低效实现系
3、统软件的需要:a.编译器以机器码作为目标 b.操作系统必须管理进程状态计算机系统的五个事实.25Reality#3:Memory Matters内存不是无限的必须分配和管理内存许多应用程序是内存受限的内存引用 bugs 尤其致命在时间和空间上影响都很大计算机系统的五个事实.3内存性能不是始终如一的高速缓存和虚拟存储效应会极大地影响程序性能修改程序以适合存储系统特性可以带来极大的速度提升6Memory Referencing ErrorsC 和 C+没有提供任何的内存保护数组引用越界无效指针值滥用 malloc/free会导致难缠的 bugs是否有影响依赖于系统和编译器bugs 的作用在时间上较
4、远损坏的对象逻辑上与正在访问的对象无关bug 的影响可能在其产生很长时间后才观察到。计算机系统的五个事实.3如何处理:使用 Java,Lisp 或机器语言编程;理解可能发生什么样的交互;使用或开发检查引用错误的工具7Memory Performance Exampleint sum_array(int aMN)int i;int j;int sum=0;for(i=0;i M;i+)for(j=0;j N;j+)sum+=aij;return sum;计算机系统的五个事实.3int sum_array(int aMN)int i;int j;int sum=0;for(j=0;j N;j+)f
5、or(i=0;i N;i+)sum+=aij;return sum;8Reality#4:Theres more to performance than asymptotic complexity其他与性能有关的不变因素依赖于如何编写代码,很容易看到 10:1 的性能范围必须在多个层次上优化:算法、数据表示、过程和循环要优化性能必须深入理解系统程序如何被编译和执行如何测量程序性能并确定瓶颈如何提高性能而不用破环代码的模块性和一般性计算机系统的五个事实.49Reality#5:Computers do more than execute programs计算机需要数据输入输出I/O 系统对程序可
6、靠性和性能具有决定性的作用计算机通过网络进行通信网络存在时,许多系统级的问题就出现了多个独立进行的并发操作使用不可靠的媒体复制跨平台的兼容性复合的性能问题。计算机系统的五个事实.5CH01 A Tour of Computer Systems计算机系统的五个事实程序生命周期高速缓存与存储器层次结构操作系统管理硬件2010_Spring_csapppe.cqnu11Information is bits+contexthello 程序的生命从源程序 hello.c 开始,hello.c 是一个 0,1bit 序列现代系统使用 ASCII 编码来表示文本字符,即使用 1 byte 的二进制数来对文
7、本字符编码;hello.c 以字节序列的方式存储在文件中的;由 ASCII 字符构成的文件称为文本文件;而其他文件则称为二进制文件,区分的方法是读取文件时的上下文 context;可见,文件的信息就是位+上下文。程序的生命周期.信息计算机中传输的数据,将 8bit 组成一组,称为 byte(字节)虽然文件都是 bit 组成的序列,但系统(如 linux)或程序可根据文件头部信息来识别文本文件和二进制文件:通常文本文件不含头部信息,而二进制文件包含特殊的头部信息。12谁在调用 gcc程序的生命周期.程序的编译hello.c 的编译和执行是在 shell 中调用 gcc 编译程序来完成,shell
8、 是一个命令解释器程序,用于执行可执行命令或程序。常见的 shell:Bash、TC shell;/Linux Bourne shell、C shell Korn shell/UNIX13Shell 命令的格式程序的生命周期.程序的编译命令的格式:command parameter如果参数以-打头,则该参数是选项,选项名为单个字母或数字如果多个选项均不要求值的话,它们可以集中放在一个-之后作为一个单词,因而-abc 等价于-a-b-c选项可以要求有值。如 gcc 的-o 选项要求一个值:输出文件名选项和它的值可以分开或不分开。因此-o foo 等价于-ofoo参数-终止所有选项。任何后继参数均
9、视为非选项参数,即使它们以-打头也如此。由一个短横线字符组成的单词按非选项参数解释通常,选项先于其他非选项参数14Shell 的功能程序的生命周期.程序的编译在 shell 中输入命令或程序名回车后,其典型执行流程:读取终端输入;解释执行;输出(到终端、文件或其他程序等等)shell 还是一门编程语言,可以组合各个 UNIX 工具程序。15程序编译的 4 阶段程序的生命周期.程序的编译作业 1:安装 linux 操作系统,完成上面的实验;搜索常见的可执行文件格式,作出简要说明。Pre-processor(cpp)hello.i Compiler(cc1)hello.sAssembler(as)
10、hello.oLinker(ld)hellohello.cSourceprogram(text)Modifiedsourceprogram(text)Assemblyprogram(text)Relocatableobjectprograms(binary)Executableobjectprogram(binary)printf.old hello.o /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o -dynamic-linker /lib/ld-linux.so.2 -lc -o hello /gcc hello.c -o hello cpp
11、 hello.c -o hello.i /gcc hello.c -o hello.i -E/usr/lib/gcc/i586-mandriva-linux-gnu/4.4.1/cc1 hello.i -o hello.s /gcc hello.c -o hello.s -S as hello.s -o hello.o /gcc hello.c -o hello.o -c16程序编译说明程序的生命周期.程序的编译cpp:主要用于处理预处理指令。cc1:用于编译预处理程序,得到汇编语言程序。汇编语言为不同高级语言的不同编译器提供了通用的输出语言。as:将汇编程序翻译为机器语言指令程序。这些指令按
12、可重定位目标程序的格式存放在文件 hello.o 中。hello.o 中只包含了程序员写的指令信息模块,没有包含其调用的系统程序模块(如 stdio 库函数模块)。ld:将应用程序、需要调用的系统程序模块、其他运行时模块(crt*.o)链接起来,使之成为真正可以执行的完整程序。作业 2:搜索 crt*.o 的用途,简要说明。17Shell 执行用户程序程序的生命周期.程序的执行Shell 除了执行可以执行内置命令之外,还可以加载和执行用户自己编写的程序。rootlocal./hellohello,world!rootlocal 如果键入 shell 的命令行的第一个单词不是一个内置的命令,sh
13、ell 就会假设这是一个可执行文件的名字,会到该可执行文件的路径上去加载和执行该文件。但要了解运行 hello 程序时,系统是如何动作的,就需要理解一个典型的计算机硬件组织。18Intel Pentium 系统的结构程序的生命周期.程序的执行MainmemoryI/O bridgeBus interfaceALURegister fileCPUSystem busMemory busDisk controllerGraphicsadapterUSBcontrollerMouse KeyboardDisplayDiskI/O busExpansion slots forother devices
14、 suchas network adaptershello executable stored on diskPC物理上、逻辑上的组成系统的硬件组成19Pentium 的总线和 I/O程序的生命周期.程序的执行总线(bus):连接 2 个或多个部件的通信线路。一般由多条通信线路组成,常见的总线类型有数据总线 DB、地址总线 AB 和控制总线 CB 等 3 类。例如,DB 通常包括 8 位、16 位和 32 位根线,这些线的数目称为数据总线的宽度,也是 CPU 可以一次处理的二进制位的个数,这就是常常所说的字(word)。不同的计算机体系中,字长也不尽相同。I/O 设备是系统与外界联系的通道。每
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux 编程 入门
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内