Chinaunix首页 | 论坛 | 博客
  • 博客访问: 801607
  • 博文数量: 104
  • 博客积分: 915
  • 博客等级: 下士
  • 技术积分: 2171
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-24 21:34
文章分类

全部博文(104)

文章存档

2018年(4)

2015年(14)

2014年(9)

2013年(56)

2012年(21)

分类: LINUX

2012-08-01 09:35:40

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

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

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

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

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

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

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

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