现在是2022年4月17日晚10点,本月计划的网课《csapp讲解》视频课看到了第八章“异常”第三讲,视频讲的很好但更新很慢,暂时没有最新的讲解,所以先做一个简单总结。总的来说,让我对自己写的代码是如何在操作系统中被加载然后按照代码逻辑运行有了更深层次的理解。这门课目前涉及到的知识点总的可以分为计算机硬件架构和操作系统与程序这两部分,即硬件与软件。之前本科阶段也学过计算机硬件技术基础,但没有学过操作系统和编译原理这些CS必修课。这门课也涉及到很多非常底层和硬件讲解,对那些感觉以后也不会用到的比如存储技术、三级缓存等等,只做了简单了解原理,并未深究。

1. 总体结构



这个结构是应该刻在我们的大脑里的,CPU和内存之间通过系统总线和内存总线通讯,IO总线负责和外部设备的通讯,所有的计算任务都会送到cpu中计算。cpu中真正进行计算的硬件是ALU(计算单元),此外还有寄存器用于保存变量,此外还有为提高和内存通讯速度的三级缓存也在CPU里面等等。当一个main.cpp被编译为可执行文件后,在终端输入./main.o后,执行该可执行文件的命令会传给操作系统,操作系统从磁盘加载该文件到内存,然后将cpu控制权交给该可执行文件,cpu从内存中读取对应的代码段起始指令,即main函数。然后按照逻辑执行。

2. 信息存储

常见数据类型在内存中的存储方式,如int、char、float等,再比如无符号数和有符号数的区别,以及表示方法的区别。这部分内容相对而言很基础,虽然深挖还是有很多东西,但没必要,会用就行。

3. 程序表示和执行

代码编译流程是必须掌握的,这里大概做下总结:

  • 预处理:宏展开和include替换、删除无关代码,生成预处理后文件
  • 编译:将高级语言转为汇编代码,生成汇编代码,用指令集表示命令
  • 汇编:将汇编代码转为机器代码,生成机器代码,二进制形式的cpu指令表示
  • 链接:将引用的代码包含进来,包括静态链接和动态链接,保证可执行文件能够运行。



    下面是指令集的一个示例,高级语言翻译为底层汇编后就是长这个样子,这些命令和CPU架构是匹配的,所以为不同平台编译的汇编文件是不一样的,如常见的下x86架构和arm架构,需要不同的编译器来完成为目标平台生成可执行代码的工作。题外话,目前深度学习需要用到异步计算设备GPU的支持,GPU的功能和CPU是相似的,但CPU更偏向于通用,GPU更偏向于简单计算并行化,以提高运算速度,此外还会为特殊的数学计算提供硬件支持,如模型中常见的Sigmoid等非线性计算。此外,CUDA库大大降低了软件人员调用GPU计算的难度,在此基础上,还有如onnxruntime、mxnet、ncnn等推理库实现了非常全面的网络OP,进一步方便了相关算法的落地。

4. 处理器工作逻辑

5. 程序优化

6. 存储技术

7. 编译原理

8. 异常

《计算机组成原理/CSAPP》网课总结(一)的更多相关文章

  1. 《计算机组成原理/CSAPP》网课总结(二)——编译原理基础

    这部分是四月份的安排,拖到五一放假了,主要是对源码编译过程的一次总结,总的来说,大致可分为预编译.编译.汇编和链接四部分.这里简单记录一下: 一 概述 1.预处理 或者说是预编译,指的是在编译前需要做 ...

  2. linux的系统组成和计算机组成原理,linux常用操作

    Linux入门 linux简介   学习目的:linux服务器操作系统稳定长期运行,python,pycharm装于linux上 linux系统组成 应用软件:调用系统软件接口 linux操作系统分两 ...

  3. 《计算机组成原理 》& 《计算机网络》& 《数据库》 Roadmap for self-taugh student

    计算机组成原理: UCB的这门课绝对是不错的资源. Great Ideas in Computer Architecture (Machine Structures) B站:https://www.b ...

  4. Linux内核学习期末总结(网课)

    标签(空格分隔): 20135321余佳源 余佳源(原创作品转载请注明出处) <Linux内核分析> MOOC课程http://mooc.study.163.com/course/USTC ...

  5. 推荐书单(网课)-人生/编程/Python/机器学习-130本

    目录 总计(130本) 一.在读 二.将读 三.已读 非专业书单(77本) 四.已读 专业书单(53本) 五.已看网课(8个) 六.在看网课 一个人如果抱着义务的意识去读书,便不了解读书的艺术.--林 ...

  6. 《数据结构》《C++程序设计》《计算机组成原理》中的英语名词

    一.数据结构 data 数据data element 数据元素data item 数据项data object 数据对象data structure 数据结构ADT (Abstruct Date Ty ...

  7. 计算机组成原理(电脑硬件&语言分类)

    计算机组成原理 一.电脑硬件配置 CPU :中央处理器(人类的大脑) -飞机 内存:存放一些临时数据(人类的短暂记忆-右脑) -高铁 硬盘:存储永久数据(左脑-长期记忆) - 汽车 输入输出:键盘鼠标 ...

  8. 计算机组成原理往年试题以及答案(tzf!!!)

    计算机组成原理往年试题以及答案(下载链接!!!) 太子妃升职记(1~36) ::http://pan.baidu.com/s/1dDP5Kqd

  9. 计算机组成原理实验之CPU组成与指令周期实验

    (实验五  CPU组成与指令周期实验) 课程 计算机组成原理实验 实验日期 2015 年 12 月  8 日 一.实验目的 1.将微程序控制器同执行部件(整个数据通路)联机,组成一台模型计算机. 2. ...

随机推荐

  1. windows编写sh脚本在linux上不能执行

    报错:/bin/sh^M:bad interpreter: 编码没有被识别, vi *.sh Esc 输入 :set fileformat 查看文件格式(显示  fileformat=dos) Esc ...

  2. vue 3d轮播组件 vue-carousel-3d

    开发可视化项目时,需要3d轮播图,找来找去发现这个组件,引用简单,最后实现效果还不错.发现关于这个组件,能搜到的教程不多,就分享一下我的经验. 插件github地址:https://wlada.git ...

  3. C语言 | 栈的应用 | 非递归栈实现快排

    /* 非递归栈实现快排 */ #include <stdio.h> #include <math.h>> #include <malloc.h> #inclu ...

  4. 接口combine

    需求描述 进行复杂项目开发时,服务端(数据接口实现端)会把接口拆分的比较细粒度,以方便在更多地方复用.而拆分后的接口在前端进行组合请求时,通常会出现一个区块要请求5.6个接口甚至更多接口请求才能拿到想 ...

  5. EMS修改邮箱容量限制的方法

    使用PowerShell命令完成邮箱数据库限制任务. 以Exchange管理员身份打开EMS控制台.在PowerShell命令提示符下,键入如下命令. Set-MailboxDatabase Test ...

  6. Docker-操作容器1

    ->点击该链接:Linux(Centos7)安装Docker<- 前言 步骤: 软件镜像->运行镜像->产生一个容器 这就类似于我们在pc端下载微信时需要启动wechat.ex ...

  7. typora简单使用手册

    typora简单使用手册讲解`` 下载网站 网址:https://typoraio.cn/ 苹果电脑:https://typora.en.softonic.com/ 正版呢当然是收费 破解版自行百度 ...

  8. java实现sftp文件上传下载

    /** * * @param filePath 文件全路径 * @param ftpPath 上传到目的端目录 * @param username * @param password * @param ...

  9. 小程序 -- 去掉button默认样式

    button { position:relative; display:block; margin-left:auto; margin-right:auto; padding-left:14px; p ...

  10. es6 class解析

    直入主题.源代码如下: class A{ aName = 'A' constructor(aAge){ this.aAge = aAge } static aStatic = 'aStatic' } ...