一、本书解决的问题
本书主要介绍系统软件的运行机制和原理,涉及在Windows和Linux两个系统平台下,一个应用程序在编译、链接、和运行时所做的事,具体如下:
1.Windows和Linux操作系统下各自的可执行文件、目标文件格式?
2.普通的C/C++程序代码如何编译成目标文件及程序的目标文件如何存储?
3.目标文件如何被链接器链接到一起,并且形成可执行文件?
4.目标文件在链接时符号处理、重定位和地址分配如何进行?
5.可执行文件如何被装载,装载到哪,并且执行?
6.可执行文件与进程的虚拟地址空间之间如何映射?虚拟地址和物理地址之间的映射由系统完成,怎样完成?
7.什么是静态链接,动态链接,两者的区别,为啥要使用动态链接?
8。Windows和Linux如何进行动态链接及相关问题?
9.堆,栈,代码段,数据段,BSS段的理解?
10.运行库,系统调用与API的理解?
二、相关书籍介绍
1.《Linkers and Loaders》 --介绍链接和装在方面最为完整和权威的理论著作
2.《Linux内核源代码情景分析》 --基于Linux2.4内核的,对于内核很多细节描述详细
3.《深入理解计算机系统》 --对整个计算机硬件体系结构进行了深入浅出的介绍,是理解系统底层不可多得的书籍
4.《深入理解Windows操作系统》 --深入理解Windons内核最好的书籍
5.《Advanced Programming in the UNIX Environment》--理解UNIX系统内核,运行库和运行环境最好的选择
三、相关知识链接
1.计算机硬件的最为关键的三个部件:CPU,内存,I/O设备
1)CPU及其架构的发展
1>CPU早期的核心频率不高,跟内存的频率一样,故采用了用一个总线(BUS)将两者联系起来。
2>由于很多的I/O设备速度与CPU和内存慢很多,为了协调CPU和I/O设备间的通信,每个设备都会有一个相应的控制器,其相当于解决了不同速度之间的协议问题。
3>其实CPU的发展速度很快,导致内存的速度跟不上,故产生了与内存频率一致的,CPU通过分频和系统总线通信;
4>北桥-满足图形设备,CPU和内存之间的通信,利用北桥芯片实现;
本书主要介绍系统软件的运行机制和原理,涉及在Windows和Linux两个系统平台下,一个应用程序在编译、链接、和运行时所做的事,具体如下:
1.Windows和Linux操作系统下各自的可执行文件、目标文件格式?
2.普通的C/C++程序代码如何编译成目标文件及程序的目标文件如何存储?
3.目标文件如何被链接器链接到一起,并且形成可执行文件?
4.目标文件在链接时符号处理、重定位和地址分配如何进行?
5.可执行文件如何被装载,装载到哪,并且执行?
6.可执行文件与进程的虚拟地址空间之间如何映射?虚拟地址和物理地址之间的映射由系统完成,怎样完成?
7.什么是静态链接,动态链接,两者的区别,为啥要使用动态链接?
8。Windows和Linux如何进行动态链接及相关问题?
9.堆,栈,代码段,数据段,BSS段的理解?
10.运行库,系统调用与API的理解?
二、相关书籍介绍
1.《Linkers and Loaders》 --介绍链接和装在方面最为完整和权威的理论著作
2.《Linux内核源代码情景分析》 --基于Linux2.4内核的,对于内核很多细节描述详细
3.《深入理解计算机系统》 --对整个计算机硬件体系结构进行了深入浅出的介绍,是理解系统底层不可多得的书籍
4.《深入理解Windows操作系统》 --深入理解Windons内核最好的书籍
5.《Advanced Programming in the UNIX Environment》--理解UNIX系统内核,运行库和运行环境最好的选择
三、相关知识链接
1.计算机硬件的最为关键的三个部件:CPU,内存,I/O设备
1)CPU及其架构的发展
1>CPU早期的核心频率不高,跟内存的频率一样,故采用了用一个总线(BUS)将两者联系起来。
2>由于很多的I/O设备速度与CPU和内存慢很多,为了协调CPU和I/O设备间的通信,每个设备都会有一个相应的控制器,其相当于解决了不同速度之间的协议问题。
3>其实CPU的发展速度很快,导致内存的速度跟不上,故产生了与内存频率一致的,CPU通过分频和系统总线通信;
4>北桥-满足图形设备,CPU和内存之间的通信,利用北桥芯片实现;