可执行文件的装载,进程和线程,运行时库的入口函数(第六章)

目录

第1步.创建一个独立的虚拟内存空间

第2步.读取可执行文件头,建立虚拟空间和可执行文件之间的映射关系 

第3步.将cpu的指令寄存器设置成可执行文件的入口地址,启动运行。

程序开始执行,发生页错误。

随着程序的执行,不停的发生页错误,当物理内存不够用的时候

Linux装载ELF可执行文件

动态链接下的ELF可执行文件的装载

ps:动态链接器的自举代码

动态链接器的特点

显式运行时链接——动态加载共享对象 

Windows装载PE可执行文件

程序的入口函数

C语言标准库和运行时库

MSVC CRT

MSVC CRT的版本

以静态和动态为主要的划分标准

下面是C语言的标准运行时库

下面是C++的标准运行时库

VS2010的运行时库的可选择项

一些问答:

 MSVC CRT在多线程环境下运行下的改进

glibc的_start和_exit的汇编实现

msvcrt的mainCRTStartup

I/O相关的部分

I/O的概念

I/O初始化

IO函数fread的实现


程序执行时所需要的指令和数据必须在内存中(指的是物理内存)才能正常运行。

程序装载指的就是把这些指令和数据加载到内存中

最简单的装载方式就是把所需的指令和数据全部装入内存,称为静态装载。但是这样会比较消耗内存。

 

动态装载的思想是程序用到哪个模块就装入内存。

首先介绍进程(即运行着的程序)的建立过程,然后是进程运行中的缺页,然后是linux和windows下的可执行文件(除了可执行文件,动态库,静态库等分类)的装载


创建一个进程,首先要做的三件事是:

第1步.创建一个独立的虚拟内存空间

每一个进程都有自己独立的虚拟地址空间&#

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ivy_0709

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值