没有合适的资源?快使用搜索试试~ 我知道了~
首页linux 内存管理(虚拟地址到物理地址)
linux 内存管理(虚拟地址到物理地址)

Linux操作系统采用虚拟内存管理技术,使得每个进程都有各自互不干涉的进程地址空间。该空间是块大小为4G的线性虚拟空间,用户所看到和接触到的都是该虚拟地址,无法看到实际的物理内存地址。利用这种虚拟地址不但能起到保护操作系统的效果(用户不能直接访问物理内存),而且更重要的是,用户程序可使用比实际物理内存更大的地址空间(具体的原因请看硬件基础部分)
资源详情
资源评论
资源推荐

内存管理(二)
2008-06-17 15:21
进程内存空间
操作系统采用虚拟内存管理技术,使得每个进程都有各自互不干涉
的进程地址空间。该空间是块大小为 的线性虚拟空间,用户所看到和接触到
的都是该虚拟地址,无法看到实际的物理内存地址。利用这种虚拟地址不但能
起到保护操作系统的效果(用户不能直接访问物理内存),而且更重要的是,
用户程序可使用比实际物理内存更大的地址空间(具体的原因请看硬件基础部
分)。
在讨论进程空间细节前,这里先要澄清下面几个问题:
第一、 的进程地址空间被人为的分为两个部分——用户空间与内核
空间。用户空间从 到 (),内核空间占据 到
。用户进程通常情况下只能访问用户空间的虚拟地址,不能访问内
核空间虚拟地址。只有用户进程进行系统调用(代表用户进程在内核态
执行)等时刻可以访问到内核空间。
第二、用户空间对应进程,所以每当进程切换,用户空间就会跟着变
化;而内核空间是由内核负责映射,它并不会跟着进程改变,是固定
的。内核空间地址有自己对应的页表(),用户进程各自
有不同的页表。
第三、每个进程的用户空间都是完全独立、互不相干的。不信的话,你
可以把上面的程序同时运行 次(当然为了同时运行,让它们在返回
前一同睡眠 秒吧),你会看到 个进程占用的线性地址一模一
样。
进程内存管理
进程内存管理的对象是进程线性地址空间上的内存镜像,这些内存镜像其
实就是进程使用的虚拟内存区域()。进程虚拟空间是个
或 位的“平坦”(独立的连续区间)地址空间(空间的具体大小取决于体系结
构)。要统一管理这么大的平坦空间可绝非易事,为了方便管理,虚拟空间被
划分为许多大小可变的但必须是 的倍数内存区域,这些区域在进程线性
地址中像停车位一样有序排列。这些区域的划分原则是“将访问属性一致的地址
空间存放在一起”,所谓访问属性在这里无非指的是“可读、可写、可执行等”。
如果你要查看某个进程占用的内存区域,可以使用命令
!" # 获得( 是进程号,你可以运行上面我们给出的例子—
— $% 便会打印到屏幕),你可以发现很多类似于下面的数字信


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论1