[Linux内存]linux内存学习(二)——分段和分页

来源:互联网 发布:梅花泪网络歌手 编辑:程序博客网 时间:2024/05/01 17:13

一:内存分段和分页。
点击打开链接

每个用户空间的linux进程都有3G的地址空间,(虚拟地址空间3G-4G空间是linux内核使用的),用户空间看到的进程地址都是指虚拟地址空间,然后操作系统通过MMU再将虚拟地址映射到实际的物理地址。

分段:就是将整个程序映射到linux内存的物理地址,假设有两个进程 A 和 B ,进程 A 所需内存大小为 10M ,其虚拟地址空间分布在 0x00000000 到 0x00A00000 ,进程 B 所需内存为 100M ,其虚拟地址空间分布为 0x00000000 到 0x06400000 。那么按照分段的映射方法,进程 A 在物理内存上映射区域为 0x00100000 到 0x00B00000 ,,进程 B 在物理内存上映射区域为 0x00C00000 到 0x07000000 。于是进程 A 和进程 B 分 别被映射到了不同的物理内存区间,彼此互不重叠,实现了地址隔离‘另外对于程序来说,其不用关心其虚拟地址被映射到了哪一个区域,其虚拟地址固定的,所以每次加载的时候程序的虚拟地址固定。但是分段还有一个问题没解决:就是每次加载的时候还是要加载整个程序,这样内存使用效率就会很低,另外每次都是整个程序从磁盘读入读出,也影响效率。


分页:因为分段只能是将整个程序映射到物理地址空间,这样会造成大量的磁盘访问操作,导致效率低下。所以这种映射方法还是稍显粗糙,粒度比较大,而分页的思想就是程序的真正被执行的页才会被映射到内存里。分页的另外一个好处是内存共享,保护机制也是分页的一个好处,程序的每一个页都可以设置不同的访问权限,这个权限由操作系统设置,

0 0
原创粉丝点击