虚拟内存简述

来源:互联网 发布:linux外网端口映射 编辑:程序博客网 时间:2024/05/06 01:50

虚拟内存简述

       在现代操作系统中,每个进程生活运行在自己的内存空间中。操作系统被视为硬件的抽象层并为每个进程创建了虚拟内存空间(a virtual memory).内存地址不是直接映射到物理地址,而是cpu利用在内核中每个进程转化表(perprocess translation table)实现物理内存地址和虚拟内存地址之间转化。

       使用虚拟内存的好处:
1. 使每个进程独立。在用户空间中的进程使用的地址都是虚拟内存地址,因此进程只能访问已经被映射的并且属于自己的虚拟内存空间中的数据,是不能访问其他进程的内存空间,除非是共享内存。
2. 抽象硬件。内核可以随意改变物理地址与虚拟地址之间的映射关系。并且内核直到进程实际访问某个虚拟地址时,才会为这个虚拟地址提供实际物理地址。再则进程映射的物理页长时间不使用或着系统短缺物理内存时,内核会将物理页中的内存换出到磁盘上。内核拥有巨大的权限,唯一限制的是程序一定读取的是之前已经写好的数据。
3. 进程最先分配的地址不是物理地址而是虚拟地址,以后通过映射或者映射文件映射到实际的物理地址。这样做的好处是映射到虚拟地址空间中的文件犹如内存缓冲,在实际访问时可加快访问速度。
4. 共享。内核知道各个正在运行的进程的虚拟空间对应映射的物理页。如果各进程使用相同的资源时,内核可以使这些进程都指向资源映射的物理页(即使是属于进程私有的内存空间),这样避免了重复填充物理页。这样做的影响是写时复制(COW copy-on-write),如fork()。

0 0
原创粉丝点击