1 / 75
文档名称:

第一章计算机系统概论.ppt

格式:ppt   大小:1,979KB   页数:75页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第一章计算机系统概论.ppt

上传人:2623466021 2019/1/8 文件大小:1.93 MB

下载得到文件列表

第一章计算机系统概论.ppt

文档介绍

文档介绍:第一章计算机系统概论 “计算机系统基础”课程的由来 “计算机系统基础”课程内容概要 计算机系统概述 计算机性能评价主要内容课程的由来课程内容概要课程教学安排及考试安排硬件和软件的基本组成程序的开发和执行过程计算机系统层次结构计算机性能评价用“系统思维”分析问题ISOC90标准下,在32位系统上以下C表达式的结果是什么?-2147483648<2147483647false(与事实不符)!Why?ISOC90标准下为true,Why?以下关系表达式结果呢?inti=-2147483648;i<2147483647true!Why?-2147483647-1<2147483647,结果怎样?理解该问题需要知道:编译器如何处理字面量高级语言中运算规则高级语言与指令之间的对应机器指令的执行过程机器级数据的表示和运算……用“系统思维”分析问题sum(inta[],unsignedlen){ int i,sum=0; for (i=0;i<=len–1;i++) sum+=a[i]; returnsum;}当参数len为0时,返回值应该是0,但是在机器上执行时,却发生访存异常。但当len为int型时则正常。Why?访问违例地址为何是0xC0000005?当用len=0调用sum函数时,其返回值应该是多少?理解该问题需要知道:高级语言中运算规则机器指令的含义和执行计算机内部的运算电路异常的检测和处理虚拟地址空间……若x和y为int型,当x=65535时,y=x*x;y的值为多少?y=-131071。Why?现实世界中,x2≥0,但在计算机世界并不一定成立。对于任何int型变量x和y,(x>y)==(-x<-y)总成立吗?当x=-2147483648,y任意(除-2147483648外)时不成立Why?在现实世界中成立,但在计算机世界中并不一定成立。用“系统思维”分析问题理解该问题需要知道:机器级数据的表示机器指令的执行计算机内部的运算电路用“系统思维”分析问题打印结果是什么?d=0,x=1072693248Why?doubled;voidp1(){d=;}intd=100;intx=200;intmain(){p1();printf(“d=%d,x=%d\n”,d,x);return0;}:机器级数据的表示变量的存储空间分配数据的大端/小端存储方式链接器的符号解析规则……用“系统思维”分析问题/*复制数组到堆中,count为数组元素个数*/intcopy_array(int*array,intcount){ inti; /*在堆区申请一块内存*/ int*myarray=(int*)malloc(count*sizeof(int)); if(myarray==NULL) return-1; for(i=0;i<count;i++) myarray[i]=array[i]; returncount;}当参数count很大时,则count*sizeof(int)会溢出。如count=230+1时,count*sizeof(int)=4。堆(heap)中大量数据被破坏!理解该问题需要知道:乘法运算及溢出虚拟地址空间存储空间映射……当count=230+1时,程序会发生什么情况?用“系统思维”分析问题代码段一:inta=0x80000000;intb=a/-1;printf("%d\n",b);运行结果为-2147483648代码段二:inta=0x80000000;intb=-1;intc=a/b;printf("%d\n",c);运行结果为“Floatingpointexception”,显然CPU检测到了溢出异常objdump反汇编代码,得知除以-1被优化成取负指令neg,故未发生除法溢出为什么两者结果不同!理解该问题需要知道:编译器如何优化机器级数据的表示机器指令的含义和执行计算机内部的运算电路除法错异常的处理……a/b用除法指令IDIV实现,但它不生成OF标志,那么如何判断溢出异常的呢?实际上是“除法错”异常#DE(类型0)Linux中,对#DE类型发SIGFPE信号用“系统思维”分析问题以下是一段C语言代码:#include<>main(){ doublea=10; printf("a=%d\n",a);}在IA-32上运行时,打印结果为a=0在x86-64上运行时,打印出来的a是一个不确定值为什么?理解该问题需要知道:IEEE754的表示X87FPU的体系结构IA-32和x86-64中过程调用的参数传递计算机内部的运算电路……用“系统思维”分析问题对于上述C语言函数,i=0~4时,fun(i)分别返回什么值?doublefun(inti){volatiledoubled[1]