一段爱情总会有个浪漫的前序。
《深入理解计算机系统》之前言
1,读者对象:那些想通学习计算机系统的内在动作而提高自身技能的程序员。
2,目的:解析计算机的本质概念,并展示这些概念是如何影响应用程序的正确性,性能和
实用性的。
3,如何学习本书:Just do it!
概览(Survey),提问(Question),阅读(Read),
复述(Recite),联想(Reflect),复习(Review)
SQ4R方法的实践
4,本书的主要内容
(* 表示重要等级,没有*表示不重要)
一,计算机系统漫游
通过一个简单的例子来阐述一个应用程序的生命周期
{
这章将做为知识的扩充,做用不是很大,只能加强以往对知识的理解
}
二,信息的表示和处理 *
数据在计算机内是如何表示,它们之间的转换会带来什么样的影响。数字的范围,
二进制补码算法的特性,以及数据转换公式有时并不适合用在计算机的运算转换。
{
1,不同类型数据的转换,及其带来的影响
2,浮点的表示法
3,整数与浮点数据之间的转换
4,二进制补码的运算
}
三,程序的机器级表示
将以GCC生成的IA32的汇编代码为蓝本,讲解程序的不同控制结构,函数的调用,
参数的传递,不同数据结构的表示及访问
{
这章的内容我已比较清楚,在适当的章节可以一带而过。
}
四,处理器的体系结构 **
处理器的结构设计,HCL硬件描述语言
{
这章将会有很多原来没有接触过的知识,需要认真学习。
}
五,优化程序性能 ***
介绍提高代码性能的知识,一个简单的操作模型
{
1,有哪些提高性能的方法
2,每一种方法如何使用,在什么场合使用,效率有多高,对其他部分有什么
影响
3,提高性能的模型是什么,如何使用
4,现代乱序处理器是什么样的处理器
}
六,存储器的层次结构 ***
不同的存储器是如何整合在统一的存储层次中的,以”存储器山“的概念来理解存储
器系统
{
1,随机存储器(RAM),只读存储器(ROM),以及现代磁盘存储器(DISC)的几何形
状和组织结构
2,这些设置是如何放置在存储系统的层次结构中的
3,”存储器山“的概念
}
七,静态连接和动态连接 ***
静态连接和动态连接的概念,重定位技术,一些静/动态连接所涉及的基本概念,
{
1,静态库是如何被连接进一处可执行程序的
2,动态库又是如何被连接到一个可执行程序的
3,如何将一个动态库转换成静态库,又如何将一个静态库转换成动态库
4,它们之间的转换会带来什么后果
5,如何实现重定位技术,我的理解有误吗
6,如何进行符号解析,当一个可执行程序需要使用一个动态库里的符号时是
如何进行解析的,这个过程的消耗有多大
7,静态库与动态库同时被连接时它们的连接顺序如何
8,GCC在连接一个库时的连接顺序如何处理,如果库出现交叉引用的情况连接
程序是如何处理的,如果连接程序自己无法处理,那么我所掌握的处理方式是
不是唯一解
9,动态连接的程序在执行时并不要求所连接的动态库一定原来的那个动态库
那么如何让可执行程序与动态库进行绑定,这种想法是不是有些荒谬
10,在Linux有个叫prelink的程序,它具体做了哪些工作
...
}
八,异常控制流 **
从硬件到软件的非本地跳转的异常处理系统,介绍了进程的基本概念
{
1,IA32的异常处理机制是如何架构的
2,可以更好地架构异常机制吗
3,Linux/UNIX中的信号传递机制是如何运作的,与硬件的异常处理机制有什
么异同和联系
4,setjmp,longjmp与硬件及信号异常处理有什么联系
5,
}
九,测量程序运行时间 **
计算机时间,系统时间,程序运行时间的错误根源,如何得到准确的程序运行时间
{
1,什么是时间间隔计时器
2,什么是CPU周期计时器
3,什么是系统时钟
4,它们之间有什么联系
5,它们与真实的时间误差有多大
6,如何准确的测量到程序的运行时间
}
十,虚拟存储器 ***
介绍了虚拟存储系统的工作原理和特性,以及应用程序如何从系统中分配内存
{
1,为什么不同的并发进程各自都有一个相同的地址范围
2,进程之间如何实现页的共享
3,进程之间如何实现存储共享(share memory)
4,存储共享的机制是如何实现的(Linux下)
5,malloc/free函数的实现及其所调用的系统用的(sbrk)的实现(Linux)
}
十一,系统级I/O **
UNIX I/O的基本概念
{
1,如何共享文件
2,如何实现重定向
3,文件的元数据是指什么
4,如何访问文件的元数据
5,shorts counts是什么意思
6,所指实现的一个带缓冲的I/O包是如何实现的
7,为什么说标准I/O不适合网络编程
}
十二,网络编程 **
结合以前所学到的知识介绍基本的网络编程的概念
{
}
十三,并发编程 **
网络编程的高级应用
阅读(917) | 评论(0) | 转发(0) |