在暑假留校的这两周, 瑞神的linux系统编程系列讲座总共有四个小专题, 在这里我把瑞神讲座中的一些点总结一下
1.静态库和共享库
静态库:
概念:
静态库(以.a后缀标识)是指将所有相关的目标文件打包成为一个单独的文件, 即静态库文件.
静态库可作为链接器的输入,链接器会将程序中使用到的函数的代码从库文件中拷贝到应用程序中, 一旦链接完成, 在执行程序的时候就不需要静态库了.
共享库:
概念:
共享库(以.so后缀标识)是一个目标模块, 在运行时, 可以加载到任意的存储器地址, 并和一个在存储器中的程序链接起来, 这个或称成为动态链接, 是由一个叫做动态链接器的程序来执行的.
静态库和共享库的一些比较
由于每个使用静态库的应用程序都需要拷贝所用函数的代码, 所以静态链接的文件会比较大, 比较耗内存;
而共享库的源码只有一份, 应用程序需要用到库中的函数时, 通过地址就能找到共享库的位置, 并和应用程序链接起来,节省了内存.
2.计算机软件体系结构
计算机最底层的结构是硬件, 硬件上层是操作系统, 操作系统上层是运行时库, 运行时库上层时用户态程序.
3.一个程序是如何运行起来的
1.首先要为程序创建虚拟地址空间
2.将结构体里存放的地址映射到虚拟地址空间
3.找到指定虚拟地址的入口, 将虚拟地址空间与物理地址空间联系起来
4.没有操作系统,程序可以运行吗
使用汇编语言, 没有操作系统, 程序也可以运行.
5.开机的时候,计算机都做了哪些事
1.开机自检
2.BIOS(BIOS用于计算机开机时运行系统个部分的自我检测, 并加载引导程序或存储在主存的作业系统)
3.加载操作系统
4.找到操作系统的入口