29、内存管理与动态内存分配详解

内存管理与动态内存分配详解

1. 内存分页与页面操作

1.1 页面基本概念

在操作系统中,页面是内存管理的基本单位。对于 32 位系统,页面大小通常为 4KB;对于 64 位系统,页面大小通常为 8KB。页面分为有效页面和无效页面:
- 有效页面:与物理内存中的页面或某些二级存储(如交换分区或磁盘上的文件)相关联。
- 无效页面:未与任何内容关联,代表地址空间中未使用、未分配的部分。访问无效页面会导致段错误。

地址空间不一定是连续的,尽管是线性编址,但包含许多不可寻址的间隙。

1.2 页面错误与换页操作

程序不能直接使用位于二级存储而非物理内存中的页面,直到该页面与物理内存中的页面关联。当进程尝试访问此类页面上的地址时,内存管理单元(MMU)会生成页面错误。此时,内核会介入,将所需页面从二级存储透明地调入物理内存。由于虚拟内存通常比物理内存大得多,内核还会不断地将物理内存中的页面调出到二级存储,为更多的页面调入腾出空间。内核会尝试调出近期最不可能使用的数据,以优化性能。

1.3 内存共享与写时复制

多个虚拟内存页面,即使属于不同进程的不同虚拟地址空间,也可以映射到单个物理页面,从而实现不同虚拟地址空间共享物理内存中的数据。共享数据可以是只读的,也可以是可读可写的。

当进程写入共享的可写页面时,会出现以下两种情况:
- 简单情况:内核允许写入操作,所有共享该页面的进程都能看到写入操作的结果。通常,允许多个进程对共享页面进行读写操作需要一定程度的协调和同步。
- 写时复制(COW):MMU 可能会拦截写入操作并引发异常,内核会为写入进

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值