第一章 系统概述

计算机系统基础 第一章 知识点梳理

这张图说的真的好,虽然和知识没有什么关系,最初看到也觉得没什么,但是学了大半学期再倒回来看这些话,我认为是十分正确的。同样的代码,不同的写法,效率可能差上成百上千倍。然后就是特别是通过bomb lab,做了之后我对整个C语言的理解都不一样了。知其然,更要知其所以然,可能这就是系统的魅力吧!

为什么要学习计算机系统

  • 为了编程序的时候少出错(逻辑性,准确性,内存溢出等)
  • 为了在程序出错的时候很快找到出错的地方(gdb调试,或者直接查看汇编指令,找到错误)
  • 为了明白程序是怎样在计算机上执行的(利用程序执行的原理,可以编写出更快的程序)
  • 作为计算机专业的同学应该具有的底层意识。

计算机基本工作原理

一些基本的概念。

冯·诺依曼体系

冯·诺依曼结构最重要的思想是存储程序

  1. 计算机的基本部件:控制器、存储器、运算器、输入设备和输出设备。(计导必考题目!!)
  2. 存储器不仅能存放数据,而且也能存放指令,形式上两者 没有区别,但计算机应能区分数据还是指令。
  3. 控制器应能自动取出指令来执行。
  4. 运算器应能进行加/减/乘/除四种基本算术运算,并且也 能进行一些逻辑运算和附加运算。
  5. 操作人员可以通过输入设备、输出设备和主机进行通信。
  6. 内部以二进制表示指令和数据。每条指令由操作码和地址码两部分组成。操作码指出操作类型,地址码指出操作数的地址。由一串指令组成程序。
  7. 采用“存储程序”工作方式。

计算机是如何工作的

计算机系统基础 第一章 知识点梳理

图中的部件解释:

  • CPU:中央处理器
  • PC:程序计数器
  • MAR:存储器地址寄存器
  • ALU:算术逻辑部件
  • IR:指令寄存器
  • MDR:存储器数据寄存器
  • GPRs:通用寄存器组(由若干通用寄存器组成,早期就是累加器)

程序执行前:

数据和指令事先存放在存储器中,每条指令和每个数据都有地址,指令按序存放,指令由OPADDR字段组成,程序起始地址置PC

注意:

  1. 程序启动前,指令和数据都存放在存储器中,形式上没有差别,都是0/1序列
  2. 采用”存储程序“工作方式:程序由指令组成,程序被启动后,计算机能自动取出一条一条指令执行,在执行过程中无需人的干预。
  3. 指令中需要给出的信息:
    (1) 操作性质(操作码)
    (2) 源操作数1 或/和源操作数2(立即数、寄存器编号、存储地址)
    (3) 目的操作数地址(寄存器编号、存储地址)

开始执行程序:

  • 第一步:根据PC取指令
  • 第二步:指令译码
  • 第三步:取操作数
  • 第四步:指令执行
  • 第五步:回写结果
  • 第六步:修改PC的值
  • 继续执行下一条指令

程序的开发和执行

机器语言

机器语言就是0/1代码啦!在计算机科学导论中我们也动手写了图灵机的操作(虽然我们班好像没有要求,但因为某种原因我写过几份,现在回想起来也挺有趣的)。感觉机器语言和图灵机有点类似,通过读写纸带和打孔之类的。

但是,如果要修改,或者打错了,那么就要从头再来,非常地崩溃,可读性也非常差。

汇编语言

  • 用助记符表示操作码
  • 用标号表示位置
  • 用助记符表示寄存器

优点:

  • 不会因为增减指令而需要修改其他指令
  • 不需记忆指令编码,编写方便
  • 可读性比机器语言强

计算机系统基础 第一章 知识点梳理

高级语言

  • 它们与具体机器结构无关
  • 面向算法描述,比机器级语言描述能力强得多
  • 高级语言中一条语句对应几条、几十条甚至几百条指令
  • 有“面向过程”和“面向对象”的语言之分
  • 处理逻辑分为三种结构:顺序结构、选择结构、循环结构
  • 有两种转换方式:“编译”和“解释”
    • 编译程序(Complier):将高级语言源程序转换为机器级目标程序,执行时只要启动目标程序即可,比如C++、C、Java等
    • 解释程序(Interpreter ):将高级语言语句逐条翻译成机器指令并立即执行,不生成目标文件,比如Python等

源代码的处理

计算机系统基础 第一章 知识点梳理

计算机系统基础 第一章 知识点梳理

计算机的层次结构

计算机系统基础 第一章 知识点梳理

计算机系统基础 第一章 知识点梳理

计算机性能的定义

这部分在书上有,mooc上没有。其主要指标为吞吐率(throughput)响应时间(response time)

  1. 吞吐率:在单位时间内所完成的工作量。
  2. 响应时间:从作业提交开始到作业完成所用的时间。

相关文章: