《计算机组成原理/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. ...
随机推荐
- Redis 集群方案什么情况下会导致整个集群不可用?
有 A,B,C 三个节点的集群,在没有复制模型的情况下,如果节点 B 失败了, 那么整个集群就会以为缺少 5501-11000 这个范围的槽而不可用.
- java-与文件相关
java.nio.file 表示non-blocking 非阻塞io(输入和输出) 一个 Path 对象表示一个文件或者目录的路径,是一个跨操作系统(OS)和文件系统的抽象 java.nio.file ...
- Eclipse建立Web项目,手动生成web.xml文件
相关文章:https://blog.csdn.net/ys_code/article/details/79156188(Web项目建立,手动生成web.xml文件
- 企业流程再造(BPR)--系统重构
企业流程再造(BPR) 企业流程:指生产或服务过程中一连串活动的工作流程 企业流程再造:对企业流程所进行的根本性的在思考和彻底的再设计,以使企业的速度,质量,服务和成本等关键业绩指标获得根本性的改善
- Demo示例——Bundle打包和加载
Unity游戏里面的场景.模型.图片等资源,是如何管理和加载的? 这就是本文要讲的资源管理方式--bundle打包和加载. 图片 Unity游戏资源管理有很多方式: (1)简单游戏比如demo,可以直 ...
- d面试题汇总
HTML Doctype作用,HTML5 为什么只需要写<!DOCTYPE HTML>? html5有哪些新特性?移除了哪些元素? 简述一下你对HTML语义化的理解? 行内元素有哪些,块级 ...
- php 实验一 网页设计
实验目的: 1. 能够对整个页面进行html结构设计. 2. 掌握CSS+DIV的应用. 实验内容及要求: ***个人博客网页 参考Internet网上的博客网站,设计自己的个人网页,主要包括:图 ...
- C语言之:结构体动态分配内存(利用结构体数组保存不超过10个学生的信息,每个学生的信息包括:学号、姓名和三门课(高数、物理和英语 )的成绩和平均分(整型)。)
题目内容: 利用结构体数组保存不超过10个学生的信息,每个学生的信息包括:学号.姓名和三门课(高数.物理和英语 )的成绩和平均分(整型). 编写程序,从键盘输入学生的人数,然后依次输入每个学生的学号. ...
- OllyDbg---寄存器
寄存器 寄存器的概念和作用 寄存器是CPU内部的高速存储单元,访问速度比常规内存快很多. 处理器在执行程序时,需要一个助手,当执行一条指令时,比如将两个内存单元中存放的内容相加,处理器需要先把其中一个 ...
- allure用法(一)-配置信息及基本用法
allure是一个轻量级的,灵活的,支持多语言的测试报告工具 优点: 可以为dev/qa 提供 详尽的测试报告.测试步骤.日志 可以为管理层提供更好的统计报告 Java语言开发的 可以集成到jenki ...