Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1136075
  • 博文数量: 646
  • 博客积分: 288
  • 博客等级: 二等列兵
  • 技术积分: 5375
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-08 14:33
个人简介

为了技术,我不会停下学习的脚步,我相信我还能走二十年。

文章分类

全部博文(646)

文章存档

2014年(8)

2013年(134)

2012年(504)

分类: LINUX

2013-04-15 10:05:53

原文地址:Linux程序运行中的内存问题 作者:H_A_N

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

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

每个进程都拥有4G大小的虚拟内存空间,
1G空间被每个进程共享,即内核空间;3G由每个进程各自私有,即私有空间。

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

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

Linux 内核在用户申请内存时,只是给它分配了一个线性区(也就是虚存),并没有分配实际物理内存;
只是当用户使用这块内存的时候,内核才会分配具体的物理页面给用户,占用宝贵的物理内存。
内核释放物理页面是通过释放线性区,找到相应的物理页面,将其全部释放的过程。

Linux 内核在创建进程时,并不为整个用户空间都分配好相应的物理空间,
而是根据需要才真正分配一些物理页面,并建立映射。

如果某个虚拟地址在页表中并不存在和某个物理地址之间的映射,那么系统将发生一次缺页异常;
此时,操作系统必须从磁盘或交换文件中将要访问的页装入物理内存。
阅读(1128) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~