![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
计算机系统CSAPP
文章平均质量分 96
主要以深入理解计算机系统 (第三版)内容为基础,且【重点关注第3、7、8、9章以及第三部分所有】的内容。
KuoGavin
这个作者很懒,什么都没留下…
展开
-
计算机多级缓存架构和MESI缓存一致性协议
现在的处理器都是多核处理器,并且每个核都带有多个缓存(指令缓存和数据缓存,见下图)。为什么需要缓存呢,这是因为CPU访问内存的速度比较慢,所以在CPU和内存之间加了个缓存以提高访问速度。既然每个核都有缓存,那么假设两个核或者多个核同时访问同一个变量时这些缓存是如何进行同步的呢(缓存细分为一个个缓存行),这就有了MESI协议。 缓存行的四个状态: MESI中每个缓存行都有四个状态,分别是E(exclusive...转载 2021-08-27 16:44:28 · 410 阅读 · 0 评论 -
计算机为何采用补码表示负数 & int类型的表示范围和移位操作
文章目录1. 计算机为何采用补码表示负数1.1 原码:1 - 1 = 01.2 反码:1 - 1 = 01.3 补码:1 - 1 = 02. int类型的表示范围(以16bits为例)1. 计算机为何采用补码表示负数计算机的原码、反码和补码可知,计算机有三种编码方式来表示同一个数:原码:符号位加上真值的绝对值,第一位表示符号,其余位表示值。反码:正数的反码是其本身;负数的反码是在其原码的基础上,符号位不变,其余位取反。补码:正数的补码还是其本身;负数的补码是在其原码的基础上,符号位保持不变,其原创 2021-07-22 20:54:08 · 1227 阅读 · 1 评论 -
虚拟内存(Virtual Memory)
虚拟内存为计算机提供了三种重要的能力:①将主存看成一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域(利用局部性,locality),并根据需要在磁盘和主存之间来回传送数据,高效地使用主存;②为每个进程提供了一致的地址空间,简化了内存管理;③保护每个进程的地址空间不被其他进程破坏。原创 2021-05-31 21:51:39 · 1553 阅读 · 2 评论 -
异常控制流(Exception Control Flow)
异常就是控制流中的突变,用来响应处理器状态中的某些变化。它一部分由硬件实现,一部分由操作系统实现。在任何情况下,处理器检测到有事件发生时,通过异常表(exception table)的跳转表,进行一间接过程调用(异常),到异常处理程序(exception handler, 专门设计用来处理相关事件的操作系统子程序)。原创 2021-05-25 22:39:05 · 1630 阅读 · 1 评论 -
链接器、链接过程及相关概念解析
链接(linking)是将各种代码和数据片段收集并组合为一个单一文件的过程,所得到的文件可以被加载(复制)到内存并执行。链接由链接器(linker)程序执行,链接执行的时机有:编译时(compile time),加载时(load time),运行时(run time)三种时机...原创 2021-05-15 22:54:45 · 3650 阅读 · 1 评论 -
程序的机器级表示
Intel处理器的系列和架构演进:Intel处理器系列俗称x86,此处引入IA32的概念,作为x86_64的32位前身,于1985年提出,是Intel机器语言之选。8086(1978)->i386(1985)->Pentium(1993)->Core(2006)对于使用机器级代码的机器级编程而言,有两种重要抽象:指令集体系结构或指令集架构(Instruction Set Architecture, ISA),来定义机器级程序的格式和行为;机器级程序使用的内存地址是虚拟地址,所提原创 2021-05-11 23:23:15 · 1438 阅读 · 2 评论 -
计算机系统漫游
文章目录1. 程序由源文件转换至机器码的过程2. 了解编译系统的工作原理和流程3. 处理器读并解释储存在内存中的指令3.1 系统的硬件组成1. 程序由源文件转换至机器码的过程helloWorld.c 源程序是一 ASCII文本文件,要通过预处理、编译、汇编和链接四个阶段转换为目标程序(可执行目标文件)。linux> gcc -o hello hello.c以上 shell 指令就是指令将源文件转换为目标文件,其是由 gcc(GNU 的众多工具之一,即编译器驱动程序)完成的。整个转换过程分原创 2021-04-29 02:47:59 · 336 阅读 · 1 评论