《深入理解计算机系统》笔记-计算机系统漫游

news/2024/7/5 20:29:44

本笔记是学习南大袁春风老师的《计算机系统基础》时整理的笔记。若有理解错误,欢迎大家指正!谢谢~
(该网课是CSAPP的配套资源)

视频地址:https://www.bilibili.com/video/BV1kE411X7S5?p=9&spm_id_from=pageDriver

文章目录

  • 一、什么是计算机系统?
    • 1. “计算机系统基础” 内容概要
    • 2. 为什么要学习 “计算机系统基础”?
    • 3. 冯 · 诺依曼结构
    • 4. 现代计算机结构
    • 5. 从机器级语言到高级语言
      • 5.1 最早的程序开发过程
      • 5.2 用汇编语言开发程序
      • 5.3 用高级语言开发程序
    • 6. 计算机系统的层次结构
      • 6.1 历程
      • 6.2 指令集体系结构(ISA)

一、什么是计算机系统?

在这里插入图片描述

程序的执行结果 不仅取决于 算法、程序编写,而且取决于 语言处理系统、操作系统、ISA、微体系结构。

不同计算机课程处于不同层次,必须将各层次关联起来解决问题。

1. “计算机系统基础” 内容概要

在这里插入图片描述

三个主题

在这里插入图片描述

2. 为什么要学习 “计算机系统基础”?

在这里插入图片描述

3. 冯 · 诺依曼结构

1946年,普林斯顿高等研究院开始设计 “存储程序” 计算机,被称为 IAS计算机。

  • 在这个报告中提出的计算机结构被称为 冯 · 诺依曼结构。
  • 冯 · 诺依曼结构最重要的思想是 “存储程序”
    工作方式:任何要计算机完成的工作都要先被编写成程序,然后将程序和原始数据送入主存并启动执行。一旦程序被启动,计算机应能在不需操作人员干预下,自动完成逐条取出指令和执行指令的任务。
  • 几乎现代所有的通用计算机大都采用 冯 · 诺依曼结构,因此。IAS计算机是现代计算机的原型机。

冯 · 诺依曼结构计算机模型

在这里插入图片描述

冯 · 诺依曼结构的主要思想

在这里插入图片描述

4. 现代计算机结构

在这里插入图片描述

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

计算机是如何工作的?

厨房:CPU;你妈:控制器;盘:GPRs;锅灶等:ALU;架子:存储器

在这里插入图片描述

5. 从机器级语言到高级语言

5.1 最早的程序开发过程

  • 用机器语言编写程序,并记录在纸带或卡片上(所有信息都是 0 / 1序列)
  • 书写、阅读困难!

5.2 用汇编语言开发程序

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

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

但是,须通过汇编程序将汇编语言转为机器语言,机器才能够运行。

结论:用汇编语言比机器语言好,但是,还是很麻烦!

机器语言和汇编语言都是面向机器结构的语言,故它们统称为 机器级语言。

5.3 用高级语言开发程序

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

一个典型程序的转换处理过程

#include <stdio.h>
int main()
{
   printf("hello, world\n");
}

在这里插入图片描述

Hello程序的数据流动过程在这里插入图片描述

不同层次语言之间的等价转换
在这里插入图片描述

任何高级语言最终通过执行若干条指令来完成!

6. 计算机系统的层次结构

6.1 历程

最早的计算机用机器语言编程(第一代程序设计语言)

在这里插入图片描述

后来用汇编语言编程(第二代程序设计语言)

在这里插入图片描述

现代计算机用高级语言编程

  • 过程式语言(第三代程序设计语言)

  • 非过程(面向对象)语言(第四代程序设计语言):编码时只需说明 “做什么”,不需要描述具体的算法实现细节。

在这里插入图片描述

语言处理系统包括:各种语言处理程序(如编译、汇编、链接)、运行时系统(如库函数,调试,优化等功能)

操作系统包括 人机交互界面、提供服务功能的内核例程

可以看出:语言的发展是一个不断 “抽象” 的过程,因而,相应的计算机系统也不断有新的层次出现。

现代计算机系统的不同用户

在这里插入图片描述

  • 最终用户 工作在由应用程序提供的最上面的抽象层;
  • 系统管理员 工作在由操作系统提供的抽象层;
  • 应用程序员 工作在由语言处理系统(主要有编译器和汇编器)的抽象层;
    语言处理系统建立在操作系统之上
  • 系统管理员 (实现系统软件)工作在ISA层次,必须对ISA非常了解。

编译器和汇编器的目标程序由机器级代码组成;
操作系统通过指令直接对硬件进行编程工作;
ISA处于软件和硬件的交界口(接口)。

6.2 指令集体系结构(ISA)

  • ISA简称为 指令系统。

  • ISA是一种规约,它规定了如何使用硬件:

    在这里插入图片描述

  • ISA在 通用 计算机系统中是必不可少的一个抽象层,Why?

    • 没有它,软件无法使用计算机硬件!
    • 没有它,一台计算机不能称为 “通用计算机”
  • ISA 和 计算机组成(微结构) 之间的关系

    • 不同ISA规定的指令集不同,如,IA-32、MIPS、ARM等
    • 计算机组成必须能够实现ISA规定的功能,如提供 GPR、标志、运算电路等
    • 同一种ISA可以有不同的计算机组成,如乘法指令可用ALU或乘法器实现

    ISA是计算机组成的抽象!


http://www.niftyadmin.cn/n/1665946.html

相关文章

c# winform编程之多线程ui界面资源修改总结篇

单线程的winfom程序中&#xff0c;设置一个控件的值是很easy的事情&#xff0c;直接 this.TextBox1.value "Hello World!";就搞定了&#xff0c;但是如果在一个新线程中这么做&#xff0c;比如: private void btnSet_Click(object sender, EventArgs e) { Th…

selenium 原理应用 - 利用 requests 模拟 selenium 驱动浏览器

前言 selenium 是一个 Web 自动化测试的开源框架&#xff0c;它支持多语言&#xff1a;python/java/c#… 前面也有一篇文章说明了&#xff0c;selenium 浏览器的环境搭建。 selenium 支持多语言&#xff0c;是因为 selenium 与浏览器驱动之间是通过 http 协议进行通信的。只…

区块链与Git版本工具的比较

区块链与Git版本工具的比较 来源&#xff1a;http://www.jianshu.com/p/b96b98983df6作者&#xff1a; 梁波林 相同点&#xff1a; 1. 分布式存储方案 2. 链式数据 3. 去中心化 4. 支持离线访问 5. 交易量较小 6. 参与方多&#xff0c;网络规模大 不同&#xff1a; 1. 数据内容…

RubyMine 2018.3.5 发布,流行的 Ruby 开发工具

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; >>> RubyMine 2018.3.5 (build 183.5912.16) 发布了&#xff0c;带来了一些平台上的改进。RubyMine 是一个为 Ruby 和 Rails 开发者准备的 IDE。 新版本的更新亮点有&#xff1a; Ruby…

六个开源软件开发的“潜规则”

你想成为开源项目中得意满满、功成名就的那个人吗&#xff0c;那就要遵守下面的“潜规则”。 正如体育界不成文的规定一样&#xff0c;这些规则基本上不会出现在官方文档和正式记录上。比如说&#xff0c;在棒球运动中&#xff0c;从比分领先时不要盗垒&#xff0c;到跑垒员跑了…

C++进阶篇二:C++标准模版库之算法

为什么80%的码农都做不了架构师&#xff1f;>>> 写在<algorithm>头文件之前 在CSTL的头文件<algorithm>中&#xff0c;各式算法函数往往会对支持该算法的最低迭代级别作出要求。任何算法作用的容器或迭代&#xff0c;只有支持的权限等于或高于算法要求…

cookie 与 SSO 的两三事

前言 前面的文章记录了proxy代理后端接口&#xff0c;其实践过程中也不乏踩坑之处。 SSO单点登录 这里有一篇文章写得不错&#xff0c;分析了淘宝、天猫的登录场景(漫谈单点登录)。 COOKIE 关于cookie的知识自己搜&#xff0c;我这就不废话了。关键看请求的response headers &a…

Katalon Studio 自动化测试工具介绍

前言 在软件测试这条道路上&#xff0c;大部分的职业技能发展道路都会是功能测试-> 自动化测试-> 性能测试-> 安全测试/测试开发。 但是却有着一部分人起初进入软件测试这一行看重的就是软件测试属于 IT 行业&#xff0c;门槛比较低&#xff0c;不需要代码基础。这就…