《计算机系统概论》-第1章-习题答案

  1. 试解释1.5节中两个重要思想中的第一个。
    所有计算机的模型都是一样的,只要输入是一样的,输出结果也是一样的。
  2. 试问,同汇编语言相比,高级语言是否能向底层计算机表述更多的计算方式?
    不能。因为高级语言与底层计算机的相关性很弱,而汇编语言则是与执行程序的计算机密切相关的。
  3. 试问,是什么原因使得模拟计算机难以实现,从而使设计者转向采用数字设计?
    因为模拟计算机(机械设备就属于模拟计算机)很难提高精度,而数字计算机可以。
  4. 列举自然语言的特征之一,说明它为什么不适合直接作为编程语言?
    自然语言有二义性,而计算机其实很笨,需要明确的指令去执行,二义性的语言容易产生歧义,让计算机无法执行。
  5. 试用自然语言写一句话,然后给出这句话可能的两种解释。
    我去(可能是语气词,也可能代表我要去什么地方)
  6. 1.3.1节有关抽象的讨论给出的结论是:如果“底层所有一切都很好“,我们是没有必要去理解这些部件的组成的。但如果情况并不良好,我们还是要学会分解部件。在出租车的例子中,你并不知道怎样才能到达机场。采用抽象的方法,你只需要简单地告诉司机“带我去飞机场“即可。解释在什么情况下这种方法是有效的,在什么情况下会起到反作用。
    当抽象可以解决问题的时候,这种方法是有效的。当抽象不能解决问题时,比如,想要知道去飞机场的具体路线,这时用抽象反而会起到反作用。
  7. John说:“I saw the man in the park with a telescope.“。这意味着什么?对这句话有多少种可能的解释?请列出来。这句话具备的什么特性,使得它如果出现在程序中是无法接受的?
    我在公园看见那个人拿着电话。
    我看见那个人在公园拿着电话。
    这句话具有二义性,出现在程序中是无法接受的。
  8. 试问,自然语言可以表达算法吗?
    可以,但是表达的内容不能具有二义性。
  9. 给出算法的三个特性,并给出简单的解释。
    确定性。表述清晰,没有二义性。
    可计算性。可以被计算机执行。
    有限性。能够终止。
  10. 针对算法的每个特性,分别给出一个例子,在例子代码中,都缺少这个特性,说明此时为什么不能说它是一个算法。
    确定性。如果缺少确定性,比如,要求给我一个数,这里就没有明确给我一个什么样的数。整数?负数?素数?实数?此时就不是一个算法。
    可计算性。如果缺少可计算性,比如,求最大的一个数,最大的数无法计算,此时就不是一个算法。
    有限性。如果缺少有限性,比如,要求循环打印一句话,没有告诉循环打印多少次,程序将一直执行,此时就不是一个算法。
  11. 两台计算机A和B,除了A具有减法指令外,其他指令完全相同。两者都具有对一个数求负值的指令。试问:A和B两台计算机,哪一台能解决的问题更多?证明你的结论。
    一样多。减法可以通过求负指令实现。
  12. 假设我们试图对一组名字做字母排序(sorting)。有一种算法为“冒泡排序(bubble sort)“;我们用C语言编写这个算法,对其编译并运行在x86 ISA的机器上;x86 ISA可以实现为Pentium IV微结构的方式。我们称这样一个序列为“冒泡排序、C语言编程、x86 ISA、Pentium IV微结构“的转换过程(transformation process)。再假设我们有四种排序算法,且可以用5种语言编程(C、C++、Pascal、Fortran、COBOL);有面向x86和SPARC两种ISA的编译器,且有三种x86的微结构实现、3种SPARC的微结构实现。请问:
    a.共有多少种转换过程?4523=120种
    b.列举其中三种转换工程;
    排序1、C语言编程、x86 ISA、SPARC I微结构
    排序2、COBOL语言编程、SPARC ISA、SPARC II微结构
    排序4、C++语言编程、x86 ISA、SPARC III微结构
    c.如果x86的微结构是2种(而不是3种),SPARC的微结构是4种(而不是3种),那么共有多少种转换过程?
    4
    5*(2+4)=120种
  13. 将高级语言和底层语言相比较,列举一个优点、一个缺点。
    高级语言:优点,与自然语言比较接近,简单易懂。缺点,与底层计算机相关性很弱。
    底层语言:优点,与底层计算机密切相关。缺点,晦涩难懂。
  14. 列举至少三个ISA定义所包含的内容。
    操作数、数据类型、寻址模式
  15. 简单描述ISA和微结构之间的区别。
    微结构是ISA的实现,ISA是微结构的定义。
  16. 一种微结构可以实现多少种ISA?再反问,一种ISA可以在多少种微结构上实现?
    一种微结构只能实现一种ISA。ISA可以在多种微结构上实现。
  17. 列出转换过程的所有层次,并在每层中找一个例子。
    问题:10个1相加等于几?
    算法:读取数字1,与之前的结果累加,循环以上步骤10次
    语言:C、C++、Java语言
    机器(ISA)结构:x86
    微结构:Intel 酷睿7代
    电路:加法器
    器件:CMOS电路、NMOS电路
  18. 图1-6所示的转换层通常又被称为是不同的抽象层次。你认为这种说法是否合理?试用例子加以解释。
    略。
  19. 假设你去商店购买字处理软件。请问该软件通常以什么方式存在?是高级语言方式或是汇编语言?或是与你的计算机ISA兼容的格式?请回答。
    与计算机ISA兼容的格式。因为程序软件需要在计算机上运行,首先必须能够执行计算机上的指令。
  20. 假设给你一个任务,完成图1-6某一层的转换工作,且只允许转换为下面的一层(即不允许“跨层转换“)。试问,你觉得哪一层的转换工作难度最大?为什么?
    略。
  21. 为什么通常会不断改变微结构实现却不改变ISA?例如,Intel公司为什么要确保Pentium III所实现的ISA一定要与之前的Pentium II一样?提示:当你升级计算机(如更换最新的CPU)之后,你希望丢弃原来的软件吗?
    如果改变ISA结构,意味着之前运行的软件需要针对新的ISA结构重新编写,这很麻烦。

参考:https://github.com/QSCTech/zju-icicles/blob/master/计算机系统概论/作业答案/ch01_complete.pdf

你可能感兴趣的:(introduction,to,computing,systems)