《深入理解计算机系统》(原书第二版)粗读笔记

《深入理解计算机系统》

日记

2016年10月27日09:55:34

前两天读了《如何阅读一本书》,感觉在看这本书《深入理解计算机系统》的时候,需要先做一个检视阅读,即:15分钟的有系统的略读,3~5天的粗读。

2016年10月28日09:05:01

系统略读本书。
明后天粗读。

2016年10月31日09:44:06

周六 29号 团建,半宿都在玩,休息了4个小时左右
周日 30号 上午打游戏,下午扛不住了,睡了2小时左右,晚上22点睡。
今早7点半才醒。
这一天天过的。

从10.9日开始,计划学这本书。到现在为止整整20天过去了,第一部分都还没看完,看来自己的毛病还挺多的。各种坚持不下去。
最近借口还挺充足的,早上很冷,没空调和暖气,不愿起来。周六团建,状态不佳,最近事多压力大。等等。

今天晚上开始,21:30躺下,准备睡觉。早6点起,步行或骑车到公司。路上取711看看有没有早餐,没有就买点零食。7~10点三个小时的时间,来看书。

可能前一两天都没精神,毕竟突然早起,但此事,功在当代,利在千秋,所以要坚持。能不能完成这个计划,能不能让自己找回正能量,能否积极向上的良性循环,就看今晚能不能睡着,明早能不能起来了。

起来,前途就有一点点亮光,起不来,以后就得卷铺盖卷回去了。

[end]2016年10月31日09:56:47

2016年11月01日07:06:36

早上6点的闹钟,被闹钟叫起来了,脑子里完全没有昨天发过的誓言,躺了二十分钟,还是起来了。冷的要死,冻成狗。
洗刷后来到公司,6点59,哈哈。明天继续。
今天暂时不能做粗读,原因是下午有一个分享,屁屁踢写的不是很ok,在优化一下,以确保每月一次的组内分享有点干货,尽量让大家节省出来的时间有些收获。
[end]2016年11月01日07:10:13

2016年11月02日07:17:20

今天稍微晚了点。一般来说,坚持早起的前三天最难,但鉴于自己之前有过这种经历,所以只要有一天早起了,剩下的就简单多了。
昨天的分享比较成功,虽然时间短,但达到想要的效果了。
近期没啥需要花费时间的事情了,以后的早上时间,就可以用来读书了。很开心。再做一个规定,晚上下班回去的时间,不开电脑。除非有线上问题需要处理,否则不开电脑。因为开电脑不是必要的事情,完全可以用其他事情替代。

深入理解计算机系统,粗读第一天。

2016年11月03日07:40:37

懒床了,就一小会,然后就完了这么久。。。好吧
继续搞。
得稍微提升下速度,不然得看到啥时候才能搞定呀。
粗读,针对每个章节以及章节下的小标题,提出问题,知道这节在说什么即可。分析阅读时再好好看细节。粗读的目的在于掌握整本书的架构。

实践:每个章节只读一遍,如果没能理解在说什么,则标识【不懂】,然后继续阅读下一章节。如果能理解,则写出概要。

2016年11月04日07:12:44

6点的闹钟,6点30多才穿衣服。。。 太冷了。。。 6点就起还真是个挑战。
继续搞,得稍微加快点进度了。看看一早上能不能搞一章。

2016年11月06日09:56:39

昨天加班,昨晚很晚才睡,早上起不来。。。
继续

2016年11月07日07:29:30

昨晚对自己最近的行为进行反思,为什么指定的计划老是失败,这本书从十月就开始计划学习,三个月内搞定。到现在已经40天了,才看完第三章,还是粗读的(只知道章节在说啥,不知道细节)。
回头又看了下关于自控力的一些东西,其中知乎有一篇帖子写的很好,点这里,最高票回答。里面提到了哈弗公开课的一个视频。找到视频看了看,搞懂一个事情。


每个人的自控力跟时间一样是有限的。每天就这么多。每次强迫自己都会消耗一些。想要真正做一件事情,最好的方法是养成习惯。把它变成例行公事,而不是每次强迫自己去做。


搞清楚这一点之后,剩下的就稍微简单点了。养成习惯的平均周期大概是30天左右。
本月要养成的习惯是:早起+读书。
早起:06:30起
读书:早上2小时,晚上半小时。
每天打卡,月底总结。在朋友圈发出,只要在发出去了,你自己就会不断的鞭策自己,很简单。

继续搞。


2016年11月08日07:32:09

打卡。。。
继续搞。

2016年11月09日07:32:01

打卡
继续

2016年11月10日07:43:05

昨晚11点睡的。。。
早上差点没起来。。。 贵在坚持
继续

2016年11月11日08:38:20

早上不到6点就醒了,睡不着。。。 难道是每天早起习惯了?
不过没看书,双十一,买了些东西。 所以来公司就晚了。
继续搞,搞完。感觉自己不会读书,或者说知识体系为零,所以读一本技术书籍难得要死。坚持多读,总有一天会建立起知识体系的。

2016年11月12日08:21:03

早上6点20,闹钟吵醒的。昨晚跟同事一起去看海贼王剧场版,回家后又下了个游戏《王者荣耀》类lol 的手游,稍微一玩,就快0点了。。。早上起床后,洗刷完毕,依然有点困,坐在床边,打开《王者荣耀》没敢玩,只是看了下英雄、技能、装备等东西,回过神来,又半个小时过去了。
在脑袋不清醒的时候很容易被诱惑,保持清醒很重要。
再就是,不要把诱惑摆在自己面前,脑子清醒的时候可以抵抗,但总有累的时候吧。所以,手游删掉了。哈哈

再就是读书,缺乏自己的知识体系,从头啃很难,先啃完这本,之后再找路子。依然坚持:“读书百遍,其义自现”。

赶紧搞完,今天还得加班搞需求。
再就是今天是走路上班的,没骑车。

2016年11月14日07:57:50

周天也是早起的,但没看书。。。
今天也早起了,走过来的,没骑车,所以有点晚了。
继续搞把,搞完之后换一本。这本书讲述的内容有点不太适合自己,原计划是了解linux 系统的,而这本书讲述的东西感觉有点偏硬件了。

第一遍粗读,完毕!(2016年11月14日09:55:35)

太难读了,基础差太多。硬着头皮啃下来的。收获不多,只知道了一些模糊的概念。
更新了下下面的检视阅读三问。 这本书暂且封存,换一本来读。如果想了解原理的时候再过来翻这本书。
[end] 2016年11月14日10:04:36

检视阅读三问:

这是一本什么样的书?

分类:计算机科学类
目的:以程序员的视角详细阐述计算机系统的本质概念,并展示这些概念如何影响程序的性能、正确性和实用性。

整本书在谈的是什么?

阐述计算机系统的核心概念,包括:
- 第2章:信息的表示和处理
- 第3章:程序的机器级表示
- 第4章:处理器体系结构
- 第5章:优化程序性能
- 第6章:存储器层次结构
- 第7章:链接
- 第8章:异常控制流
- 第9章:虚拟存储器
- 第10章:系统级I/O
- 第11章:网络编程
- 第12章:并发编程

作者是借着怎样的整体架构,来发展他的观点或陈述他对这个主题的理解?

主要分了三部分:程序结构和执行、在系统上运行程序、程序间的交互和通信

读书四问:

整体来说,这本书到底在谈些什么?

介绍计算机的整体结构,例如,如何表示信息,如何运行程序,CPU 的结构,存储器的结构,异常如何处理,如何实现网络、并发编程等等。以C语言描述的。

作者都细说了什么,怎么说的?

  • 作者的主要声明与论点

这本书跟你有什么关系?

大神进阶必读,但目前阶段不太适合自己,现有阶段的目标是理解 linux 系统,能排查线上问题,偏应用。这本书偏向介绍C语言与操作系统之间的一些实现,偏原理

难度系数

超高


第一部分 程序结构和执行

第二章 信息的表示和处理

概念

无符号、补码、浮点数、溢出

2.1 信息存储

虚拟存储器、地址、虚拟地址空间、

2.1.1 十六进制
2.1.2 字

决定虚拟地址空间的大小,32位字长,可用内存是4GB。

2.1.3 数据大小

C里面的 各种类型大小

2.1.4 寻址和字节顺序

跨多字节的程序对象,两个规则:对象的地址,在内存中如何排列。
关于排列:介绍了大端法、小端法。

2.1.5 表示字符串

C中,字符串是一个以 null 为字符结尾的字符数组。

2.1.6 表示代码

程序是字节序列,每个机器的编码不同。展示了windows、linux32、linux64之间的差异

2.1.7 布尔代数简介

计算机编码、存储和操作都是用的二进制。
布尔代数可以对0和1进行逻辑运算。
衍生出显示器 多色光源来控制显示。

2.1.8 C语言中的位级运算

或、与、取反、异或

2.1.9 C语言中的逻辑运算

|| 、&& 和 !

2.1.10 C语言中的移位运算

左右移位

2.2 整数表示

整数的两种编码方式:
- 只能表示非负数(无符号的)
- 能表示负数、零和整数

2.2.1 整形数据类型

介绍了C中 各种数据类型,根据两种不同的编码,所能表示的最大最小范围。
如:

C数据雷系 最小值 最大值
char -128 128
unsigned char 0 255
int -21 4748 3648 21 4748 3648
unsigned int 0 42 9496 7295

C和C++都支持有符号(默认)和无符号数,java只支持有符号数。

2.2.2 无符号数的编码

没符号而已,没啥好说的

2.2.3 补码编码

表示负数的一种方式,最高位 1 时为负,最高位 0 时为证。
如:

+7 0111
+6 0110
+5 0101
+4 0100
+3 0011
+2 0010
+1 0001
+0 0000
-0 1000
-1 1001
-2 1010
-3 1011
-4 1100
-5 1101
-6 1110
-7 1111
-8 超出4个bit所能表达范围 超出4个表达范围 1000

0000 = 0
1111 = -1 * 23 + 22 + 21 + 20 = -1
1111 = 0000 - 0001 = -1

有符号数还有其他两种标准方式表示:
- 反码
- 原码

2.2.4 有符号数和无符号数之间的转换

介绍了下C语言在各种数据类型之间如何做强制类型转换的。原则是:底层的位保持不变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值