首页 > 技术文章 > 第七周读书笔记——深入理解计算机系统

ZucksLiu 2018-04-19 22:31 原文

课程已经来到了第七周,经过了两次大项目。在这两次个人/结对项目里,我深刻的感受到了自己在软件工程、代码架构、对计算机系统的了解上所存在的不足。这一周我看的书是深入理解计算机系统,这本书从某种意义上来说,也可以说是计算机体系结构的教材之一,之所以选择这本书,不仅是因为我对这个方面的很多知识很感兴趣,而且也不算很了解,我自我感觉,如果没有好好读过类似的书,可能对计算机系统仍然没有什么好的概念,即使学习过微机原理,也对我们以后的编程和工程实现能力有影响。

由于这周的事情很多,我只阅读了本书的前两章。首先不得不说的是,这两张里面,还有很多概念我已经学过了。但是,在阅读的过程中,跟之前的学习相比,我感觉自己试图从一个新的角度去重新看待这些知识,并不是为了记忆,或者能够做出题目那么简单。我想,当我经过了两次大作业后,回头来看待这些问题,即使我仍然属于经验不足的小白,但是我会有一些自己的体悟。事实证明确实如此。

本书的前两章,主要介绍的是整个系统的漫游以及计算机内部的信息如何表示和处理。说实话,这些数该如何存储等等的问题,我以前就学过了。但是呢,这一次看书,我发现自己多了一层思考,为什么要这么设计,是出于安全的因素,还是出于节省开销的因素?在写过了接口以后,作为信息安全的学生,我发现自己对接口的敏感程度不足,在看书的过程中,我想到了一个关于接口的问题,就是在传递四则运算所需的运算符信息时,如果图方便选用整数数组接口或者字符串的话,这个接口实际上是不够安全的,有可能被人作攻击。因此,我选用了五个bool型变量来作为接口的参数,这样就最大限度的降低了接口被人攻击的可能。然而,在这个同时,用户体验却变差了。这个问题一直困扰着我,但是在看书的过程中,我有了这样对接口的体悟,我想这是很令人开心的事。

同时,我一开始对unsigned int 和int其实没有很好的概念,觉得他们只是两种不同的编码方式,却没有去很好地区分他们的具体作用。在书中,我看到了一个不够安全的例子,是关于使用攻击者使用过大的数字会导致int整数溢出,被取余数,从而导致分配空间小于本应获得的空间,,从而导致部分内存空间中的数据暴露的例子。这对我带来了不小的冲击。原来攻击可以发生在各个地方!由于我以前没有注意过这些问题,所以其实我花了不少时间来理解这个例子,但是当我终于搞懂他以后,我突然觉得,原来获得进步也不是那么的困难,即使我以后可能不一定会碰到这样的问题,但是这样的例子是在时刻提醒我,只有对计算机系统足够了解,才可以像计算机一样思考,继而能够写出更好的、更安全的代码!

推荐阅读