linux进程内存映象解析

您所在的位置:网站首页 映像和映象 linux进程内存映象解析

linux进程内存映象解析

2024-02-21 10:37| 来源: 网络整理| 查看: 265

一、程序如何转化为进程

程序转化为进程一般有两个步骤: 1、内核会将程序从磁盘读入内存,为程序分配内存空间 2、内核会为进程保存PID以及相应的状态信息(保存在task_struct中),将进程放在运行队列中等待执行。 程序转变为进程以后就可以被操作系统调度程序执行了。

二、内存映象

内存映象指的是内核如何在内存中存放可执行程序。 在程序转化为进程的过程中,操作系统可直接将可执行程序复制到内存中,其分布状况如下: 这里写图片描述 (1)栈的地址是由高地址向低地址生长的(这也就解释了为什么我们定义数组的时候要给定数组大小) (2)堆的地址是有低地址向高地址生长的

三、虚拟地址与物理地址

结合子进程与父进程,我们可以将上图画的更详细: 这里写图片描述 1、地址空间(在操作系统中是现实存在的,由地址空间结构体支持):指的是虚拟地址上的一个地址范围,按需要来获取。举个形象点的例子来说明:你活动的范围是西安,但是最终你真正落脚的只是交通大学419宿舍的2号床铺。也就是说整个西安你都可以访问,但最终属于你的只是你现在坐的那块固定大小的地方。 2、虚拟地址:每个进程有运行在一个属于自己的地址空间里面,这个地址空间就是虚拟地址(我们平时见到的也都是虚拟地址,但最终还是要映射到物理地址上去)。 3、MMU:内存管理单元(硬件),结合页表可以完成映射。

上面我们说虚拟地址是每个进程特有的空间,并且我们见到的和用的都是虚拟地址,现在我们通过一段来验证一下:

int g_val=100; int main() { pid_t id=fork(); if(id


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3