虚拟内存

本文深入探讨虚拟内存的概念,解释了虚拟寻址、页表的工作原理,以及内存映射在进程中的作用。通过页表转换实现虚拟地址到物理地址的映射,并讨论了共享对象、fork、execve函数和mmap在内存管理中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、什么是虚拟内存?

一个进程是和其他进程共享CPU和主存的,但是主存的空间是有限的,当同时运行多个进程时,就会使内存不够用。这个时候,我们就引入了虚拟内存的概念,它是一种对主存的抽象的计算机内存管理技术。对于32位的Linux操作系统,系统为每个进程分配4G的虚拟内存。如下图所示。

 

2、虚拟寻址

使用虚拟寻址,CPU通过生成一个虚拟地址来访问主存,这个虚拟地址在被送到内存之前会被内存管理单元(MMU)转换成合适的物理地址,从而找到目标地址。具体过程如下图。

3、进程中虚拟内存数据结构

4、作为缓冲工具的虚拟内存

概念上组织成一个由存放那个在磁盘上的N个连续的字节大小的单元组成的数组。每个字节都有唯一的虚拟地址,作为到数组的索引。虚拟内存系统通过将虚拟内存分割为虚拟页的大小固定的块来处理这个问题。对于Linux系统,这个页的大小一般为4KB。

<1>页表

在内存中,存放这一个叫做页表的数据结构,通过这个页表,可以将虚拟页映射到物理页。每次MMU将一个虚拟地址转换成物理地址时,都会读取页表。操作系统负责维护页表的内容,以及自爱磁盘与DRAM之间来回传送

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值