计算机系统基础2模拟题答案.doc

上传人:灯火****19 文档编号:138008022 上传时间:2020-07-13 格式:DOC 页数:6 大小:387KB
返回 下载 相关 举报
计算机系统基础2模拟题答案.doc_第1页
第1页 / 共6页
计算机系统基础2模拟题答案.doc_第2页
第2页 / 共6页
计算机系统基础2模拟题答案.doc_第3页
第3页 / 共6页
计算机系统基础2模拟题答案.doc_第4页
第4页 / 共6页
计算机系统基础2模拟题答案.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《计算机系统基础2模拟题答案.doc》由会员分享,可在线阅读,更多相关《计算机系统基础2模拟题答案.doc(6页珍藏版)》请在金锄头文库上搜索。

1、1.(a) 在流水线处理器中,什么是冒险(hazard)?在什么情况下出现冒险?对于冒险一般如何处理?(b) 什么是 CISC?什么是 RISC?它们各自有什么特点和区别?(c)什么是虚拟地址?虚拟地址有什么作用?(d)解释下列名词:大端(big endian)、小端(little endian)、主机序、网络序(a) 流水线冲突:在流水线系统中,由于相关的存在,使得指令不能在指定的周期内完成。流水线冲突包括结构冲突、数据冲突和控制冲突三种。1) 结构冲突:因为硬件资源满足不了指令重叠执行要求而产生的冲突。解决方法:设置独立的数据、指令cache;阻塞后面指令运行2) 数据冲突:一条指令依赖于

2、前面指令的运行结果而产生的冲突。解决方法:定向、流水线互锁和编译器指令调度3) 控制冲突:流水线遇到跳转指令或者其它更改pc值的指令。解决方法:预测指令运行、延迟跳转、尽快计算跳转目标地址。(b)CISC 是“复杂指令集”的简称,复杂指令集指令数量很多,部分指令的延迟很长,编 码是可变长度的。RISC 是“精简指令集”的简称,精简指令集指令数量少得多,没有较长延迟 的指令,编码是固定长度的。(c)虚拟地址是操作系统提供的对主存的抽象,它为每个进程提供了一个大的、一致的 和私有的地址空间。它的作用是 1)它将主存看成一个存储在磁盘上的地址空间的高速缓存, 在主存中只保存活动区域,并根据需要在主存

3、和磁盘之间来回传送数据,通过这种方式,它 高效的利用了主存 2)它为每个进程提供了一致的地址空间,从而简化了存储器管理 3)它 保护了每个进程的地址空间不被其它进程破坏。(d) 最低有效字节在最前面的方式,称为小端法,最低有效字节在最后面的方式,称为大 端法。主机序是指机器 CPU 采用的字节表示方法。网络序是 TCP/IP 中规定的数据表示格式,与 CPU 类型和操作系统无关,网络序采用大端排列。2.有如下假设:(1) 存储器是字节寻址的;(2) 存储器访问的是 1 字节的字(不是 4 字节的字);(3) 地址宽度为 13 位;(4) 高速缓存是 2 路组相联的(E=2),块大小为 4 字节

4、(B=4),有 8 个组(S=8); 高速缓存的内容如下,所有数字都是以十六进制来表示的:(a)下面的放开展示的是地址格式(每个小方框一个位)。指出(在图中标出)用来确定下列内容的字段:(1) CO 高速缓存块偏移(2) CI 高速缓存组索引(3) CT 高速缓存标记(b)假设一个程序运行在上述机器上,它引用 0xE34 处的 1 个字节的字。指出访问的 高速缓存条目和十六进制表示的返回的高速缓存字节值。指出是否会发生缓存不命中, 如果出现缓存不命中,用“-”来表示“返回的高速缓存字节”。(a) 由于块大小是 4(22),那么需要两位来表示块内偏移;由于缓存一共有 8(23)组,那么 需要 3

5、 位来表示组索引;由于地址一共 13 位,那么标记位为 8(13 2 - 3)位;按照 高速缓存地址划分的规则(从高位到低位依次是标记,组索引,块内偏移),13 位地 址可标记为:(b) 地址 0xE34 的二进制表示为:0b111000110100;根据上面的讨论,末两位为块内偏 移 0b00(0x0) , 末 两位 之前 三位 为 组 索引 0b101(0x5) , 末 五 位 之前 是 标记 0b1110001(0x71);通过查表可以找到组号为 5,标记为 0x71 的位置,该位置有效位 为 1,读取第一个字节得到数据 0xB。3.(a) 确定下面的 malloc 请求序列得到的块大小

6、和头部值。假设:(1) 分配器维持双字对齐,使用隐式空闲链表,格式如下图所示。(2) 块大小向上摄入为最接近的 8 字节的倍数。(b) 确定下面每种对齐要求和块格式的组合的最小块大小。假设:隐式空闲链表,不允许有效载荷为零,头部和脚部放在 4 字节的字中。(a) 块大小包括块头部大小(如果块有尾部的话,那么也包含尾部大小),当请求 3 字节大小的块时,需要 3+4=7 字节的内容,而根据条件的 8 字节倍数要求,块 的大小确定为 8 字节(最后一字节虽然没有申请,但也分配了);根据图片显示 的块结构,块头部值的最后三位为元数据,元数据头两位始终为 0,最后一位为1 表示已占用的块;块头部值可计

7、算为块大小加上块元数据值,即 0x8+0b001, 即头部值为 9。根据上面的方法,malloc(11)需要分配 16 字节的块,头部值为 17(0x11);malloc(20) 需要分配 24 字节的块,头部值为 25(0x19);malloc(21)需要分配 32 字节的块, 头部值为 33(0x21)(c) 第一项,块对齐单字,已分配和空闲块都有头部和尾部,那么头部和尾部数据需要8 字节;而有效载荷不允许为 0,那么大于 8 且能被 4 整除的最小正整数为 12,因 此最小块大小为 12。第二项,块对齐单字,已分配块可以省略脚部,那么仅考虑已分配块,头部数据需 要 4 个字节;有小载荷不

8、允许为 0,那么大于 4 且能被 4 整除的最小正整数为 8, 因此最小块大小为 8。第三项,大于 8 且能被 8 整除的最小整数为 16。 第四项,大于 4 且能被 8 整除的最小整数为 8。4.(a) 下面是一个并行求和算法,将其补充完整。#include #include #include #define MAXTHREADS 32/* Global shared variables */ long psumMAXTHREADS; long nelems_per_thread;void *sum(void *vargp)/* Extract the thread id */int myi

9、d = *(int *)vargp);/* Start element index */long start = myid * nelems_per_thread;/* End element index */long end = start + nelems_per_thread;long i, sum = 0;for (i = start; i end; i+) sum += i;psummyid = sum;return NULL;int main(int argc, char *argv)long i, nelems, log_nelems, nthreads, result = 0;

10、pthread_t tidMAXTHREADS;int myidMAXTHREADS;/* Get input arguments */if (argc != 3) printf(Usage:%s n, argv0);exit(0);nthreads = atoi(argv1); log_nelems = atoi(argv2); nelems = (1L log_nelems);nelems_per_thread = nelems / nthreads;/* Create peer threads and wait for them to finish */for (i = 0; i nth

11、reads; i+) myidi = i; (1) ;for (i = 0; i nthreads; i+) (2) ;/* Add up the partial sums computed by each thread */for (i = 0; i nthreads; i+) (3) ;/* Check final answer */if (result != (nelems *(nelems - 1)/2) printf(Error: result=%ldn, result);exit(0);(b) 思考下面的程序,它视图使用一对信号量来实现互斥。初始时: s = 1, t = 0线程

12、1:P(s)V(s)P(t)V(t)线程 2:P(s)V(s)P(t)*(t) (1) 画出这个程序的进度图。(2) 它总是死锁吗?请分析原因(3) 如果是,那么对初始信号量的值做那些改变就能消除潜在的死锁呢?(4) 画出得到的无死锁程序的进度条。(a) (1) pthread_create(&tidi, NULL, sum, &myidi); (2) pthread_join(tidi, NULL);(3) result += psumi; (b) (1)进度图如下(2)因为任何可行轨迹最终都将陷入死锁状态,所以这个程序总会发生死锁。(3) 为了消除死锁,可以将变量 t 初始化为 1。(4)修正后的进度图如下。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号