(完整word版)计算机系统第三章答案剖析(word文档良心出品)
计算机系统基础第三章答案
习题3.参考答案:(1)后缀:w,源:基址+比例变址+偏移,目:寄存器(2)后缀:b,源:寄存器,目:基址+偏移(3)后缀:l,源:比例变址,目:寄存器(4)后缀:b,源:基址,目:寄存器(5)后缀:l,源:立即数,目:栈(6)后缀:l,源:立即数,目:寄存器(7)后缀:w,源:寄存器,目:寄存器(8)后缀:l,源:基址+变址+偏移,目:寄存器4.参考答案:(1)源操作数是立即数0xFF,需在前面加‘$’(2)源操作数是16位,而长度后缀是字节‘b’,不一致(3)目的操作数不能是立即数寻址(4)操作数位数超过16位,而长度后缀为16位的‘w’(5)不能用8位寄存器作为目的操作数地址所在寄存器(6)源操作数寄存器与目操作数寄存器长度不一致(7)不存在ESX寄存器(8)源操作数地址中缺少变址寄存器5.参考答案:表3.12 题5用表src_type dst_type 机器级表示char int movsbl %al, (%edx)int char movb %al, (%edx)int unsigned movl %eax, (%edx)short int movswl %ax, (%edx)unsigned char unsigned movzbl %al, (%edx)char unsigned movsbl %al, (%edx)int int movl %eax, (%edx)6.参考答案:(1)xptr、yptr和zptr对应实参所存放的存储单元地址分别为:R[ebp]+8、R[ebp]+12、R[ebp]+16。
(2)函数func的C语言代码如下:void func(int *xptr, int *yptr, int *zptr){int tempx=*xptr;int tempy=*yptr;int tempz=*zptr;*yptr=tempx;*zptr = tempy;*xptr = tempz;}7.参考答案:(1)R[edx]=x(2)R[edx]=x+y+4 (3)R[edx]=x+8*y (4)R[edx]=y+2*x+12 (5)R[edx]=4*y (6)R[edx]=x+y8.参考答案:(1)指令功能为:R[edx]←R[edx]+M[R[eax]]=0x 00000080+M[0x8049300],寄存器EDX 中内容改变。
计算机系统结构课件:第三章作业答案
2367 23
时间t 1 2 3 4 5 6 7 8 9 10 11 12 块地址流 6 2 4 1 4 6 3 0 4 5 7 3
C0
4444 44 4 4 4 4
C1பைடு நூலகம்
111 10 0 5 5 5
C2 6 6 6 6 6 6 6 6 6 6 7 7
C3
22222 33 3 3 3 3
LFU
调调调调命命 替 替命 替 替 命 进进进进中中 换 换中 换 换 中
(2) 写出Cache地址的格式,并标出各字段的长度。
(3) 画出主存与Cache之间各个块的映象对应关系。
(4) 如果Cache的各个块号为C0、C1、C2和C3,列出程 序执行过程中Cache的块地址流情况。
(5) 如果采用FIFO替换算法,计算Cache的块命中率。
(6)采用LFU替换算法,计算Cache的块命中率。
合适。
C2 6 6 6 6 6 6 3 3 3 3 3 3
C3
22222 22 2 2 7 7
FIFO 调调调调命命 替 替替 替 替 命 进进进进中中 换 换换 换 换 中
命中3次
命中率H=3/12=25%
2、假设机器的时钟周期为10ns,Cache失效时的访存时 间为20个时钟周期,Cache的访问时间为一个时钟周 期。
命中4次 命中率H=4/12=33.3%
Cache的块地址流情况: C2 C3 C0 C1 C0 C2 C3 C1 C0 C1 C2 C3
时间t 1 2 3 4 5 6 7 8 9 10 11 12 块地址流 6 2 4 1 4 6 3 0 4 5 7 3
C0
4444 40 0 5 5 5
C1
计算机系统结构课后答案unit3
第3章总线、中断与输入输出系统3.1.简要举出集中式串行,定时查询和独立请求3种总线控制方式的优缺点。
同时分析硬件产生故障时通讯的可靠性。
答:集中式串行链连接方式。
其过程为:①所有部件都经公共的“总线请求”线向总线控制器发使用总线申请。
②当“总线忙”信号未建立时,“总线请求”才被总线控制器响应,送出“总线可用”信号,它串行地通过每个部件。
③如果某部件未发过“总线请求”,则它将“总线可用”信号往下一部件转,如果某部件发过“总线请求”,则停止“总线可用”信号的传送。
④该部件建立“总线忙”,并除去“总线请求”,此时该部件获得总线使用权,准备传送数据。
⑤数据传送期间,“总线忙”维持“总线可用”的建立。
⑥传送完成后,该部件去除“总线忙”信号和“总线可用”信号。
⑦当“总线请求”再次建立时,就开始新的总线分配过程。
优点:①选择算法简单;②控制总线数少;③可扩充性好;④可靠性高。
缺点:①对“总线可用”线及其有关电路失效敏感,②不灵活;③总线号传送速度慢。
集中式定时查询方式,过程:①总线上每个部件通过“总线请求”发请求。
②若“总线忙”信号未建立,则计数器开始计数,定时查询个部件,以确定是谁发的请求。
③当查询线上的计数值与发出请求的部件号一致时,该部件建立“总线忙”,计数停止,查询也停止。
除去“总线请求”,该部件获得总线使用权。
④“总线忙”维持到数据传送完毕。
⑤数据传送完,去除“总线忙”。
⑥当“总线请求”线上有新的请求,就开始下一个总线分配过程。
优点:①优先次序灵活性强;②可靠性高。
缺点:①控制线数较多;②扩展性较差;③控制较为复杂;④总线分配受限于计数信号,不能很高。
集中式独立请求方式,过程:①每个部件有一对“总线请求”和“总线准许”线。
②每个部件使用“总线请求”发中请,当“总线已分配”无信号时,总线控制器根据某种算法对同时送来的多个请求进行仲裁,以确定哪个部件使用总线,信号从“总线准许”送回该部件,去除该部件的“总线请求”,建立总线已分配”。
计算机操作系统(第3版)课后习题答案(完整版)【精选文档】
第一章1.设计现代OS的主要目标是什么?答:(1)有效性(2)方便性(3)可扩充性(4)开放性2.OS的作用可表现在哪几个方面?答:(1)OS作为用户与计算机硬件系统之间的接口(2)OS作为计算机系统资源的管理者(3)OS实现了对计算机资源的抽象3.为什么说OS实现了对计算机资源的抽象?答:OS首先在裸机上覆盖一层I/O设备管理软件,实现了对计算机硬件操作的第一层次抽象;在第一层软件上再覆盖文件管理软件,实现了对硬件资源操作的第二层次抽象。
OS 通过在计算机硬件上安装多层系统软件,增强了系统功能,隐藏了对硬件操作的细节,由它们共同实现了对计算机资源的抽象。
4.试说明推动多道批处理系统形成和发展的主要动力是什么?答:主要动力来源于四个方面的社会需求与技术发展:(1)不断提高计算机资源的利用率;(2)方便用户;(3)器件的不断更新换代;(4)计算机体系结构的不断发展。
5.何谓脱机I/O和联机I/O?答:脱机I/O 是指事先将装有用户程序和数据的纸带或卡片装入纸带输入机或卡片机,在外围机的控制下,把纸带或卡片上的数据或程序输入到磁带上。
该方式下的输入输出由外围机控制完成,是在脱离主机的情况下进行的。
而联机I/O方式是指程序和数据的输入输出都是在主机的直接控制下进行的。
6.试说明推动分时系统形成和发展的主要动力是什么?答:推动分时系统形成和发展的主要动力是更好地满足用户的需要。
主要表现在:CPU 的分时使用缩短了作业的平均周转时间;人机交互能力使用户能直接控制自己的作业;主机的共享使多用户能同时使用同一台计算机,独立地处理自己的作业.7.实现分时系统的关键问题是什么?应如何解决?答:关键问题是当用户在自己的终端上键入命令时,系统应能及时接收并及时处理该命令,在用户能接受的时延内将结果返回给用户.解决方法:针对及时接收问题,可以在系统中设置多路卡,使主机能同时接收用户从各个终端上输入的数据;为每个终端配置缓冲区,暂存用户键入的命令或数据。
计算机操作系统三章习题答案
第三章处理机调度与死锁``030110011020101进程调度是从选择一个进程投入运行。
A.就绪队列B.等待队列C.作业后备队列D.提交队列``030110011020100A``030110022020101支持多道程序设计的操作系统在运行过程中,不断地选择新进程运行来实现CPU的共享,下列选项中,不是引起操作系统选择新进程的直接原因。
A.运行进程的时间片用完B.运行进程出错C.运行进程要等待某一时件发生D.有新进程进入就绪状态``030110022020100D``030110032020101下列因素中,不一定是引起进程调度的因素。
A.一个进程运行完毕B.运行进程被阻塞C.一个高优先级进程被创建D.实时调度中,一个紧迫的任务到来``030110032020100C``030110042020101若进程P一旦被唤醒就能投入运行,则系统可能是。
A.非抢占式调度方式,进程P的优先级最高B.抢占式调度方式,就绪队列上的所有进程的优先级皆比P低C.就绪队列为空队列D.抢占式调度方式,P的优先级高于当前运行的进程``030110042020100D``030110051020101在批处理系统中,周转时间是指。
A.作业运行时间B.作业等待时间和运行时间之和C.作业的相对等待时间D.作业被调度进入内存到运行完毕的时间``030110051020100B``030110062020101下列各项中,不是进程调度时机的是。
A.现运行的进程正常结束或异常结束B.现运行的进程从运行态进入就绪态C.现运行的进程从运行态进入等待态D.有一进程从等待态进入就绪态``030110062020100D``030210012020201现有3个同时到达的作业J1、J2、J3,它们的执行时间分别为T1、T2和T3,且T1<T2<T3。
系统按单道方式运行且采用短作业优先算法,则平均周转时间为。
A.T1+T2+T3 B.(T1+T2+T3)/3 C.(3T1+2T2+T3)/3D.(T1+2T2+3T3)/3``030210012020200C``030210022020101下列算法中,操作系统用于作业调度的算法是。
计算机系统第三章答案剖析
3.参考答案:4 •参考答案:(1) 源操作数是立即数 OxFF ,需在前面加’$' (2) 源操作数是16位,而长度后缀是字节’b',不一致 (3 )目的操作数不能是立即数寻址(4) 操作数位数超过 16位,而长度后缀为 16位的’w' (5) 不能用8位寄存器作为目的操作数地址所在寄存器 (6) 源操作数寄存器与目操作数寄存器长度不一致 (7) 不存在 ESX 寄存器(8) 源操作数地址中缺少变址寄存器 5 •参考答案:机器级表示 dst_type src_type movsbl %al, ( lx) int char movb %al, ( K) char int movl ( lx) int unsigned movswl %ax, ( K) short int movzbl %al, ( lx) unsigned char unsigned movsbl %al, ( lx) unsigned char movl ( lx) int int6 •参考答案:(1) xptr 、yptr 和zptr 对应实参所存放的存储单元地址分别为: R[ebp]+8、R[ebp]+12、R[ebp]+16。
(2) 函数func 的C 语言代码如下:void fun c(i nt *xptr, i nt *yptr, int *zptr){int tempx=*xptr;(1) 后缀 (2) 后缀 (3) 后缀 (4) 后缀 (5) 后缀 (6) 后缀 (7) 后缀(8) 后缀源:基址+比例变址+偏移, 目:寄存器 w , b ,源:寄存器, l ,源:比例变址, b ,源:基址, l ,源:立即数, l ,源:立即数, w ,源:寄存器,l , 目:基址+偏移 目:寄存器 目:寄存器 目栈 目:寄存器目:寄存器源:基址+变址+偏移, 目:寄存器int tempy=*yptr;int tempz=*zptr;*yptr=tempx;*zptr = tempy;*xptr = tempz;}7 •参考答案:(1)R[edx]=x(2)R[edx]=x+y+4(3)R[edx]=x+8*y(4)R[edx]=y+2*x+12(5)R[edx]=4*y(6)R[edx]=x+y8 •参考答案:(1)指令功能为:R[edx] ■R[edx]+M[R[eax]]=0x00000080+M[0x8049300] ,寄存器EDX 中内容改变。
计算机操作系统第三章答案
第三章处理机调度与死锁一、单项选择题K操作系统中的作业管理是一种(A )oA.宏观的高级管理B.宏观的低级管理C.系统刚开始加电D.初始化引导完成2、作业调度又称为[1A],它决定将哪些在外存储器上的处于[2D]状态的作业调入主机内存。
系统经作业调度程序选中一个或多个作业后,就为它们分配必要的内存、设备及软资源。
然后控制权就交给了 [3B],由 [3]将它们变为一个或一组[4C],并[5A]。
供选择的答案:[11: A、高级调度B、低级调度C、中级调度D、进程调度[2]: A、就绪B、阻塞C、提交D、后备[3]: A、存储管理模块B、处理机管理模块C、文件管理模块D、设备管理模块[4]: A、指令B、子程序C、进程D、程序段⑸:A、把它们挂到就绪队列上B、为它们分配处理机C、把它们挂到后备队列上D、为它们分配设备)中。
A、处于后备状态的作业存放在(3.A•外存B.内存和B D.扩展内存4、在操作系统中,JCB是指(A )oA.作业控制块B.进程控制块C.文件控制块D.程序控制块5、作业在系统中存在与否的唯一标志是(C)。
A.源程序B.作业说明书C.作业控制块D.目的程序6、按照作业到达的先后次序调度作业,排队等待时间最长的作业被优先调度,这是指(A)调度算法。
A.先来先服务法B.短作业优先法C.时间片轮转法D.优先级法7、在批处理系统中,周转时间是(B )oA.作业运行时间B.作业等待时间和运行时间之和C.作业的相对等待时间D.作业被调度进入内存到运行完毕的时间8、为了对紧急进程或重要进程进行调度,调度算法应采用(B)oA.先来先服务法B.优先级法C.短作业优先法D.时间片轮转法9、操作系统中,(A)负责对进程进行调度。
A.处理机管理B.作业管理C.高级调度管理D.存储和设备管理.10、如果系统中所有作业是同时到达的,则使作业平均周转时间最短的作业调度算法是短作业优先调度算法。
1K系统出现死锁的原因是(C )oA.计算机系统发生了重大故障B.有多个封锁的进程同时存在C.若干进程因竞争资源而无休止地等待着,不释放已占有的资源D.资源数大大少于进程数,或进程同时申请的资源数大大超过资源总数12、设系统中有n个进程并发,共同竞争资源X,且每个进程都需要m个X资源,为使该系统不会发生死锁,资源x至少要有(C)(A) n*m+1 (B) n*m+n (C) n*m+1 -n (D)无法预计 13、选出不正确的两条叙述(BE)OA、死锁是指因相互竞争资源使得系统中有多个阻塞进程的情况;B、若系统中并发运行的进程和资源之间满足互斥条件、占有且申请、不可抢占和环路条件,则可判定系统中发生了死锁;C、在对付死锁的策略中,解除死锁通常都是和检测死锁配套使用;D、产生死锁的原因可归结为竞争资源和进程推进顺序不当;E、在死锁的解决方法中,由于避免死锁采用静态分配资源所以对资源的利用率不高14、死锁预防是保证系统不进入死锁状态的静态策略,其解决方法是破坏产生死锁的四个必要条件之一。
大学计算机基础第3章课后习题答案
习题33-1选择题1-5 A C B B A 6-10 C D B A C 11-15 D D C C B 16-20 B C C D D 21 A3-2填空题:1. CPU的时钟频率2.算术逻辑部件、控制逻辑部件、寄存器组和内部总线3.微处理器、内存储器、总线、输入/输出接口4.静态随机存储器和动态随机存储器5. 数据总线、地址总线、控制总线6. 操作系统7. Universal Serial Bus8. 系统软件应用软件3-3思考题1. 在微型计算机系统中,从局部到全局存在3个层次:微处理器→微型计算机→微型计算机系统,这是3个不同的概念,但它们之间又有着密切的联系。
微型计算机(Microcomputer)以微处理器为核心,微型计算机系统(Microcomputer System)以微型计算机为主体,再配以相应的外部设备和软件,它是完整的计算机系统,具有实用意义,可以正常工作。
2. 微处理器主要性能指标①字长②外频③主频④倍频系数⑤缓存⑥多核心处理器⑦生产工艺⑧超线程技术3. 按照存储器在计算机中的作用,可分为内存储器和外存储器。
内存用于存放计算机当前正在执行的程序和相关数据,CPU可以直接对它进行访问。
内存储器按其工作方式的不同,又分为随机存取存储器(RAM)、只读存储器(ROM)和高速缓冲存储器。
RAM是指在CPU运行期间既可读出信息也可写入信息的存储器,但断电后,写入的信息会丢失。
ROM是只能读出信息而不能由用户写入信息的存储器,断电后,其中的信息也不会丢失。
Cache是用来存放当前内存中频繁使用的程序块和数据块。
外存储器,又叫辅助存储器,简称外存。
用于存放暂时不用的程序和数据,不能直接和CPU进行数据交换。
当CPU 需要执行外存中的某些程序和数据时,外存中存储的程序和数据必须先送入内存,才能被计算机执行。
常见的外存储器有软盘、硬盘、光盘和优盘等。
4. 外存储器(硬盘、光盘、U盘等);输入设备(键盘、鼠标、扫描仪、数码相机等);输出设备(显示器、打印机、绘图仪等);其他设备(网卡、声卡、调制解调器、视频卡等)。
计算机组成原理第三章课后题参考答案
计算机组成原理第三章课后题参考答案第三章课后习题参考答案1.有⼀个具有20位地址和32位字长的存储器,问:(1)该存储器能存储多少个字节的信息(2)如果存储器由512K×8位SRAM芯⽚组成,需要多少芯⽚(3)需要多少位地址作芯⽚选择解:(1)∵ 220= 1M,∴该存储器能存储的信息为:1M×32/8=4MB (2)(1024K/512K)×(32/8)= 8(⽚)(3)需要1位地址作为芯⽚选择。
3.⽤16K×8位的DRAM芯⽚组成64K×32位存储器,要求:(1) 画出该存储器的组成逻辑框图。
(2) 设DRAM芯⽚存储体结构为128⾏,每⾏为128×8个存储元。
如单元刷新间隔不超过2ms,存储器读/写周期为µS, CPU在1µS内⾄少要访问⼀次。
试问采⽤哪种刷新⽅式⽐较合理两次刷新的最⼤时间间隔是多少对全部存储单元刷新⼀遍所需的实际刷新时间是多少解:(1)组成64K×32位存储器需存储芯⽚数为N=(64K/16K)×(32位/8位)=16(⽚)每4⽚组成16K×32位的存储区,有A13-A0作为⽚内地址,⽤A15 A14经2:4译码器产⽣⽚选信号,逻辑框图如下所⽰:(2)根据已知条件,CPU在1us内⾄少访存⼀次,⽽整个存储器的平均读/写周期为,如果采⽤集中刷新,有64us的死时间,肯定不⾏;所以采⽤分散式刷新⽅式:设16K×8位存储芯⽚的阵列结构为128⾏×128列,按⾏刷新,刷新周期T=2ms,则分散式刷新的间隔时间为:t=2ms/128=(s) 取存储周期的整数倍s的整数倍)则两次刷新的最⼤时间间隔发⽣的⽰意图如下可见,两次刷新的最⼤时间间隔为tMAXt MAX=×2-=(µS)对全部存储单元刷新⼀遍所需时间为tRt R=×128=64 (µS)4.有⼀个1024K×32位的存储器,由128K×8位DRAM芯⽚构成。
(完整版)操作系统第3章习题带答案
第三章一、问答题1、用户级线程与内核级线程的区别是什么?2、PCB 中包含哪些信息?进程状态属于哪类信息?3、什么是操作系统的内核?4、简述时间片轮转调度算法的基本思想。
5、某系统采用时间片轮转调度算法的处理机调度算法,某个时刻根据用户要求创建了一个进程P,进程P 在其存在过程中依次经历了:进程调度选中了进程P 占用处理机运行,进程P 运行中提出资源申请,要求增加内存使用量,没有得到;进程等待一段时间后得到内存;进程调度再次选中了进程P 占用处理机运行;进程P 的时间片到;一段时间后,进程P 再次占用处理机;有紧急进程Q 进入,系统停止进程P 的运行,将处理机分配进程Q;进程Q 运行完,进程调度再次选中了进程P 占用处理机运行;进程P 运行完。
请分析进程P 在其整个生命过程中的状态变化。
进程调度选中了进程P 占用处理机运行(就绪→运行),进程P 运行中提出资源申请,要求增加内存使用量,没有得到(运行→阻塞);进程等待一段时间后得到内存(阻塞→就绪);进程调度再次选中了进程P 占用处理机运行(就绪→运行);进程P 的时间片到(运行→就绪);一段时间后,进程P 再次占用处理机(就绪→运行);有紧急进程Q 进入,系统停止进程P 的运行,将处理机分配进程Q(运行→就绪);进程Q 运行完,进程调度再次选中了进程P 占用处理机运行(就绪→运行);进程P 运行完。
请分析进程P 在其整个生命过程中的状态变化。
6、试比较进程与程序的异同。
7、引起创建进程的事件通常有哪些?简述进程的创建过程。
8、简述进程的阻塞过程。
910、进程控制块的作用是什么?它主要包括哪几部分内容?11、简述操作系统的三级调度。
12、为什么要了解进程间的家族关系?因为父进程和子进程之间是隶属关系,子进程可以继承使用父进程的资源;如果父进程被撤销,还应撤销其所有的子孙进程。
13、什么是进程?。
14、试比较进程和线程的区别。
15、简述进程的基本状态,画出其状态转换图。
计算机系统结构 第三章练习 答案
计算机系统结构第三章练习答案计算机系统结构-第三章练习答案第三章练习(1)一、单项选择题以下问题的四个备选答案中,只有一个是正确的。
请在问题后面的括号中填写正确答案的标签(a~d)。
1.程序员编写程序时使用的访存地址是()。
a、物理地址B.有效地址C.逻辑地址D.主存地址2.虚拟存储器通常采用的地址映像是(d)。
a、完全关联、组关联和直接图像B.直接图像C.组关联图像D.完全关联图像3.不属于堆栈型替换算法是()。
a、最近使用最少的替换算法B.先进先出替换算法C.最优替换算法d.近期最久未使用替换算法4.提高虚拟内存主存命中率的方法是()。
a.采用lfu替换算法并增大页面数b.采用fifo替换算法并增大页面c.采用fifo 替换算法并增大页面数d.采用lru替换算法并增大页面5.虚拟内存主要用于解决()问题。
a.便于程序的“访存操作”b.扩大存储系统的容量和提高存储系统的速度c.提高存储系统的速度d.扩大存储系统的容量6.独立于虚拟内存的等效访问速度为()。
a.辅存的容量b.主存的容量c.页面替换算法d.访存页地址流二、填空1.使二级存储系统的等效访问速度接近于第一级存储器访问速度的依据是程序的(局部它包括两个方面(时间局部性)和(空间局部性)。
2.程序的空间局部性意味着程序通常是(按顺序)存储和执行的,程序使用的数据通常是(群集)聚或集中)存储的。
3.假设T1和T2分别是CPU访问M1和M2中的信息所需的时间,H是命中M1的概率,则由m1和m2构成的二级存储系统的等效访问时间应当表示为(h*t1+(1-h)*t2)。
4.存储器速度性能可以采用存储器的(频宽)衡量,它是存储器单位时间能够访问的信息量5.虚拟存储器的存储管理方式有(页式)、(段式)和(段页式)三种。
6.页式虚拟存储器把(程序“虚拟”)空间和(主存储器“物理实”)空间都分成相同样大小的页面。
7.当两个虚拟空间的页面需要加载相同的主存页面时,称之为(实页面冲突或页面争用)。
第三章 复习题 计算机操作系统概论复习资料习题答案
第三章复习题一、单项选择题1. 多道程序设计是指(C)。
A. 把一个计算问题的程序分成多个可独立执行的程序模块B. 一个处理器上同时运行多个程序C. 把多个计算问题同时装入主存储器并行执行D. 每个用户同时编制多个程序2. 进程队列是把(B)链接在一起而形成的。
A. 进程B. 进程控制块PCBC. 程序D. 数据3. 把一个进程让出处理器,由另一个进程占用处理器的过程称为(C)。
A. 进程转换B. 进程阻塞C. 进程切换D. 进程撤销4. UNIX采用的进程调度算法是(D)。
A. 先来先服务调度算法B. 时间片轮转调度算法C. 分级调度算法D. 动态优先数调度算法5. 一种能使作业平均周转时间最短的作业调度算法是(B)算法。
A. 先来先服务B. 计算时间短者优先C. 响应比高者优先D. 均衡调度6. 程序是静止的,而进程是(A)的。
A. 动态的B. 活动的C. 不动的D. 顺序的5. 操作系统把一些能完成特定功能、不可中断的过程称为(B)。
A. 程序B. 原语C. 进程D. 语句6. 若某系统的进程调度采用优先级调度算法,则对具有相同优先级的进程经常又使用(A)算法。
A. 先来先服务B. 按优先级C. 轮转法D. 任何7. LRU页面调度算法总是选择(A)页面调出主存储器。
A. 最近最久未被使用B. 在贮存中驻留时间最长的C. 最近被访问的次数最少的D. 最先被装入主存储器的8. 原语是操作系统中用来完成特定功能的程序模块,它们的执行是(D)的。
A. 可并发B. 可交叉C. 可被中断D. 不可被中断9. 下列对进程的属性描述错误的是(D)。
A. 进程具有动态性B. 进程可以并发执行C. 进程具有等待态、就绪态和运行态三种基本状态D. 多个不同的进程不可以包含相同的程序10. 一个作业被选中装入主存储器后,系统就为该作为创建一个(A)。
A. 进程B. 文件C. 作业D. 程序11. 作业调度选中了一个作业且把它装入主存储器时就为该作业创建了一个进程,该进程(C)。
计算机操作系统练习题及答案第三章
计算机操作系统练习题及答案第三章单项选择1. 两个进程合作完成一项任务。
在并发执行中,一个进程要等待其合作伙伴发来消息,或建立某个条件后再运行,这种制约性合作关系被称为进程的—A—。
A.同步B.执行C.互斥D.调度2. 为了进行进程协调,进程之间应当具有一定的联系,这种联系通常采用进程间交换数据的方式进行,这种方式通常称为—C—。
A. 进程互斥B. 进程同步C. 进程通信D. 进程制约3. 除了因为资源不足,进程竞争资源可能出现死锁外,不适当的—C—也可能产生死锁。
A.进程优先权B.资源线性分配C.进程推进顺序D.分配队列优先权4. 除了可以采用资源剥夺法解除死锁外,还可以采用—C—方法解除死锁。
A.修改信号量B.拒绝分配新的资源C.撤消进程D.执行并行操作5. 资源的按序分配策略可以破坏—D—条件。
A. 互斥B. 请求与保持C. 不剥夺D. 环路等待6. 在—C—的情况下,系统出现死锁。
A. 计算机系统发生了重大故障B. 有多个阻塞的进程存在C. 若干个进程因竞争资源而无休止地相互等待他方释放已占有的资源D. 资源数远小于进程数或进程同时申请的资源数远超过资源总数7.某系统中有3个进程,都需要同类资源4个,试问该系统不会发生死锁的最少资源数是—B—。
A.9B.10C.11D.128. 银行家算法是一种—B—算法。
A. 解除死锁B.避免死锁C. 预防死锁D. 检测死锁9. 在下列解决死锁的方法中,属于死锁预防策略的是—B—。
A. 银行家算法B. 资源有序分配C. 死锁检测法D. 资源分配图化简法10. 设有n个进程共用一个相同的程序段(临界区),如果每次最多允许m个进程(m≤n)同时进入临界区,则信号量的初值应为—B—。
A. nB. mC. m-nD. -m11.死锁定理是用于处理死锁的哪一种方法—C—。
A.预防死锁B.避免死锁C.检测死锁D.解除死锁12. AND信号量集机制是为了—C—。
A. 信号量的集中使用B. 解决结果的不可再现性问题C. 防止系统的不安全性D. 实现进程的相互制约13.临界区是指—A—。
计算机操作系统(第四版)课后习题答案第三章
第三章处理机调度与死锁1,高级调度与低级调度的主要任务是什么?为什么要引入中级调度?【解】(1)高级调度主要任务是用于决定把外存上处于后备队列中的那些作业调入内存,并为它们创建进程,分配必要的资源,然后再将新创建的进程排在就绪队列上,准备执行。
(2)低级调度主要任务是决定就绪队列中的哪个进程将获得处理机,然后由分派程序执行把处理机分配给该进程的操作。
(3)引入中级调度的主要目的是为了提高内存的利用率和系统吞吐量。
为此,应使那些暂时不能运行的进程不再占用宝贵的内存空间,而将它们调至外存上去等待,称此时的进程状态为就绪驻外存状态或挂起状态。
当这些进程重又具备运行条件,且内存又稍有空闲时,由中级调度决定,将外存上的那些重又具备运行条件的就绪进程重新调入内存,并修改其状态为就绪状态,挂在就绪队列上,等待进程调度。
3、何谓作业、作业步和作业流?【解】作业包含通常的程序和数据,还配有作业说明书。
系统根据该说明书对程序的运行进行控制。
批处理系统中是以作业为基本单位从外存调入内存。
作业步是指每个作业运行期间都必须经过若干个相对独立相互关联的顺序加工的步骤。
作业流是指若干个作业进入系统后依次存放在外存上形成的输入作业流;在操作系统的控制下,逐个作业进程处理,于是形成了处理作业流。
4、在什么情冴下需要使用作业控制块JCB?其中包含了哪些内容?【解】每当作业进入系统时,系统便为每个作业建立一个作业控制块JCB,根据作业类型将它插入到相应的后备队列中。
JCB 包含的内容通常有:1) 作业标识2)用户名称3)用户账户4)作业类型(CPU 繁忙型、I/O芳名型、批量型、终端型)5)作业状态6)调度信息(优先级、作业已运行)7)资源要求8)进入系统时间9) 开始处理时间10) 作业完成时间11) 作业退出时间12) 资源使用情况等5.在作业调度中应如何确定接纳多少个作业和接纳哪些作业?【解】作业调度每次接纳进入内存的作业数,取决于多道程序度。
计算机系统结构第三章(习题解答)
1. 什么是存储系统?对于一个由两个存储器M 1和M 2构成的存储系统,假设M1的命中率为h ,两个存储器的存储容量分别为s 1和s 2,存取时间分别为t 1和t 2,每千字节的成本分别为c 1和c 2。
⑴ 在什么条件下,整个存储系统的每千字节平均成本会接近于c 2? ⑵ 该存储系统的等效存取时间t a 是多少?是多少?⑶ 假设两层存储器的速度比r=t 2/t 1,并令e=t 1/t a 为存储系统的访问效率。
试以r 和命中率h 来表示访问效率e 。
⑷ 如果r=100,为使访问效率e>0.95,要求命中率h 是多少?是多少?⑸ 对于⑷中的命中率实际上很难达到,对于⑷中的命中率实际上很难达到,假设实际的命中率只能达到假设实际的命中率只能达到0.96。
现在采用一种缓冲技术来解决这个问题。
采用一种缓冲技术来解决这个问题。
当访问当访问M 1不命中时,不命中时,把包括被访问数把包括被访问数据在内的一个数据块都从M 2取到M 1中,并假设被取到M 1中的每个数据平均可以被重复访问5次。
请设计缓冲深度(即每次从M 2取到M 1中的数据块的大小)。
答:答:⑴ 整个存储系统的每千字节平均成本为:整个存储系统的每千字节平均成本为:12s 1s 2c 2s 1s 1c 2s 1s 2s 2c 1s 1c c ++´=+´+´=不难看出:当s1/s2非常小的时候,上式的值约等于c2。
即:s2>>s1时,整个存储器系统的每千字节平均成本会接近于c2。
⑵ 存储系统的等效存取时间t a 为:为:2t )h 1(1t hta´-+´=⑶r)h 1(h 1t )h 1(t h t t t e 211a1´-+=´-+´==⑷ 将数值代入上式可以算得:h>99.95% ⑸通过缓冲的方法,我们需要将命中率从0.96提高到0.9995。
(完整word版)模式识别习题解答第三章(word文档良心出品)
题1:在一个10类的模式识别问题中,有3类单独满足多类情况1,其余的类别满足多类情况2。
问该模式识别问题所需判别函数的最少数目是多少?答:将10类问题可看作4类满足多类情况1的问题,可将3类单独满足多类情况1的类找出来,剩下的7类全部划到4类中剩下的一个子类中。
再在此子类中,运用多类情况2的判别法则进行分类,此时需要7*(7-1)/2=21个判别函数。
故共需要4+21=25个判别函数。
题2:一个三类问题,其判别函数如下:d1(x)=-x1, d2(x)=x1+x2-1, d3(x)=x1-x2-11.设这些函数是在多类情况1条件下确定的,绘出其判别界面和每一个模式类别的区域。
2.设为多类情况2,并使:d12(x)= d1(x), d13(x)= d2(x), d23(x)= d3(x)。
绘出其判别界面和多类情况2的区域。
3.设d1(x), d2(x)和d3(x)是在多类情况3的条件下确定的,绘出其判别界面和每类的区域。
答:三种情况分别如下图所示:1.2.3.题3:两类模式,每类包括5个3维不同的模式,且良好分布。
如果它们是线性可分的,问权向量至少需要几个系数分量?假如要建立二次的多项式判别函数,又至少需要几个系数分量?(设模式的良好分布不因模式变化而改变。
)答:(1)若是线性可分的,则权向量至少需要14N n =+=个系数分量; (2)若要建立二次的多项式判别函数,则至少需要5!102!3!N ==个系数分量。
题4:用感知器算法求下列模式分类的解向量w : ω1: {(0 0 0)T, (1 0 0)T, (1 0 1)T, (1 1 0)T} ω2: {(0 0 1)T, (0 1 1)T, (0 1 0)T, (1 1 1)T}解:将属于2w 的训练样本乘以(1)-,并写成增广向量的形式x1=[0 0 0 1]',x2=[1 0 0 1]',x3=[1 0 1 1]',x4=[1 1 0 1]';x5=[0 0 -1 -1]',x6=[0 -1 -1 -1]',x7=[0 -1 0 -1]',x8=[-1 -1 -1 -1]';迭代选取1C =,(1)(0,0,0,0)w '=,则迭代过程中权向量w 变化如下:(2)(0 0 0 1)w '=;(3)(0 0 -1 0)w '=;(4)(0 -1 -1 -1)w '=;(5)(0 -1 -1 0)w '=;(6)(1 -1 -1 1)w '=;(7)(1 -1 -2 0)w '=;(8)(1 -1 -2 1)w '=;(9)(2 -1 -1 2)w '=; (10)(2 -1 -2 1)w '=;(11)(2 -2 -2 0)w '=;(12)(2 -2 -2 1)w '=;收敛所以最终得到解向量(2 -2 -2 1)w '=,相应的判别函数为123()2221d x x x x =--+。
计算机系统结构第三章课后题答案
3.3 典型习题和题例分析与解答题3.1 简要举出集中式串行链接、定时查询和独立请求3种总线控制方式的优缺点,同时分析硬件产生故障时通讯的可靠性。
[解答] 集中式串行链接的3种总线控制方式的优缺点,可参照本章3.2节内容要点2中的2)的有关内容解答。
下面只就硬件产生故障时,对通讯的可靠性问题进行分析。
串行链接对通讯的可靠性,主要表现于“总线可用”线及其有关电路的失效会造成系统整体瘫痪的问题。
一旦“总线可用”线出现断路或碰地,其高电压不能顺链往下传送,就会使后面的部件在要求使用总线时,其请求无法得到响应。
为了提高可靠性,可以对“总线可用”线及其相关电路,采取重复设置两套或多套的方法来解决。
定时查询对通讯的可靠性要比串行链接的高。
因为总线控制器通过计数,查询到某个出故障的部件时,故障部件不会给出“总线忙”信号。
这样,不会影响控制器继续计数,去查询下一个部件,所以整个总线系统的工作不会瘫痪。
独立请求对通讯的可靠性同样比串行链接的高。
因为某个部件在发生故障时不发总线请求,或即使发出总线请求,总线控制器也可以通过软件或硬件的措施,特发生故障的部件送来的请求屏蔽掉,使之不让其参与总线的分配。
所以,某个部件的故障不会导致整个系统的工作处于瘫痪状态。
题3.2设中断级屏蔽位“1”对应于开放,“0”对应于屏蔽,各级中断处理程序的中断级屏蔽位设置如表3.1所示。
(1)当中断响应优先次序为l→2→3→4时,其中断处理次序是什么?(2)如果所有的中断处理都各需3个单位时间,中断响应和中断返回时间相对中断处理时间少得多。
当机器正在运行用户程序时,同时发出第2、3级中断请求,经过两个单位时间,又同时发生第1、4级中断请求,试画出程序运行过程示意图。
表3.1[分析]为了领会中断响应排队器对中断响应的优先次序是用硬件固定的,以及通过由操作系统给各中断级服务程序现行程序状态字中的中断级屏蔽位设置不同的状态,可以改变中断处理(完)的次序这两个要点,图3.1给出了一个中断响应硬件部分的简单逻辑原理示意图。
(完整版)操作系统第三章课后答案
第三章处理机调度与死锁1. 高级调度与低级调度的主要任务是什么?为什么要引入中级调度?高级调度的主要任务:用于决定把外存上处于后备队列中的哪些作业调入内存,并为它们创建进程,分配必要的资源,然后,再将新创建的进程插入就绪队列上,准备执行。
低级调度的主要任务:用于决定就绪队列中的哪个进程应获得处理机,然后再由分派程序执行将处理机分配给该进程的具体操作。
引入中级调度的主要目的:是为了提高系统资源的利用率和系统吞吐量。
10. 试比较FCFS和SPF两种进程调度算法相同点:两种调度算法都是既可用于作业调度,也可用于进程调度;不同点:FCFS调度算法每次调度都是从后备队列中选择一个或是多个最先进入该队列的作业,将它们调入内存,为它们分配资源,创建进程,然后插入到就绪队列中。
该算法有利于长作业/进程,不利于短作业/进程。
SPF调度算法每次调度都是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存中运行。
该算法有利于短作业/进程,不利于长作业/进程。
15. 按调度方式可将实时调度算法分为哪几种?按调度方式不同,可分为非抢占调度算法和抢占调度算法两种。
18. 何谓死锁?产生死锁的原因和必要条件是什么?a.死锁是指多个进程因竞争资源而造成的一种僵局,若无外力作用,这些进程都将永远不能再向前推进;b.产生死锁的原因有二,一是竞争资源,二是进程推进顺序非法;c.必要条件是: 互斥条件,请求和保持条件,不剥夺条件和环路等待条件。
19.在解决死锁问题的几个方法中,哪种方法最易于实现?哪种方法是资源利用率最高?解决/处理死锁的方法有预防死锁、避免死锁、检测和解除死锁,其中预防死锁方法最容易实现,但由于所施加的限制条件过于严格,会导致系统资源利用率和系统吞吐量降低;而检测和解除死锁方法可是系统获得较好的资源利用率和系统吞吐量。
20. 请详细说明可通过哪些途径预防死锁?a.摒弃"请求和保持"条件:系统规定所有进程开始运行之前,都必须一次性地申请其在整个运行过程所需的全部资源,但在分配资源时,只要有一种资源不能满足某进程的要求,即使其它所需的各资源都空闲,也不分配给该进程,而让该进程等待;b.摒弃"不剥夺"条件:系统规定,进程是逐个地提出对资源的要求的。
计算机体系结构第三章答案
第三章答案三、流水线技术(80空)1、对阶尾数相加2、求阶差规格化3、时间流水线的各段4、尽量相等流水线的瓶颈5、通过时间大量重复的时序输入端能连续地提供任务6、静态动态7、部件级处理机级8、标量流水处理机向量流水处理机9、线性流水线非线性流水线10、执行/有效地址计算周期存储器访问/分支完成周期11、译码读寄存器12、ALUoutput←A op B ALUoutput←NPC + Imm13、分支 STORE指令14、ALU指令 LOAD指令15、单周期多周期16、重复设置指令执行功能部件流水17、吞吐率等功能非流水线18、通过时间排空时间19、流水线寄存器的延迟时钟扭曲20、数据相关控制相关21、结构相关数据相关22、结构数据23、硬件开销功能单元的延迟24、写后读读后写写后读25、写后读读后写26、PC值改变为分支转移的目标地址 PC值保持正常(等于当前值加4)27、目标地址分支转移条件不成立28、8 存储器29、多功能线性 830、水平处理方式垂直处理方式31、纵向处理方式纵横处理方式32、存储器向量寄存器33、访问存储器的次数对存储器带宽的要求34、每秒执行多少指令(MIPS)每秒取得多少个浮点运算结果(MFLOPS)35、512 836、链接技术向量循环或分段开采技术37、源向量结果向量38、向量功能部件标量寄存器向量寄存器块39、向量寄存器向量功能部件3.1 流水线的基本概念1、流水线:将一个重复的时序过程,分解为若干个子过程,而每一个子过程都可有效地在其专用功能段上与其他子过程同时执行。
2、单功能流水线:只能完成一种固定功能的流水线。
3、多功能流水线:流水线的各段可以进行不同的连接,从而使流水线在不同的时间,或者在同一时间完成不同的功能。
4、静态流水线:同一时间内,流水线的各段只能按同一种功能的连接方式工作。
5、动态流水线:同一时间内,当某些段正在实现某种运算时,另一些段却在实现另一种运算。
微型计算机原理 (第三章课后答案)
微型计算机原理第三章 80X86微处理器1.简述8086/8088CPU中BIU和EU的作用,并说明其并行工作过程. 答:(1) BIU的作用:计算20位的物理地址,并负责完成CPU与存储器或I/O端口之间的数据传送。
(2) EU的作用:执行指令,并为BIU提供所需的有效地址.(3) 并行工作过程:当EU从指令队列中取出指令执行时,BIU将从内存中取出指令补充到指令队列中。
这样就实现了取指和执行指令的并行工作。
2.8086/8088CPU内部有哪些寄存器?其主要作用是什么?答:8086/8088CPU内部共有14个寄存器,可分为4类:数据寄存器4个,地址寄存器4个,段寄存器4个和控制寄存器2个。
其主要作用是:(1) 数据寄存器:一般用来存放数据,但它们各自都有自己的特定用途.AX(Accumulator)称为累加器.用该寄存器存放运算结果可使指令简化,提高指令的执行速度。
此外,所有的I/O指令都使用该寄存器与外设端口交换信息。
BX(Base)称为基址寄存器。
用来存放操作数在内存中数据段内的偏移地址,CX(Counter)称为计数器。
在设计循环程序时使用该寄存器存放循环次数,可使程序指令简化,有利于提高程序的运行速度。
DX(Data)称为数据寄存器。
在寄存器间接寻址的I/O指令中存放I/O端口地址;在做双字长乘除法运算时,DX与AX一起存放一个双字长操作数,其中DX存放高16位数。
(2)地址寄存器:一般用来存放段内的偏移地址.SP(Stack Pointer)称为堆栈指针寄存器。
在使用堆栈操作指令(PUSH或POP)对堆栈进行操作时,每执行一次进栈或出栈操作,系统会自动将SP的内容减2或加2,以使其始终指向栈顶。
BP (Base Pointer)称为基址寄存器。
作为通用寄存器,它可以用来存放数据,但更经常更重要的用途是存放操作数在堆栈段内的偏移地址。
SI(Source Index)称为源变址寄存器.SI存放源串在数据段内的偏移地址。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题3.参考答案:(1)后缀:w,源:基址+比例变址+偏移,目:寄存器(2)后缀:b,源:寄存器,目:基址+偏移(3)后缀:l,源:比例变址,目:寄存器(4)后缀:b,源:基址,目:寄存器(5)后缀:l,源:立即数,目:栈(6)后缀:l,源:立即数,目:寄存器(7)后缀:w,源:寄存器,目:寄存器(8)后缀:l,源:基址+变址+偏移,目:寄存器4.参考答案:(1)源操作数是立即数0xFF,需在前面加‘$’(2)源操作数是16位,而长度后缀是字节‘b’,不一致(3)目的操作数不能是立即数寻址(4)操作数位数超过16位,而长度后缀为16位的‘w’(5)不能用8位寄存器作为目的操作数地址所在寄存器(6)源操作数寄存器与目操作数寄存器长度不一致(7)不存在ESX寄存器(8)源操作数地址中缺少变址寄存器5.参考答案:6.参考答案:(1)xptr、yptr和zptr对应实参所存放的存储单元地址分别为:R[ebp]+8、R[ebp]+12、R[ebp]+16。
(2)函数func的C语言代码如下:void func(int *xptr, int *yptr, int *zptr){int tempx=*xptr;int tempy=*yptr;int tempz=*zptr;*yptr=tempx;*zptr = tempy;*xptr = tempz;}7.参考答案:(1)R[edx]=x(2)R[edx]=x+y+4 (3)R[edx]=x+8*y (4)R[edx]=y+2*x+12 (5)R[edx]=4*y (6)R[edx]=x+y 8.参考答案:(1)指令功能为:R[edx]←R[edx]+M[R[eax]]=0x 00000080+M[0x8049300],寄存器EDX 中内容改变。
改变后的内容为以下运算的结果:00000080H+FFFFFFF0H因此,EDX 中的内容改变为0x00000070。
根据表3.5可知,加法指令会影响OF 、SF 、ZF 和CF 标志。
OF=0,ZF=0,SF=0,CF=1。
(2)指令功能为:R[ecx]←R[ecx]-M[R[eax]+R[ebx]]=0x00000010+M[0x8049400], 寄存器ECX 中内容改变。
改变后的内容为以下运算的结果:00000010H -80000008H因此,ECX 中的内容改为0x80000008。
根据表3.5可知,减法指令会影响OF 、SF 、ZF 和CF 标志。
OF=1,ZF=0,SF=1,CF=1 0=1。
(3)指令功能为:R[b x]←R[bx] or M[R[eax]+R[ecx]*8+4],寄存器BX 中内容改变。
改变后的内容为以下运算的结果:0x0100 or M[0x8049384]=0100H or FF00H因此,BX 中的内容改为0xFF00。
由3.3.3节可知,OR 指令执行后OF=CF=0;因为结果不为0,故ZF=0;因为最高位为1,故SF=1。
(4)test 指令不改变任何通用寄存器,但根据以下“与”操作改变标志:R[dl] and 0x80由3.3.3节可知,TEST 指令执行后OF=CF=0;因为结果不为0,故ZF=0;因为最高位为1,故SF=1。
(5)指令功能为:M[R[eax]+R[edx]]←M[R[eax]+R[edx]]*32,即存储单元0x8049380中的内容改变为以下运算的结果:M[0x8049380]*32=0x908f12a8*32,也即只要将0x908f12a8左移5位即可得到结果。
1001 0000 1000 1111 0001 0010 1010 1000<<5=0001 0001 1110 0010 0101 0101 0000 0000因此,指令执行后,单元0x8049380中的内容改变为0x11e25500。
显然,这个结果是溢出的。
但是,根据表3.5可知,乘法指令不影响标志位,也即并不会使OF=1。
1000 0000 1000 0000 1000 0000and 0000 0001 0000 0000 1111 1111 0000 0000 1111 1111 0000 0000or 0000 0000 0000 0000 0000 0000 0001 0000 0111 1111 1111 1111 1111 1111 1111 10000 1000 0000 0000 0000 0000 0000 0000 1000 + 0000 0000 0000 0000 0000 0000 1000 0000 1111 1111 1111 1111 1111 1111 1111 00001 0000 0000 0000 0000 0000 0000 0111 0000 +(6)指令功能为:R[cx] ←R[cx]-1,即CX 寄存器的内容减一。
因此,指令执行后CX 中的内容从0x0010变为0x000F 。
由表3.5可知,DEC 指令会影响OF 、ZF 、SF ,根据上述运算结果,得到OF=0,ZF=0,SF=0。
9.参考答案:movl 12(%ebp), %ecx //R[ecx ]←M[R[ebp]+12],将y 送ECX sall $8, %ecx //R[ecx ]←R[ecx]<<8,将y*256送ECX movl 8(%ebp), %eax //R[eax ]←M[R[ebp]+8],将x 送EAX movl 20(%ebp), %edx //R[edx ]←M[R[ebp]+20],将k 送EDX imull %edx, %eax //R[eax]←R[eax]*R[edx],将x*k 送EAX movl 16(%ebp), %edx //R[edx ]←M[R[ebp]+16],将z 送EDX andl $65520, %edx //R[edx ]←R[edx] and 65520,将z&0xFFF0送EDX addl %ecx, %edx //R[edx ]←R[edx] + R[ecx],将z&0xFFF0+y*256送EDX subl %edx, %eax //R[eax ]←R[eax]-R[edx],将x*k-(z&0xFFF0+y*256)送EAX 根据以上分析可知,第3行缺失部分为: 3 int v = x*k-(z&0xFFF0+y*256) ; 10.参考答案:从汇编代码的第2行和第4行看,y 应该是占8个字节,R[ebp]+20开始的4个字节为高32位字节,记为y h ;R[ebp]+16开始的4个字节为低32位字节,记为y l 。
根据第4行为无符号数乘法指令,得知y 的数据类型num_type 为unsigned long long 。
movl 12(%ebp), %eax //R[eax ]←M[R[ebp]+12],将x 送EAX movl 20(%ebp), %ecx //R[ecx ]←M[R[ebp]+20],将y h 送ECX imull %eax, %ecx //R[ecx ]←R[ecx]*R[eax],将y h *x 的低32位送ECX mull 16(%ebp) //R[edx]R[eax]←M[R[ebp]+16]*R[eax],将y l *x 送EDX-EAX leal(%ecx, %edx), %edx// R[edx ]←R[ecx]+R[edx],将y l *x 的高32位与y h *x 的低32位相加后送EDXmovl 8(%ebp), %ecx //R[ecx ]←M[R[ebp]+8],将d 送ECX movl %eax, (%ecx) //M[R[ecx]]←R[eax],将x*y 低32位送d 指向的低32位 movl %edx, 4(%ecx) //M[R[ecx]+4]←R[edx],将x*y 高32位送d 指向的高32位 11.参考答案:根据第3.3.4节得知,条件转移指令都采用相对转移方式在段内直接转移,即条件转移指令的转移目标地址为:(PC )+偏移量。
(1)因为je 指令的操作码为01110100,所以机器代码7408H 中的08H 是偏移量,故转移目标地址为:0x804838c+2+0x8=0x8048396。
call 指令中的转移目标地址0x80483b1=0x804838e+5+0x1e ,由此,可以看出,call 指令机器代码中后面的4个字节是偏移量,因IA-32采用小端方式,故偏移量为0000001EH 。
call 指令机器代码共占5个字节,因此,下条指令的地址为当前指令地址0x804838e 加5。
(2)jb 指令中F6H 是偏移量,故其转移目标地址为:0x8048390+2+0xf6=0x8048488。
movl 指令的机器代码有10个字节,前两个字节是操作码等,后面8个字节为两个立即数,因为是小端方式,所以,第一个立即数为0804A800H ,即汇编指令中的目的地址0x804a800,最后4个字节为立即数00000001H ,即汇编指令中的常数0x1。
0000 0000 0001 0000 1111 1111 1111 11111 0000 0000 0000 1111 +(3)jle指令中的7EH为操作码,16H为偏移量,其汇编形式中的0x80492e0是转移目的地址,因此,假定后面的mov指令的地址为x,则x满足以下公式:0x80492e0=x+0x16,故x=0x80492e0-0x16=0x80492ca。
(4)jmp指令中的E9H为操作码,后面4个字节为偏移量,因为是小端方式,故偏移量为FFFFFF00H,即-100H=-256。
后面的sub指令的地址为0x804829b,故jmp指令的转移目标地址为0x804829b+0xffffff00=0x804829b-0x100=0x804819b。
12.参考答案:(1)汇编指令的注解说明如下:1 movb 8(%ebp), %dl //R[dl]←M[R[ebp]+8],将x送DL2 movl 12(%ebp), %eax //R[eax]←M[R[ebp]+12],将p送EAX3 testl %eax, %eax //R[eax] and R[eax],判断p是否为04 je .L1 //若p为0,则转.L1执行5 testb $0x80, %dl //R[dl] and 80H,判断x的第一位是否为06 je .L1 //若x>=0,则转.L1执行7 addb %dl, (%eax) //M[R[eax]]←M[R[eax]]+R[dl],即*p+=x8 .L1:因为C语言if语句中的条件表达式可以对多个条件进行逻辑运算,而汇编代码中一条指令只能进行一种逻辑运算,并且在每条逻辑运算指令生成的标志都是存放在同一个EFLAGS寄存器中,所以,最好在一条逻辑指令后跟一条条件转移指令,把EFLAGS中标志用完,然后再执行另一次逻辑判断并根据条件进行转移的操作。