# 课下测试补交(ch01)20155337

课下测试补交(ch01)

1.Amdahl定律说明,我们对系统的某个部分做出重大改进,可以显著获得一个系统的加速比。(B)

A .正确 B .错误

解析:Amdahl定律,该定律的主要思想是,当我们对系统的某个部分加速时,其对整个性能的影响取决于该部分的重要性和加速程度。

2.Linux中,内核虚拟内存在虚拟地址空间的低端。(B)

A .

正确

B .

错误

解析:由上图可知内核虚拟内存在虚拟地址空间的最顶端而不是最低端

3.实现进程这个抽象概念需要低级硬件和操作系统软件之间的紧密合作。(A)

A .

正确

B .

错误

解析:进程是操作系统对正在运行的程序的一种抽象。一个系统上可以同时运行多个进程,每个进程好像独占的使用硬件。所谓并发,是说一个进程的指令和另一个进程的指令交错执行。操作系统实现这种交错执行的机制称为上下文切换。操作系统跟踪进程运行所需的所有状态信息(也就是上下文),任何一个时刻,处理器只能运行一个进程。当操作系统决定要把控制权从当前进程转移到一个新进程时,就要进行上下文切换,即保存当前进程的上下文,恢复新进程的上下文,然后将控制权转交给新进程,新进程就从上次停止的地方开始执行。实现进程这个抽象概念需要低级硬件和操作系统软件之间的紧密合作

4.操作系统有两个基本功能:防止硬件被滥用;向应用供一致的机制来控制低级硬件设备。实现这两个功能相关的抽象有(ACD)

A .

文件

B .

虚拟机

C .

虚拟内存

D .

进程

解析:操作系统有两个基本功能:防止硬件被失控的应用程序滥用;向应用程序提供简单一致的机制来控制复杂的低级硬件设备。操作系统通过几个抽象的基本概念(进程、虚拟存储器和文件)来实现以上两个基本功能。

5.存储器层次结构的主要思想是(A)

A .

上一层的存储器作为低一层存储器的高速缓存

B .

存储设备形成存储层次结构

C .

存储器分为主存和辅存

D .

较大的存储器运行慢,快速设备造价高

解析:在这个结构中,从上到下,设备容量越来越大,运行速度越来越慢,同时造价也越来越便宜。存储器层次结构的主要思想是上一层的存储器作为下一层存储器的高速缓存。上图中顶层的寄存器是L1的高速缓存,L1是L2的高速缓存,以此类推。从这个角度讲,程序员可以利用对整个存储器层次结构的理解来提高程序的性能。

6.处理器的(B)操作可以从寄存器中复制一个字节的数据到主存中。

A .

加载

B .

存储

C .

操作

D .

跳转

解析:

  • 加载:把一个字节或者字从主存复制到寄存器,并覆盖寄存器原来的值。
  • 存储:把一个字节或者字从寄存器复制到主存的某个位置,并覆盖掉主存该位置原来的值。
  • 操作:把两个寄存器的内容复制到ALU,ALU对这两个内容做算术运算,将结果存放到一个寄存器中,并覆盖掉原来的值。
  • 跳转:从指令本身中抽取一个字,复制到PC中,并覆盖掉PC中原来的值。

7.主存在逻辑上可以看作(A)

A .

字节数组

B .

字数组

C .

双字数组

D .

四字数组

解析:主存储器:主存储器是一个易失性存储区,也就是常说的RAM,它是一个程序和数据的暂存场所。从逻辑上来说,存储器是一个线性的字节数组,每个字节都有其唯一的索引(也就是地址的概念)。一般不同的机器指令都有不同的字节长度。

8.主存在逻辑上可以看作(A)

A .

字节数组

B .

字数组

C .

双字数组

D .

四字数组

解析:主存储器:主存储器是一个易失性存储区,也就是常说的RAM,它是一个程序和数据的暂存场所。从逻辑上来说,存储器是一个线性的字节数组,每个字节都有其唯一的索引(也就是地址的概念)。一般不同的机器指令都有不同的字节长度。

9.I/O设备可以通过(AD)与I/O总线相连。

A .

控制器

B .

主存

C .

处理器

D .

适配器

解析:I/O设备是计算机系统与外界通信的渠道。上图所示的USB、显示器、磁盘和键盘鼠标等都是I/O设备。I/O设备通常由机械部件和电子部件两部分组成,其中,电子部件又称为设备控制器或适配器。每一个I/O设备都是通过一个控制器与I/O总线连接。I/O设备又分为块设备和字符设备两种。上述中磁盘、USB等就是常见的块设备,而键盘鼠标和网络接口为字符设备。

10.计算机中总线传送定长的数据,这个定长是(B),是一个基本的系统参数。

A .

字节

B .

C .

双字

D .

四字

解析:总线实际上就是一组电子管道,它负责计算机系统各部件之间字节信息的传递。通常总线传输一些定长的字节块,这个定长的字节块也就是字(word)的概念。一个字包含的字节数即为这个系统的字长。我们说32位的计算机的字长为4个字节,64位的计算机字长为8.

11.计算机系统的硬件组成包含(ABCD)

A .

总线

B .

I/O设备

C .

主存

D .

处理器

解析:一个典型的计算机系统主要由CPU、总线、主存储器和I/O设备构成,如下图所示:

  • 1、CPU:CPU是中央处理单元的简称。它负责解释执行存储在主存储器中的指令。CPU的核心部分为算术逻辑单元ALU、程序计数器PC和一些寄存器。其中,PC本身是一个字长的存储设备,它时时刻刻的只想主存中的某条机器语言指令。从系统上电以后,处理器从程序计数器PC指向的存储器读取指令,解释指令中的位,然后更新PC,使其指向下一条指令,具体的顺序由指令集结构所决定。
  • 2、总线:总线实际上就是一组电子管道,它负责计算机系统各部件之间字节信息的传递。通常总线传输一些定长的字节块,这个定长的字节块也就是字(word)的概念。一个字包含的字节数即为这个系统的字长。我们说32位的计算机的字长为4个字节,64位的计算机字长为8.
  • 3、主存储器:主存储器是一个易失性存储区,也就是常说的RAM,它是一个程序和数据的暂存场所。从逻辑上来说,存储器是一个线性的字节数组,每个字节都有其唯一的索引(也就是地址的概念)。一般不同的机器指令都有不同的字节长度。
  • 4、I/O设备:I/O设备是计算机系统与外界通信的渠道。上图所示的USB、显示器、磁盘和键盘鼠标等都是I/O设备。I/O设备通常由机械部件和电子部件两部分组成,其中,电子部件又称为设备控制器或适配器。每一个I/O设备都是通过一个控制器与I/O总线连接。I/O设备又分为块设备和字符设备两种。上述中磁盘、USB等就是常见的块设备,而键盘鼠标和网络接口为字符设备。`

12.熟悉编译系统的好处有:(ABD)

A .

优化程序性能

B .

理解链接时出现的错误

C .

有助于设计处理器

D .

避免安全漏洞

解析:

优化程序执行效率:现代编译器都是非常聪明的工具,它们通常都能产生好的机器码。作为程序员,为了写出高效的代码,我们不需要去知道编译器的内部工作机制。然后,为了在我们的C程序中做出好的编码决定,我们确实需要对机器码和编译器如何把不同的C语句翻译成机器码有基本的了解。例如,switch语句是否总是比一系列if-else语句更高效?一个函数调用需要多少开销?while循环是不是比for循环更高效?指针引用是不是比数组索引更高效?为什么我们将求和结果放在本地变量里比放在通过引用传进来的参数中会使循环跑得快很多呢?我们怎样通过简单重新排列算术表达式中的元括号使函数跑得更快?

在第三章,我们将介绍两个相关的机器语言:IA32,32位机器码在运行Linux,Windows和最近的Macintosh操作系统的机器上无处不在,x86-64,64位扩张在最近的微处理器上能被发现。我们描述编译器怎么样把不同C语言结构翻译成这些语言。在第五章,你将会学到通过对你的C代码做简单的变形——这种形式帮助编译器更好的做它的工作——来调整你的C程序的执行效率。在第六章,你将会学习内存系统的层次特性,编译器如何把数组存储在内存中,以及你的C程序如何利用这些知识来让自己跑得更快。

理解链接时错误:在我们的经验里,一些最令人困惑的错误都与链接器操作相关,尤其是当你尝试构建大型软件系统时。例如,当连接器报告它不能解析一个引用时意味着什么?静态变量和全局变量的的区别是什么?如果你在不同的C文件中定义两个相同名字的全局变量会发生什么?静态库和动态库的区别是什么?为什么我们在命令行列举库的顺序是重要的?最吓人的是,为什么链接器相关的错误在运行时才出现?你将在第七章得到这些问题的答案。

避免安全漏洞:许多年来,缓存溢出缺陷已经引起了网络和互联网服务器中的大部分安全漏洞。这些缺陷之所以存在,是因为几乎没有程序员理解去仔细限制从不可信源接收到的数据的数量和形式的必要性。学习安全编程的第一步是数据和控制信息被存储在程序栈的方式所导致的结果。在第三章,我们讲解栈的问题和缓存溢出缺陷作为我们汇编语言学习的一部分。我们也会学到一些方法,这些方法能被程序员,编译器,操作系统用来减少被攻击的威胁。

13.熟悉编译系统的好处有:(ABD)

A .

优化程序性能

B .

理解链接时出现的错误

C .

有助于设计处理器

D .

避免安全漏洞

解析:

优化程序执行效率:现代编译器都是非常聪明的工具,它们通常都能产生好的机器码。作为程序员,为了写出高效的代码,我们不需要去知道编译器的内部工作机制。然后,为了在我们的C程序中做出好的编码决定,我们确实需要对机器码和编译器如何把不同的C语句翻译成机器码有基本的了解。例如,switch语句是否总是比一系列if-else语句更高效?一个函数调用需要多少开销?while循环是不是比for循环更高效?指针引用是不是比数组索引更高效?为什么我们将求和结果放在本地变量里比放在通过引用传进来的参数中会使循环跑得快很多呢?我们怎样通过简单重新排列算术表达式中的元括号使函数跑得更快?

在第三章,我们将介绍两个相关的机器语言:IA32,32位机器码在运行Linux,Windows和最近的Macintosh操作系统的机器上无处不在,x86-64,64位扩张在最近的微处理器上能被发现。我们描述编译器怎么样把不同C语言结构翻译成这些语言。在第五章,你将会学到通过对你的C代码做简单的变形——这种形式帮助编译器更好的做它的工作——来调整你的C程序的执行效率。在第六章,你将会学习内存系统的层次特性,编译器如何把数组存储在内存中,以及你的C程序如何利用这些知识来让自己跑得更快。

理解链接时错误:在我们的经验里,一些最令人困惑的错误都与链接器操作相关,尤其是当你尝试构建大型软件系统时。例如,当连接器报告它不能解析一个引用时意味着什么?静态变量和全局变量的的区别是什么?如果你在不同的C文件中定义两个相同名字的全局变量会发生什么?静态库和动态库的区别是什么?为什么我们在命令行列举库的顺序是重要的?最吓人的是,为什么链接器相关的错误在运行时才出现?你将在第七章得到这些问题的答案。

避免安全漏洞:许多年来,缓存溢出缺陷已经引起了网络和互联网服务器中的大部分安全漏洞。这些缺陷之所以存在,是因为几乎没有程序员理解去仔细限制从不可信源接收到的数据的数量和形式的必要性。学习安全编程的第一步是数据和控制信息被存储在程序栈的方式所导致的结果。在第三章,我们讲解栈的问题和缓存溢出缺陷作为我们汇编语言学习的一部分。我们也会学到一些方法,这些方法能被程序员,编译器,操作系统用来减少被攻击的威胁。

14.gcc 把源程序翻译成可执行文件的四个阶段是:预处理阶段,编译阶段,汇编阶段,链接阶段,其中汇编阶段用到的工具和相应的gcc命令是(C)

A .

cpp: gcc -E hello.c -o hello.i

B .

ccl: gcc -S hello.i -o hello.s

C .

as: gcc -c hello.s -o hello.o

D .

ld: gcc hello.o -o hello

解析:gcc命令:ESc, 生成文件后缀iso

预处理阶段:使用预处理器cpp,相应命令是: gcc -E hello.c -o hello.i

编译阶段:使用编译器ccl,相应命令是: gcc -S hello.i -o hello.s

汇编阶段:使用汇编器as,相应命令是:gcc -c hello.s -o hello.o

链接阶段:使用链接器ld,相应命令是: gcc hello.o -o hello

15.(B)就是位+上下文

A .

数据

B .

信息

C .

知识

D .

数据结构

解析:信息就是位+上下文:计算机系统中的所有信息都是由二进制串表示的,区分这些数据对象的唯一方法是读到这些数据的上下文。

时间: 2024-11-05 18:33:34

# 课下测试补交(ch01)20155337的相关文章

第十二章课下测试补交博客

第十二章课下测试补交博客

20155204 信息安全系统设计 第十周 课上测试补交

20155204 信息安全系统设计 第十周 课上测试补交 我的答案:D 我的答案:ACD 我的答案:ACD 我的答案:ABC 我的答案:ABCD 我的答案:A 我的答案:C 我的答案:C 我的答案:C 我的答案:ABD 我的答案:ABCD 我的答案:B 我的答案:A 我的答案:ABC 我的答案:C 我的答案:ACD 我的答案:BDE 我的答案:CE 我的答案:C 我的答案:ADEG 我的答案:BCD 总分:16

20155222卢梓杰 课下测试04补做

20155222卢梓杰 课下测试04补做 1.SEQ+对SEQ的改变有() A . PC的计算挪到取指阶段 B . PC的计算挪到访存阶段 C . 电路重定时 D . 插入流水线寄存器 E . 对信号进行重排和标号 F . 处理流水线冒险 正确答案: A C D E F 解析:在SEQ+中,创建状态寄存器来保存在一条指令执行过程中计算出来的信号.然后,当一个新的时钟周期开始时,这些信号值通过同样的逻辑来计算当前指令的PC. SEQ+中对状态元素的改变称为电路重定时,在SEQ+的各个阶段之间插入了

2017-2018-1 20155214 《信息安全系统设计基础》 第9周课下测试-mypwd

2017-2018-1 20155214 <信息安全系统设计基础> 第9周课下测试-mypwd(深入版) 题目要求: 1 学习pwd命令 2 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3 实现mypwd 4 测试mypwd 在第9周学习总结中,我直接调用了系统调用getcwd()输出当前绝对路径.这次我尝试用c语言实现它的功能. 函数原型 #include <unistd.h> char *getcwd(char *buf, size_t size);

# 课下测试ch02

课下测试ch02 1.假设下面位串是基于IEEE格式的5位浮点表示,一个符号位,2个阶码位,两个小数位.下面正确的是(AD) A . 3.5的表示是[01011] B . -1.0的表示[01111] C . 0.5的表示是[00011] D . 1.5的表示是[00110] 解析: 1. IEEE浮点表示: 符号:s通过其值1负和0正决定V的正负,对于V=0另作解释. 尾数:M是一个二进制小数,它的范围是1 – 2-ε,或者0 – 1-ε 阶码:E的作用是对浮点数加权,权重是2的E次幂(可能是

20175314薛勐 程序设计中临时变量的使用(课下测试,选做)

程序设计中临时变量的使用(课下测试,选做) 要求 定义一个数组:int arr[] = {1,2,3,4,5,6,7,8}; 打印原始数组的值:for(int i:arr){System.out.print(i + " "); } System.out.println();// 添加代码删除上面数组中的5 ... 打印出 1 2 3 4 6 7 8 0:for(int i:arr){System.out.print(i + " ");} System.out.pri

补交课下测试(ch12并发编程) 08.第八周

有关线程图,下面说法正确的是() A .图的原点表示没有任何线程完成一条指令的初始状态 B . 向右向上是合法的转换 C .向左向下是合法的转换 D .对角线是合法的转换 E .一个程序执行的历史被模型化成状态空间中的一条轨迹线 F .进度图中,两个临界区的交集形成不安全区 正确答案: A B E F 下面代码对于并发程序来说逻辑上是(5)条指令? for(i=0:i<1000; i++) cnt++; 3 ( 多选题 | 1 分) 有关多线程的说法,正确的是(A B C D E) A . 竞争

20155332 补交ch12课下作业

20155332 补交ch12课下作业 课下测试提交晚了,我课后补做了一遍,答对13题,答错3题. 试题内容如下所示: 课本内容 1.并发(Concurrency) 访问慢I/O设备:就像当应用程序等待I/O中的数据时内核会切换运行其他进程一样,我们的应用也可以用类似的方式,将I/O请求与其他工作重叠从而挖掘并发的潜能. 推迟工作而减少延迟:我们可以推迟一些耗时工作稍后执行,例如内存分配器不在free时整理碎片,而是将这些琐屑的工作推迟到一个稍后执行的独立"逻辑流"(logical f

week14课上测试

说明 本次测试老师将所有课下测试的易错题全部重新考察了一遍,虽然是第二次做,还提前复习过,还是错了很多,回到寝室发现老师还没有结束测试,43分的我又忍不住再做了一遍. 做第二遍发现了有几个题目是蓝墨云上答案错误,老师在课上纠正过的,我还是和蓝墨云上的一样的答案,在做第二遍的时候特意改了一下. 题目 (多选题|1分)假设用ADD指令完成C表达式t=a+b的功能,有关条件码寄存器的说法正确的是() A.若t==0,则ZF=1 B.若t<0, 则CF=1 C.若t<0, 则SF=1 D.若(a<