《计算机组成原理/CSAPP》网课总结(一)
现在是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》网课总结(一)的更多相关文章
- 《计算机组成原理/CSAPP》网课总结(二)——编译原理基础
这部分是四月份的安排,拖到五一放假了,主要是对源码编译过程的一次总结,总的来说,大致可分为预编译.编译.汇编和链接四部分.这里简单记录一下: 一 概述 1.预处理 或者说是预编译,指的是在编译前需要做 ...
- linux的系统组成和计算机组成原理,linux常用操作
Linux入门 linux简介 学习目的:linux服务器操作系统稳定长期运行,python,pycharm装于linux上 linux系统组成 应用软件:调用系统软件接口 linux操作系统分两 ...
- 《计算机组成原理 》& 《计算机网络》& 《数据库》 Roadmap for self-taugh student
计算机组成原理: UCB的这门课绝对是不错的资源. Great Ideas in Computer Architecture (Machine Structures) B站:https://www.b ...
- Linux内核学习期末总结(网课)
标签(空格分隔): 20135321余佳源 余佳源(原创作品转载请注明出处) <Linux内核分析> MOOC课程http://mooc.study.163.com/course/USTC ...
- 推荐书单(网课)-人生/编程/Python/机器学习-130本
目录 总计(130本) 一.在读 二.将读 三.已读 非专业书单(77本) 四.已读 专业书单(53本) 五.已看网课(8个) 六.在看网课 一个人如果抱着义务的意识去读书,便不了解读书的艺术.--林 ...
- 《数据结构》《C++程序设计》《计算机组成原理》中的英语名词
一.数据结构 data 数据data element 数据元素data item 数据项data object 数据对象data structure 数据结构ADT (Abstruct Date Ty ...
- 计算机组成原理(电脑硬件&语言分类)
计算机组成原理 一.电脑硬件配置 CPU :中央处理器(人类的大脑) -飞机 内存:存放一些临时数据(人类的短暂记忆-右脑) -高铁 硬盘:存储永久数据(左脑-长期记忆) - 汽车 输入输出:键盘鼠标 ...
- 计算机组成原理往年试题以及答案(tzf!!!)
计算机组成原理往年试题以及答案(下载链接!!!) 太子妃升职记(1~36) ::http://pan.baidu.com/s/1dDP5Kqd
- 计算机组成原理实验之CPU组成与指令周期实验
(实验五 CPU组成与指令周期实验) 课程 计算机组成原理实验 实验日期 2015 年 12 月 8 日 一.实验目的 1.将微程序控制器同执行部件(整个数据通路)联机,组成一台模型计算机. 2. ...
随机推荐
- Mybatis框架基础入门(二)--架构简介
mybatis配置 SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息. mapper.xml文件即sql映射文件,文件中配置了操作数据库的 ...
- Java中如何声明方法?JavaScript中如何声明函数?
public void method(){ } //实例方法 Function Declaration 可以定义命名的函数变量,而无需给变量赋值.Function Declaration 是一种独立的 ...
- springboot使用jar包方式启动,找不到resources目录中的配置文件(运行时)FileNotFoundException
将springboot项目打包成jar包,使用 java -jar jar包进行启动,富文本框使用ckeditor+ckfinder: 因为ckfinder自定义配置文件了,上传图片时出现了异常 De ...
- SQLyog创建用户并授权的过程
点击你要授权的数据库然后点击用户管理器 然后输入用户名和密码主机选localhost 然后点击创建,然后选择你创建的数据库全选 最后保存就可以了
- JVM原理与深度调优
什么是jvm jvm是java虚拟机 运行在用户态.通过应用程序实现java代码跨平台.与平台无关.实际上是"一次编译,到处执行" 1.从微观来说编译出来的是字节码!去到哪个平台都 ...
- Spring与Web项目整合的原理
引言: 在刚开始我们接触IOC时,我们加载并启用SpringIOC是通过如下代码手动加载 applicationContext.xml 文件,new出context对象,完成Bean的创建和属性的注入 ...
- springboot gateway 动态路由-01
SpringCloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发 ...
- 学习 Haproxy (六)
HAProxy HAProxy是免费 高效 可靠的高可用及负载均衡解决方案,该软件非常适合于处理高负载站点的七层数据请求,HAProxy的工作模式使其可以非常容易且安全地集成到我们现有的站点架构中.使 ...
- IDEA学习之"插件安装位置"
进入设置 找到Plugin,就是插件安装位置了
- C/C++头文件以及避免头文件包含造成的重定义方法
C 头文件 头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享.有两种类型的头文件:程序员编写的头文件和编译器自带的头文件. 在程序中要使用头文件,需要使用 C 预处 ...