程序的链接、装载和库——《程序员的自我修养》笔记

来源:互联网 发布:现代诗歌 知乎 编辑:程序博客网 时间:2024/06/05 18:10

一.计算机软件系统体系结构

  计算机系统软件体系结构采用一种层的结构,有人说过一句名言:

计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。

  这句话几乎概括了计算机系统软件体系结构的设计要点,整个体系结构从上到下都是按照严格的层次结构设计的,不仅是计算机系统软件整个体系是这样的,体系里面的每个组件比如操作系统本书,很多应用程序、软件系统甚至很多硬件结构都是按照这种层次的结构组织和设计的,系统软件体系结构中,各种软件的位置如下图所示。

这里写图片描述

二.程序从源代码到运行起来的整个流程

1. 预编译(源代码-源代码)

这里写图片描述

2.编译(源代码——汇编文件)

这里写图片描述

  编译有分为很多步骤:扫描,语法分析,语义分析,源代码优化,代码生成和目标代码优化.最终产生的是汇编文件.

3.汇编(汇编文件——机器命令(目标文件)),属于汇编语言的知识

这里写图片描述

4.链接(目标文件+库——可执行文件)

有两种链接:静态链接和动态链接

5.装载(可执行文件的装载)

覆盖

页映射

这里写图片描述

6.运行

这里写图片描述
这里写图片描述

  程序运行,肯定要首先把程序装载到内存中去,然后才是物理地址和逻辑地址等等,也就是说涉及三层映射,具体可以看一看《详解LMA(装载内存地址)与VMA(虚拟内存地址)》这个文档。
  可执行文件映射到虚拟地址,虚拟地址映射到物理地址。

7.运行库

8.windows api和系统调用

0 0