操作系统之内存虚拟化

本文介绍了虚拟内存的目标,包括透明性、效率和保护。讨论了API中的内存类型,如栈内存和堆内存,以及malloc()和free()的使用。还提到了常用的内存检查工具如purify和valgrind,用于检测和防止内存错误。

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


持续更新中…

0 预备知识

目标: 操作系统需要切换进程以提高 CPU 的有效利用率

发展过程:

  1. 粗糙的时分共享:运行时加载到内存,进程切换时把数据全部储存到磁盘,之后再把新的进程的数据加载到内存(运行太慢了)
  2. 时分共享:多个进程都在内存中

地址空间: 操作系统需要给用户提供一个易用的物理内存抽象,是进程“看到”的系统中的内存。

1 虚拟内存

1.1 虚拟内存目标

  1. 透明:对程序行为而言,好像拥有自己的私有物理内存,而操作系统实现了所有的工作,让不同的工作复用内存,实现这个假象;
  2. 效率:需要硬件的支持
  3. 保护:当一个程序执行加载、存储或指令提取时,不应该以任何方式访问或影响任何其他进程或操作系统本身的内存内容。
    每个进程都应该在自己的独立环境中运行,避免其他出错或恶意进程的影响

1.2 API

1.2.1 内存类型

  1. 栈内存 (自动内存)
  2. 堆内存 (申请和释放操作需要由程序员显式完成)

1.2.2 malloc()

#include <stdlib.h>
...
void *malloc(size_t size);
...

1.2.3 free()

1.3 常用内存检查工具

  • purify
  • valgrind
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值