《程序员的自我修养:链接、装载与库》俞甲子 - (EPUB全文下载)

文件大小:5.21 mb。
文件格式:epub 格式。
书籍内容:

程序员的自我修养
链接、装载与库
 作者 
 俞甲子 石凡 潘爱民 
 类别 
 图书 / 非虚构 
 出版社 
 电子工业出版社 
 出版日期 
 2009.4 
 ISBN 
 7121085119 
 提供方 
 电子工业出版社 
 标签 
 计算机/编程/程序员/程序设计/系统结构/双十一专题/计算机与互联网 
这本书主要介绍系统软件的运行机制和原理,涉及在Windows和Linux两个系统平台上,一个应用程序在编译、链接和运行时刻所发生的各种事项,包括:代码指令是如何保存的,库文件如何与应用程序代码静态链接,应用程序如何被装载到内存中并开始运行,动态链接如何实现,C/C++运行库的工作原理,以及操作系统提供的系统服务是如何被调用的。每个技术专题都配备了大量图、表和代码实例,力求将复杂的机制以简洁的形式表达出来。本书最后还提供了一个小巧且跨平台的C/C++运行库MiniCRT,综合展示了与运行库相关的各种技术。
对装载、链接和库进行了深入浅出的剖析,并且辅以大量的例子和图表,可以作为计算机软件专业和其他相关专业大学本科高年级学生深入学习系统软件的参考书。同时,还可作为各行业从事软件开发的工程师、研究人员以及其他对系统软件实现机制和技术感兴趣者的自学教材。
作者:俞甲子、石凡、潘爱民
作者访谈录
针对俞甲子、石凡和潘爱民三位的新书《程序员的自我修养——链接、装载与库》的出版,博文视点对俞甲子进行了专访,现将博文的编辑与俞甲子的访谈对话整理成文,以飨读者。
博文编辑:
甲子,你好!能否向读者介绍你是如何对操作系统的底层机制和运行原理产生兴趣的?
俞甲子:
很大程度上是因为性格决定的吧,因为我是一个喜欢对技术问题寻根究底的人,不满足于仅仅了解一个技术的表面,而是希望能通过层层深入地挖掘,找出它背后最关键最核心的机理。我相信很多计算机技术都是相通的,它们的核心思想相对是稳定不变的。经常听很多人谈起,IT技术日新月异,其实真正核心的东西数十年都没怎么变化,变化的仅仅是它们外在的表现,大体也是换汤不换药吧。
为了了解操作系统内核及装载、链接等这些关键的技术,我曾经自己从头写了一个很小的内核、装载器及一个简单的运行库,它们组成了一个可以完整运行在PC上的支持多进程、多线程的操作系统环境,并且支持虚拟存储、简单的文件系统、网络、鼠标键盘等,前后加起来花了两年多时间,大约有数万行代码,编译器和链接器使用的是GCC和LD。当然,如果继续写下去,可以让它的功能变得更加完整,但是我停止了对它的继续维护,因为我认为通过这个雏形系统,我已经了解了其背后的机理,如果再继续写下去更多的只是重复性的工作,因为现在已经有了很多很优秀的内核、装载和链接的相关软件和标准。
虽然我在这个系统上花费了很多时间和精力,却没有获得什么直接的收益,也没有让我跟上最新的技术潮流,但是它带给我的间接收获却是无法言表的,它使我在后来学习其他技术的时候能够很快地触类旁通、自下而上地去理解整个系统,往往能够理解得更加深刻更加透彻。
博文编辑:
介绍链接、装载与库原理的资料非常少,你在自己钻研的过程中,遇到的最大困难是什么?
俞甲子:
当然相关资料很少会给我们带来很多的困难和挑战,而且相关的源代码在经过多年的发展和锤炼后,变得非常注重性能和效率,而很少考虑可读性,这使得通过挖掘源代码理解机制变得更为困难。这些代码很多都是相关领域的黑客高手写的,他们对系统机制的了解已经到了很深刻的地步,一小段代码会用尽系统的各种机制和方法,经常让人看得不知所云。比如系统库在不同的链接和装载方式下对C++全局对象的构造和析构,就异常复杂。整个流程来回曲折,加上有些代码已经遗弃,还会造成误解。Glibc这种支持数十种平台的系统还要考虑到各个系统的通性和个性,更使整个过程雪上加霜。其实理解还不是最大的困难,最大的困难是理解了这个复杂而又晦涩的机制和过程,如何将它们尽量地简化,从中取舍,摈弃所有不必要的内容,再将它剥离出来后组织成尽量深入浅出层层引导的文字和图表,这才是最大的挑战。
博文编辑:
在自学的过程中,一定有许多令你得意或开心的事,可不可以分享一二?
俞甲子:
在这个过程中,最烦恼的事莫过于一个困扰了你很久的问题,通过各种办法,包括阅读源代码等还是无法理解或无法解释某个程序现象。忽然有一天某个灵感突现,回头再仔细阅读代码,紧接着马上试验一下,果真如此!大有拨云见日、豁然开朗的感觉,这应该是最开心的事吧。
博文编辑:
你现在从事的工作和系统底层结合紧密吗?在系统运行机制上的积累对目前的工作有帮助吗?
俞甲子:
我目前从事的工作跟系统底层关系不是很大,现在最常用的都是Web前端、MySQL数据库等这些应用层面的系统。虽然不是直接与系统底层打交道,但是之前的积累无时无刻不在帮助我去深入理解应用开发。比如MySQL系统的内存和文件系统的优化,如果对操作系统的虚拟存储和文件系统机制没有深入了解,那么可能只能在配置参数上做一些“猜测”性质的调整,不断地尝试各种参数,或者参考网络上别人提供的配置参数,但不一定适合自己的应用情况。了解虚存如何运作,进程地址空间的分布等,将会对应用的优化甚至是构架设计上都会有更高层次的俯视。
博文编辑:
对知识的渴求,对未知世界的好奇是人类的天性。但这种天性也需要引导,小心保护,否则就可能会丧失。读书是一种很好的保护途径,可不可以向读者推荐几本对你个人成长影响最大的书?
俞甲子:
如果是推荐非技术类的书籍,我应该不是很在行。在这里向大家推荐几本我读过的,并且跟本书主题相关的书籍吧。
《Linkers and Loaders 》,John R. Levine。这本书基本上是链接和装载方面最为完整和权威的理论著作了,但是内容有些偏旧,并且有些晦涩。
《Intel? 64 and IA-32 Architectures Software Developer’s Manuals》,Intel官方的x64和x86CPU的技术手册,总共分3卷,另外还有几本优化手册,这些手册 ............

书籍插图:
书籍《程序员的自我修养:链接、装载与库》 - 插图1
书籍《程序员的自我修养:链接、装载与库》 - 插图2

以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。

版权声明:书云(openelib.org)是世界上最大的在线非盈利图书馆之一,致力于让每个人都能便捷地了解我们的文明。我们尊重著作者的知识产权,如您认为书云侵犯了您的合法权益,请参考版权保护声明,通过邮件openelib@outlook.com联系我们,我们将及时处理您的合理请求。 数研咨询 流芳阁 研报之家 AI应用导航 研报之家
书云 Open E-Library » 《程序员的自我修养:链接、装载与库》俞甲子 - (EPUB全文下载)