[转帖]Linux程序运行中的内存问题_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3479 | 回复: 0   主题: [转帖]Linux程序运行中的内存问题        下一篇 
鲲鹏展翅
注册用户
等级:少校
经验:1148
发帖:79
精华:9
注册:2012-11-19
状态:离线
发送短消息息给鲲鹏展翅 加好友    发送短消息息给鲲鹏展翅 发消息
发表于: IP:您无权察看 2012-11-22 9:43:36 | [全部帖] [楼主帖] 楼主

用户态的程序 -(编译执行)- 进程

    进程访问 - 虚拟地址 -(分段机制)- 线性地址 - (分页机制)- 物理地址

    每个进程都拥有4G大小的虚拟内存空间,

    1G空间被每个进程共享,即内核空间;3G由每个进程各自私有,即私有空间。

    任意一个时刻,在一个CPU上只有一个进程在运行;虚拟地址随着进程间的切换而变化。

    Linux 简化了分段机制,使得虚地址与线性区地址总是一致;所以可以将虚地址与线性地址合为一体来看待。

    Linux 内核在用户申请内存时,只是给它分配了一个线性区(也就是虚存),并没有分配实际物理内存;

    只是当用户使用这块内存的时候,内核才会分配具体的物理页面给用户,占用宝贵的物理内存。

    内核释放物理页面是通过释放线性区,找到相应的物理页面,将其全部释放的过程。

    Linux 内核在创建进程时,并不为整个用户空间都分配好相应的物理空间,

    而是根据需要才真正分配一些物理页面,并建立映射。

    如果某个虚拟地址在页表中并不存在和某个物理地址之间的映射,那么系统将发生一次缺页异常;

    此时,操作系统必须从磁盘或交换文件中将要访问的页装入物理内存。




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论