> 文档中心 > 读书笔记Pt.3——《深入理解计算机系统》

读书笔记Pt.3——《深入理解计算机系统》

目录

    • 传统艺能😎
    • 指令级并行🤔
  • 单指令,多数据并行🤔
    • 系统中抽象的重要性🤔
    • 小结(必看)🤔
  • 第二章
    • 信息存储🤔
    • 十六进制表示法🤔
    • 字🤔

传统艺能😎

小编是双非本科大一菜鸟不赘述,欢迎大佬指点江山(QQ:1319365055)
此前博客点我!点我!请搜索博主 【知晓天空之蓝】
乔乔的gitee代码库(打灰人 )欢迎访问,点我!

🎉🎉非科班转码社区诚邀您入驻🎉🎉
小伙伴们,打码路上一路向北,背后烟火,彼岸之前皆是疾苦
一个人的单打独斗不如一群人的砥砺前行
这是我和梦想合伙人组建的社区,诚邀各位有志之士的加入!!
社区用户好文均加精(“标兵”文章字数2000+加精,“达人”文章字数1500+加精)
直达: 社区链接点我

在这里插入图片描述

指令级并行🤔

在比较低的抽象层次上,现代处理器可以同时执行多条指令的属性称为指令级并行。早期的处理器,执行完一条指令所需要的周期通常是多个,比较先进的也就保持2-4条指令一个周期,本质上一条指令执行完是需要大约 20 个或者更多周期的,但是处理器非常聪明,他有手段来同时处理100条指令,比如后序会引入的 流水线 概念。

如果处理器可以达到一个周期一条指令或者更快的话,我们称之为超标量处理器,大多数可以支持这个功能,后面也会介绍超标量的高级模型,如果理解了这个模型就可以更好的理解程序的性能,写出拥有更高的指令级的并行性的代码,从而可以跑的更快。

单指令,多数据并行🤔

在低层次上,现代处理器拥有特殊的硬件,允许一条指令产生多个可以并行执行的操作,被称为单指令,多数据并行,也被称为 SIMD 并行,比如我们熟知的英特尔的AMD处理器都可以用这种属性来完成四对浮点数的加法操作。

提供这种机制其实是为了完成影像,声音,视频等数据的处理的速度。
在这里插入图片描述

系统中抽象的重要性🤔

抽象这个词本来就很抽象了,但不巧的是他还是一个最为重要的概念之一,例如,为一组函数规定简单的程序接口就是一个好习惯, == 计算机系统里面抽象就是用来隐蔽实际实现的复杂性==,无聊晦涩的书面语咱无需咀嚼,形象的来说C语言的函数原型就是抽象的使用,我们无需了解他内部的原理就可以使用。不同的语言提供不同形式和等级的抽象支持。

在这里插入图片描述

之前我们已经介绍过几个抽象了,比如处理器里面指令级结构提供了实际处理器硬件的抽象。使用这个抽象,就好像它是运行在一个一次只执行一条指令的处理器上,底层的硬件比抽象描述的复杂精细许多,它并发的执行多条指令,但又总是与那些简单有序的模型保持一致。只要执行模型一样,不同处理器实现也能处理同样的机器代码。

学习操作系统咱必须知道三个抽象:

  1. 文件是对I/O的抽象;
  2. 虚拟存储器是对存储器的抽象;
  3. 进程是对一个正在运行程序的抽象;

小结(必看)🤔

  1. 计算机系统由硬件和软件组成,他们共同协作以运行程序。计算机内部信息被表示为一组组的位,他们依据上下文和不同的解释方式,程序被其他程序翻译成不同的形式:开始是ASCII文本,然后被编译器和链接器翻译成二进制文件。
  2. 处理器读取并解释二进制指令,因为程序讲大量时间用于各种设备硬件之间数据的复制,所以将系统的存储划分出了层次结构:CPU寄存器位于最上面,接着是高速缓存,主存,和磁盘。金字塔结构里面成本和执行速度是对立的层次中较高层次的存储结构可以作为较低层次存储结构的高速缓存。
  3. 操作系统内核是程序和硬件之间的媒介。他提供三个基本抽象:文件,虚拟存储器,进程。
  4. 最后,网络提供了计算机系统之间的通信手段,从特殊的角度上讲,网络就是一种 I/O的抽象。
    在这里插入图片描述

第二章

这部分属于程序的结构和执行,如果你觉得等式和公式令人生畏,不要让他阻止你阅读这部分,为了完整性,我的读书笔记也不会精简太多,但我会跳过某些晦涩的推导,有兴趣的可以自行进行查阅。
啾~

信息存储🤔

大多数计算机都是8位的字节,作为最小可寻址的存储器单元,而不是存储器中访问单独的位。机器级程序将存储器看成一个非常大的字节数组,称为虚拟存储器,存储器每个字节都是由一个唯一的数字来标识,他就是地址,所有可能的地址集合成为虚拟地址空间。顾名思义,这个虚拟存储空间只是一个概念性的映像。实际的实现依赖于 RAM,磁盘,硬件和操作系统的结合,为程序提供一个看上去统一的数组。

十六进制表示法🤔

一个字节由8位组成,二进制表示法中,他的值域是二进制的00 00 00 00-11 11 11 11,也就是十进制的 0-255,二进制表示法太冗长,十进制表示法与位模式互换又很麻烦,我们就有相应替代的方法:16 进制简写为 hex,使用 0-9,A-F 表示16个整型数字,下图就是 16 进制表示法:
在这里插入图片描述
C语言里面,以 0x 或者 0X 开头的数字常量就是 16 进制,a-f 科大写可小写甚至可以混合使用,书中下文的讨论也是使用 C语言标准的 16 进制表示法,关于数字之间的转换,这里给了一个窍门:记住每个十六进制数字 A-F 对应的十进制数字的值,可通过计算他们与前三个值的相对关系来看

假设这里有个 0x173a4c,我们展开他的每一个十六进制数字:
在这里插入图片描述
这样就得到了二进制的: 000101110011101001001100

反过来一样的,我们可以讲十进制序列每四位分成一组,再转换成 16 进制,如果序列不满足 4 的倍数,最左边一组可以小于 4 ,前面,前面用 0 来补足再转换出 16 进制
再来点邪术:

在这里插入图片描述

字🤔

每台计算机都有一个字长,指明了整数和指针数据的大小,因为我们的虚拟地址也是靠字来编码的,所以字长决定的最重要的就是虚拟地址空间的最大大小,也就是说,一个字长为 w 位的机器虚拟地址范围就是 0-2^(w-1) ,于是做多访问 2 的 w 次方个字节。

现在大多数计算机的字长都是 32 位,限定了虚拟地址空间为 4 千兆字节(4GB),随着存储器价格的降低,字长为 64 位的高端机器正在为大规模科学与数据库应用提供平台基础,往后台式本和笔记本也会变成 64 字节。

今天就到这里吧,摸了家人们

在这里插入图片描述

读书笔记Pt.3——《深入理解计算机系统》 创作挑战赛 读书笔记Pt.3——《深入理解计算机系统》 新人创作奖励来咯,坚持创作打卡瓜分现金大奖在线短网址网站