专业游戏门户,分享手游网游单机游戏百科知识攻略!

嗨游网
嗨游网

CSAPP是什么意思(CSAPP深入理解计算机系统介绍)

来源:小嗨整编  作者:小嗨  发布时间:2023-02-16 06:58
摘要:CSAPP是什么意思(CSAPP深入理解计算机系统介绍)CSAPP全称ComputerSystemsAProgrammersperspective,国内通常的书名翻译是《深入理解计算机系统》(然而偶认为这本书叫做《程序员所需要了解的计算机...

CSAPP是什么意思(CSAPP深入理解计算机系统介绍)

CSAPP全称Computer Systems A Programmer's perspective,国内通常的书名翻译是《深入理解计算机系统》(然而偶认为这本书叫做《程序员所需要了解的计算机知识》更为合适)。

这本书的简介(引言)部分简介明了:一个简单的hello world程序在计算机上的执行过程,预处理->编译->汇编->链接->生成可执行目标文件->载入内存->数据流->屏幕输出显示,没有一句废话,简介扼要,总结成一句:计算机系统=位+上下文。

CSAPP是什么意思(CSAPP深入理解计算机系统介绍)

关于二进制的内容个人感觉有些冗余,这部分内容偶基本是一扫而过,毕竟从小到大这些内容学了都快有十多遍了,而平时编程真能用到的二进制技巧基本也就移位和bit flag这两招。不过这章里有不少small tricks值得一耍(最经典的就是不用临时变量交换两个数)。话说回来,真要想在二进制上玩出花来,参考Hacker's delight会有更大的惊喜。

程序的机器级表示这一章偶花了不少时间阅读,毕竟偶没学过汇编,基础基本为0。不过这本书里出现的汇编指令绝大多数都由运算、取数存数、跳转这三种指令所组成,所以在阅读上不会存在任何难度。

这部分融合了程序员所需了解的编译和汇编这两样课程中的基础知识:想知道for、do..while、while三种循环的实质性区别?想知道多重if和 switch的本质区别?想知道数组的存储方式?想知道数组下标读取和指针读取的区别?想知道递归过程调用的背后实现机理?看看这一章,相信你会对C语言乃至程序设计语言有更深的理解。

指令集&体系结构这一章,两位作者为了让读者更好的理解指令集(X86),别具一格的搞出了一个简化版的Y86指令集,并用其表示基本的运算和控制,甚至连数字电路的HCL都来了一笔(暴汗)。数据流、组合逻辑和流水线,图示+详细的讲解,一目了然。国内的计组教科书应该多借鉴一下。

程序性能优化这一章对程序员尤其实用,毕竟,正如TDD和XP的开创者Kent Beck所说,make it run, make it right, make it fast。而第三步又是最麻烦的一步,确认和消除性能的瓶颈,有时比Debug还要恐怖,所以Knuth大神说:Premature optimization is the source of evil。

CSAPP通过展示一个简单的连续数求和和求积运算的小程序,通过性能监测,一步步的优化性能:减少过程调用、消除无关存储器引用、将下标引用切换到指针这些还是比较好理解的,然而后面的根据指令集展开循环、通过指令集来编写更具并行性的代码以及转移预测代价这些机器相关的优化的东东就开始颠覆我的世界观了,原来程序还可以这么搞,I服了U。

唯一的遗憾就是这章的篇幅有些短小,对程序员最为重要的机器无关的程序优化介绍的也并不充分,与此相比,偶感觉programming pearls和practice of programming里面对性能优化的介绍更胜一筹。

存储器体系结构的内容用五个字概括就是:利用局部性。

只有了解了计算机的梯形存储器体系结构,才能体会到为什么同样逻辑的程序会产生如此之大的性能差距,虽然计算机设计者的初衷是把存储器当成一个巨型数组。然而这个大号数组的不同体位的差距还是非常大地,搞不好就郁闷鸟。尤其是DRAM-Disk这一段,足足10的六次方的差距,所以CSAPP专门开了VM 一章来详细讲述。

链接这部分内容篇幅不多,原理上讲的很简洁,文件节和符号解析表只是给出了几个图示,并没有过多的关注其实现。CSAPP把重点放在了链接对源代码产生的影响,同时也让偶再次理解到了全局变量很邪恶。动态链接部分让偶恍然大悟,.net里面的反射和程序集,放到C里面就是动态调用和共享库,都是相通的,无非C的代码更诡异一些。

异常控制流这一章的名字比较囧,以至于我刚开始认为它会介绍点诸如try...catch的异常处理机制。然而看了才明白,它介绍的是更为广义的exception,既包括硬件中断,也包括故障中断,比如说陷入(trap)和故障(fault)。

这一章做的比较绝的是,通过讲述异常流,引入了OS中最核心的概念:进程。然而它并不在进程的具体特性上下文章,而是通过讲述unix下进程相关的api 及使用,从一种程序员的角度告诉你,进程是这么用的,进程之间是这么交换信息的。到最后捎带介绍了一下C里面的非局部跳转(更加强大的Goto,也就是 setjmp和longjmp),别以为只有C++和Java才有异常处理机制,C一样可以做到。

程序的时间度量这一章感觉用处不大,遂跳

虚拟内存这一章从原理和实现两个不同的层面介绍了存储器体系结构的核心部分:VM。说实话,之前学习VM顶多就是冲着局部性去的,但没想到VM可以做的事有这么多,无论是存储器磁盘映射,还是malloc在磁盘上分配空间返回地址至PTE,都让偶对VM有了一个崭新的认识,原来VM还可以这么用。为了帮助读者深入理解内存的分配机制,作者甚至搞出了一个malloc的实现,从源代码来讲解内存分配、碎片合并、垃圾回收这些概念,帅气。

系统级IO,网络编程以及并发编程这些东东打算之后再慢慢研究,遂跳过

当然,要想深入学习的话,好书有的是,OS有Tanenbaum老爷子的Modern operating systems,计组有Stanford校长的量化研究和软/硬接口,编译自然就是Aho的龙书,链接可以参考Levine的 Linkers&Loaders,程序设计语言原理可以阅读Scott的Programming language pragmatics。如果需要更多的资源,可以参考CSAPP书后的Bibilography。

说实话,放低要求的话,CSAPP已经做的相当不错了。换句话说,把这本书看明白,作为程序员应该了解的OS、编译和机组的核心理论也就明白的差不多了。同时,鉴于现在越来越多的程序员还纠结在C#/Java这样的层次上,CSAPP已经相当相当相当的深入了,:-)


本文地址:网络百科频道 https://www.eeeoo.cn/wangluo/903085.html,嗨游网一个专业手游免费下载攻略知识分享平台,本站部分内容来自网络分享,不对内容负责,如有涉及到您的权益,请联系我们删除,谢谢!


网络百科
小编:小嗨整编
相关文章相关阅读
  • win7系统怎么添加打印机(win7系统打印机共享)?

    win7系统怎么添加打印机(win7系统打印机共享)?

    win7系统怎么添加打印机(win7系统打印机共享)?当我们在使用Win7系统电脑办公的时候,难免也需要用到打印机设备,可是无法满足每台电脑都装一台打印机,因此在局域网环境下,我们可以在Win7系统上设置共享打印机来实现网络连接,下面将给大...

  • win7怎么升级win10系统版本(win7和win10哪个系统好)?

    win7怎么升级win10系统版本(win7和win10哪个系统好)?

    win7怎么升级win10系统版本(win7和win10哪个系统好)?即便现在win11都出来了,为什么还有多人在用win7呢?而且拿win7和win10做对比的话,不少用户也再说,win7系统比win10系统更好用。那么下面,我们就来分析...

  • win10系统重装教程(笔记本电脑系统重装教程)

    win10系统重装教程(笔记本电脑系统重装教程)

    win10系统重装教程(笔记本电脑系统重装教程)下面带来=笔记本电脑重装Windows10操作系统的教程,帮助您解决电脑系统故障、提升电脑性能等问题。一、准备工作1.备份重要数据:在重装系统前,请确保备份好电脑中的重要数据,以免丢失。2.下...

  • lol转区系统官网规则(lol转区系统官网价格)

    lol转区系统官网规则(lol转区系统官网价格)

    lol转区系统官网规则(lol转区系统官网价格)lol转区系统为广大玩家提供了一个便捷的账号迁移途径。本文将为您详细介绍转区系统的官网规则及价格,帮助您更好地了解并使用这一功能。lol转区系统官网规则一、转区条件:玩家需满足以下条件方可进行...

  • 大白菜u盘装系统教程图解(大白菜u盘装系统教程win10)

    大白菜u盘装系统教程图解(大白菜u盘装系统教程win10)

    大白菜u盘装系统教程图解(大白菜u盘装系统教程win10)在数字化时代,掌握一门快速安装操作系统的技能显得尤为重要。今天,我们就来详细讲解如何通过制作U盘启动盘,轻松实现Windows10系统的一键安装。无论你是电脑小白还是资深玩家,都能轻...

  • lol战绩查询网页版(lol战绩查询系统官网入口)

    lol战绩查询网页版(lol战绩查询系统官网入口)

    lol战绩查询网页版(lol战绩查询系统官网入口)lol战绩查询网页版登录后就能够查询战绩了。lol战绩查询系统官网入口:https://lol.qq.com/main.shtml如何查看英雄联盟我的战绩报告1.登录您的英雄联盟账户,找到“...

  • 酒店管理软件系统排名(酒店管理软件免费版)

    酒店管理软件系统排名(酒店管理软件免费版)

    酒店管理软件系统排名(酒店管理软件免费版)下面带来酒店管理软件系统排名免费版。1、绿云云PMS绿云云PMS基础平台业务,包含PMS、CRS、CRM、POS、移动应用等业务,是iHotel平台的构建基础,均为一体化云架构设计,可以根据酒店实际...

  • 档案管理软件系统有哪些(档案管理软件排名)?

    档案管理软件系统有哪些(档案管理软件排名)?

    档案管理软件系统有哪些(档案管理软件排名)?档案管理软件拥有收集、整理、保管、鉴定、统计等功能,适用于各类企业、机关、学校等单位。档案管理软件能够管理的档案包括文书档案、人事档案、照片档案、实物档案等。下面带来几款好用的档案管理软件排名。1...

  • 周排行
  • 月排行
  • 年排行

精彩推荐