深入理解计算机系统(第二版) 家庭作业 第七章

合集下载

深入理解计算机系统(第二版) 家庭作业答案

深入理解计算机系统(第二版) 家庭作业答案

int int_shifts_are_arithmetic(){int x = -1;return (x>>1) == -1;}2.63对于sra,主要的工作是将xrsl的第w-k-1位扩展到前面的高位。

这个可以利用取反加1来实现,不过这里的加1是加1<<(w-k-1)。

如果x的第w-k-1位为0,取反加1后,前面位全为0,如果为1,取反加1后就全是1。

最后再使用相应的掩码得到结果。

对于srl,注意工作就是将前面的高位清0,即xsra & (1<<(w-k) - 1)。

额外注意k==0时,不能使用1<<(w-k),于是改用2<<(w-k-1)。

int sra(int x, int k){int xsrl = (unsigned) x >> k;int w = sizeof(int) << 3;unsigned z = 1 << (w-k-1);unsigned mask = z - 1;unsigned right = mask & xsrl;unsigned left = ~mask & (~(z&xsrl) + z);return left | right;}int srl(unsigned x, int k){int xsra = (int) x >> k;int w = sizeof(int)*8;unsigned z = 2 << (w-k-1);return (z - 1) & xsra;}INT_MIN);}2.74对于有符号整数相减,溢出的规则可以总结为:t = a-b;如果a, b 同号,则肯定不会溢出。

如果a>=0 && b<0,则只有当t<=0时才算溢出。

如果a<0 && b>=0,则只有当t>=0时才算溢出。

深入理解计算机系统配套练习卷

深入理解计算机系统配套练习卷

深入理解计算机系统配套练习卷Chapter 11.1.0 字母a的ASCII码为97,那么love中各字母ASCII码之和是()A、99B、520C、438D、3601.2.0_1 在编译过程中,hell.c经过汇编阶段后生成文件为()A、hell.iB、hell.sC、hell.oD、hell.exe1.2.0_2 在编译过程中,hell.c经过()阶段生成hell.s。

A、预处理B、编译C、汇编D、链接1.4.1 下面哪一项不是I/O设备A、鼠标B、显示器C、键盘D、《深入理解计算机系统》1.4.2 数据可以不通过处理器直接从磁盘到达主存吗?DMA又是什么?A、可以;直接存储器存取B、可以;动态存储器存取C、不可以;直接存储器存取D、不可以;动态存储器存取Chapter 22.1.1_1 二进制串11010110对应的十六进制数是()A、0xx0B、0xD6C、0XC6D、0Xd52.1.1_2 十六进制数0x77对应的十进制数为()A、77B、117C、109D、1192.1.3 对于32位机器,char * 的字节数为()A、1B、2C、4D、82.1.4_1 使用小端法的机器,数字0x123678的高位字节是()A、0x12B、0x21C、0x78D、0x872.1.4_2 从使用小端法的机器读入数字0x1234,存入使用大端法的机器,这时高位字节是()A、0x12B、0x21C、0x34D、0x432.1.8 char a=0xdb, 则~a 的值为()A、0xdbB、0xbdC、0x24D、0x422.1.8 int a=1, b=2, 经运算a^=b^=a^=b 后结果为()A、a=3, b=2B、a=1, b=2C、a=2, b=1D、不知道2.1.10 int a = 3, 则a<<3 的结果为()A、3B、24C、12D、482.2.1 unsigned char 的最小值为()A、128B、255C、-127D、02.2.3 对长度为4位的整数数据,-5对应的补码编码为()A、1011B、1101C、0101D、10102.3.2 对长度为4的整数数据,x=[1010], y=[1100],x+y补码加法的结果为()A、1010B、0110C、1100D、10110Chapter 33.2.2 命令unix> gcc -O1 -C code.c 所生成文件相当于经编译过程中()阶段后的结果。

深入理解计算机系统配套练习卷终审稿)

深入理解计算机系统配套练习卷终审稿)

深入理解计算机系统配套练习卷文稿归稿存档编号:[KKUY-KKIO69-OTM243-OLUI129-G00I-FDQS58-《深入》题目李永伟第一章题目我们通常所说的“字节”由_____个二进制位构成。

A 2B 4C 6D 8微型计算机硬件系统中最核心的部位是__。

A 主板B. CPUC 内存处理器D I/O设备CPU中有一个程序计数器(又称指令计数器)。

它用于存储__。

A.保存将要提取的下一条指令的地址B.保存当前CPU所要访问的内存单元地址C.暂时存放ALU运算结果的信息D.保存当前正在执行的一条指令下列叙述中,正确的是A.CPU能直接读取硬盘上的数据B.CPU能直接存取内存储器C.CPU由存储器、运算器和控制器组成D.CPU主要用来存储程序和数据“32位微型计算机”中的32指的是()。

A.微机型号B.内存容量C.运算速度D.机器字长第二章题目求下列算是得值,结果用十六进制表示:0x503c + 64 =______A. 0x507cB.0x507bC. 0x506cD.0x506b将十进制数167用十六进制表示的结果是______A.0XB7B.0XA7C.0XB6D.0XA6位级运算:0x69 & 0x55 的结果是_______A.0X40B.0X41C.0X42D.0X43逻辑运算!!0x41的结果用十六进制表示为_____A.0X00B.0X41C.0X14D.0X01位移运算:对参数则x>>4(算术右移)的结果是______A.[01010000]B.[00001001]C.D.截断:假设一个4位数值(用十六进制数字0~F表示)截断到一个3位数值(用十六进制0~7表示),[1011]截断后的补码值是___A.-3B.3C.5D.-5浮点表示:数字5用浮点表示时的小数字段frac的解释为描述小数值f,则f=______A.1/2B.1/4C.1/8D.1/162.4.2 _25-8数字5用浮点表示,则指数部分E=_____A.1B.2C.3D.4数字5用浮点表示,则指数部分位表示为___A .2^ (K-1)+1B. 2^K+1C. 2^ (K-1)D. 2^K浮点运算:(3.14+1e10)-1e10 在计算机中的运算结果为A .3.14B .0C .1e10D .0.0第三章题目计算Imm(E b ,E i ,s)这种寻址模式所表示的有效地址:A .Imm + R[E b ]+R[E s ] *sB. Imm + R[E b ]+R[Es]C. Imm + R[E b ]D. Imm +R[E s ]下面这种寻址方式属于_____M[R[E b ]]A. 立即数寻址B. 寄存器寻址C. 绝对寻址D. 间接寻址假设初始值:%dh=CD,则执行下面一条指令后,%eax的值为多少?MOVB %DH ,%ALA. %eax= 987654CDB. %eax= CD765432C %eax= FFFFFFCDD. %eax= 000000CD假设初始值:%dh=CD,则执行下面一条指令后,%eax的值为多少?MOVSBL %DH ,%ALA. %eax= 987654CDB. %eax= CD765432C %eax= FFFFFFCDD. %eax= 000000CD假设初始值:%dh=CD,则执行下面一条指令后,%eax的值为多少?MOVZBL %DH ,%ALA. %eax= 987654CDB. %eax= CD765432C %eax= FFFFFFCDD. %eax= 000000CD假设寄存器%eax的值为x,%ecx的值为y,则指明下面汇编指令存储在寄存器%edx中的值Leal (%eax ,%ecx),%edxA. xB yC x + yD x –y假设寄存器%eax的值为x,%ecx的值为y,则指明下面汇编指令存储在寄存器%edx中的值Leal 9(%eax ,%ecx , 2),%edxA. x +y +2B 9*(x + y + 2)C 9 + x + y +2D 9 + x + 2y条件码CF表示______A 零标志B 符号标志C 溢出标志D进位标志条件码OF表示______A 零标志B 符号标志C 溢出标志D进位标志在奔腾4上运行,当分支行为模式非常容易预测时,我们的代码需要大约16个时钟周期,而当模式是随机时,大约需要31个时钟周期,则预测错误处罚大约是多少?A. 25B. 30C. 35D. 40第五章题目指针xp指向x,指针yp指向y,下面是一个交换两个值得过程:Viod swap (int *xp ,int *yp){*xp = *xp + *yp //x+y*yp = *xp - *yp //x+y-y=x*xp = *xp - *yp //x+y-x=y}考虑,当xp=yp时,xp处的值是多少A . xB. yC . 0D.不确定考虑下面函数:int min( int x , int y ) { return x < y x : y;}int max( int x , int y ){ return x < y y : x; }viod incr (int *xp ,int v) { *xp += v;}int square( int x ) { return x *x; }下面一个片段调用这些函数:for( i = min(x,y) ;i< max(x,y); incr(&i,1))t +=square(i) ;假设x等于10,y等于100.指出该片段中4个函数 min (),max(),incr(),square()每个被调用的次数一次为A.91 1 90 90B.1 91 90 90C.1 1 90 90D.90 1 90 90考虑下面函数:int min( int x , int y ) { return x < y x : y;}int max( int x , int y ){ return x < y y : x; }viod incr (int *xp ,int v) { *xp += v;}int square( int x ) { return x *x; }下面一个片段调用这些函数:for( i = max(x,y) -1;i >= min(x,y); incr(&i,-1))t +=square(i) ;假设x等于10,y等于100.指出该片段中4个函数 min (),max(),incr(),square()每个被调用的次数一次为A.91 1 90 90B.1 91 90 90C.1 1 90 90D.90 1 90 90考虑下面函数:int min( int x , int y ) { return x < y x : y;}int max( int x , int y ){ return x < y y : x; }viod incr (int *xp ,int v) { *xp += v;}int square( int x ) { return x *x; }下面一个片段调用这些函数:Int low = min(x,y);Int high = max(x,y);For(i= low;i<high;incr(&i,1)t +=square(i);假设x等于10,y等于100.指出该片段中4个函数 min (),max(),incr(),square()每个被调用的次数依次为A.91 1 90 90B.1 91 90 90C.1 1 90 90D.90 1 90 90假设某个函数有多个变种,这些变种保持函数的行为,又具有不同的性能特性,对于其中的三个变种,我们发现运行时间(以时钟周期为单位)可以用下面的函数近似的估计版本1:60+35n版本2:136+4n版本3:157+1.25n问题是当n=2时,哪个版本最快?A.1B.2C.3D.无法比较假设某个函数有多个变种,这些变种保持函数的行为,又具有不同的性能特性,对于其中的三个变种,我们发现运行时间(以时钟周期为单位)可以用下面的函数近似的估计版本1:60+35n版本2:136+4n版本3:157+1.25n问题是当n=5时,哪个版本最快?A.1B.2C.3D.无法比较假设某个函数有多个变种,这些变种保持函数的行为,又具有不同的性能特性,对于其中的三个变种,我们发现运行时间(以时钟周期为单位)可以用下面的函数近似的估计版本1:60+35n版本2:136+4n版本3:157+1.25n问题是当n=10时,哪个版本最快?A.1B.2C.3D.无法比较下面有一个函数:double poly( double a[] ,double x, int degree){long int i;double result = a[0];double xpwr =x;for(i=1 ; i<=degree; i++){result += a[i] *xpwr;xpwr =x *xpwr;}return result;}当degree=n,这段代码共执行多少次加法和多少次乘法?A.n nB.2n nC.n 2nD.2n 2n一名司机运送一车货物从A地到B地,总距离为2500公里。

计算机操作系统教程(第二版)(章 (7)

计算机操作系统教程(第二版)(章 (7)

第7章 Linux操作系统简介
伯克利(Berkeley)的加州大学是学术用户中的一个。在这 里,UNIX得到了计算机系统研究小组(CSRG)的广泛使用,并 且对它进行了修改,从而产生了UNIX的一大系列——伯克利 软件开发(BSD)UNIX。除了AT&T所提供的UNIX系列之外, BSD是最有影响力的UNIX系列。 BSD在UNIX中增加了很多 显著特性,例如TCP/IP网络,更好的用户文件系统(UFS)等, 并且改进了AT&T的内存管理代码。在用户需求和用户编程的 促进下,BSD风格的UNIX一般要比AT&T的UNIX更具有创新 性,而且改进也更为迅速。
第7章 Linux操作系统简介
(4) 健壮性和安全性(Robustness and Security)。Linux必须 健壮、稳定,系统自身应该没有任何缺陷,并且它还应该可以 保护进程(用户),以防止互相干扰。保证Linux健壮性和安全 性的一个重要的因素是其开放的开发过程,它可以被看作是一 种广泛而严格的检查。内核中的每一行代码、每一个改变都会 很快由世界上数不清的程序员检验。还有一些程序员专门负责 寻找和报告潜在的缺陷。以前检查中所没有发现的缺陷可以通 过这些人的努力来定位、修复,而这种修复又合并进主开发树, 以使所有的人都能够受益。
放的,是符合标准规范的32位(在64位CPU上是64位)操作系 统。Linux拥有现代操作系统所具有的功能,例如:真正的抢 先式多任务处理;支持多用户;提供内存保护机制;支持虚拟 内存;支持对称多处理SMP(Symmetric Multiprocessing); 符合POSIX标准;提供联网功能以及大量的网络应用;是图形 用户接口和桌面环境(实际上桌面环境并不只一个);保证速 度和稳定性要求等。

深入理解计算机系统第七章

深入理解计算机系统第七章

How Linkers Use Static Libraries to Resolve References
For each input file f on the command line, the linker determines if f is an object file or an archive.If f is an object file, the linker adds f to E, updates U and D to reflect the symbol definitions and references in f, and proceeds to the next input file. If f is an archive, the linker attempts to match the unresolved symbols in U against the symbols defined by the members of the archive. If some archive member, m, defines a symbol that resolves a reference in U, then mis added to E, and the linker updates U and D to reflect the symbol definitions and references inm. This process iterates over the member object files in the archive until a fixed point is reached where U and D no longer change. At this point, any member object files not contained in E are simply discarded and the linker proceeds to the next input file. If U is nonempty when the linker finishes scanning the input files on the command line, it prints an error and terminates. Otherwise it merges and relocates the object files in E to build the output executable file

深入理解计算机系统(第二版)家庭作业问题详解

深入理解计算机系统(第二版)家庭作业问题详解

int saturating_add(int x, int y){int w = sizeof(int)<<3;int t = x + y;int ans = x + y;x>>=(w-1);y>>=(w-1);t>>=(w-1);int pos_ovf = ~x&~y&t;int neg_ovf = x&y&~t;int novf = ~(pos_ovf|neg_ovf);return(pos_ovf & INT_MAX) | (novf & ans) | (neg_ovf & INT_MIN); }2.74对于有符号整数相减,溢出的规则可以总结为:t = a-b;如果a, b 同号,则肯定不会溢出。

如果a>=0 && b<0,则只有当t<=0时才算溢出。

如果a<0 && b>=0,则只有当t>=0时才算溢出。

不过,上述t肯定不会等于0,因为当a,b不同号时:1) a!=b,因此a-b不会等于0。

2) a-b <= abs(a) + abs(b) <= abs(TMax) + abs(TMin)=(2^w - 1)所以,a,b异号,t,b同号即可判定为溢出。

int tsub_ovf(int x, int y){int w = sizeof(int)<<3;int t = x - y;x>>=(w-1);y>>=(w-1);t>>=(w-1);return(x != y) && (y == t);}顺便整理一下汇编中CF,OF的设定规则(个人总结,如有不对之处,欢迎指正)。

t = a + b;CF: (unsigned t) < (unsigned a) 进位标志OF: (a<0 == b<0) && (t<0 != a<0)t = a - b;CF: (a<0 && b>=0) || ((a<0 == b<0) && t<0) 退位标志OF: (a<0 != b<0) && (b<0 == t<0)汇编中,无符号和有符号运算对条件码(标志位)的设定应该是相同的,但是对于无符号比较和有符号比较,其返回值是根据不同的标志位进行的。

深入理解计算机系统 第二版 习题答案

深入理解计算机系统 第二版 习题答案
Computer Systems: A Programmer’s Perspective Instructor’s Solution Manual 1
Randal E. Bryant David R. O’Hallaron
December 4, 2003
1Copyright c 2003, R. E. Bryant, D. R. O’Hallaron. All rights reserved.
4}
5
6 void show_long(long int x)
7{
8
show_bytes((byte_pointer) &x, sizeof(long));
9}
code/data/show-ans.c
1
2
CHAPTER 1. SOLUTIONS TO HOMEWORK PROBLEMS
10
11 void show_double(double x)
12 {
13
show_bytes((byte_pointer) &x, sizeof(double));
14 }
code/data/show-ans.c
Problem 2.41 Solution: There are many ways to solve this problem. The basic idea is to create some multibyte datum with different values for the most and least-significant bytes. We then read byte 0 and determine which byte it is. In the following solution is to create an int with value 1. We then access its first byte and convert it to an int. This byte will equal 0 on a big-endian machine and 1 on a little-endian machine.

深入理解计算机系统第2版课程设计

深入理解计算机系统第2版课程设计

深入理解计算机系统第2版课程设计选题背景计算机科学教育中,操作系统是重要的课程之一。

其中经典教材《深入理解计算机系统》第2版(英文名:Computer Systems: A Programmer’s Perspective, 2nd Edition)提供了系统性的学习框架,涵盖了计算机系统所有的关键概念,从硬件到操作系统到应用程序。

其通过清晰易懂的语言,详细深入的解释和广泛的范例来讲解分类程序开发,内存管理,虚拟存储,网络通信,操作系统和处理器等内容,使得学生能够全面理解计算机的性能和设计。

为了进一步加强学生的理论知识和实际操作能力,我们针对《深入理解计算机系统》第2版编写本课程设计,旨在让学生通过设计实际的系统模块来深入理解计算机系统,提高其操作系统和编程方面的技能。

课程设计目标•深入理解计算机系统的关键概念,包括进程管理、内存管理、文件系统、网络通信和处理器等。

•学习使用C语言进行系统级编程的方法,理解底层代码的编写方式。

•提高学生针对实际问题设计和开发系统程序的能力。

设计内容设计1:虚拟内存管理系统•理解虚拟内存的概念和实现机制。

•学习实现虚拟内存管理系统的方法,包括页面置换算法、页面故障处理和虚拟地址映射等。

•设计一个简单的虚拟内存管理系统,并实现其代码。

设计2:多进程文件共享•理解多进程文件共享的概念和实现机制。

•学习使用fork系统调用创建子进程的方法,以及同时读取和写入文件的方法。

•设计一个简单的多进程文件共享系统,并实现其代码。

设计3:处理器调度程序•理解处理器调度程序的概念和实现机制。

•学习实现处理器调度程序的方法,包括进程状态的转换、进程优先级算法和时间片轮转算法等。

•设计一个简单的处理器调度程序,并实现其代码。

设计要求•设计要求每个设计至少有算法模块、代码实现,且需使用C语言完成。

•为了检验设计结果的正确性,每个设计需提供自行设计的测试用例。

•课程结束时需收集所有设计的源代码和报告文档。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档