持续更新中…
0 预备知识
目标: 操作系统需要切换进程以提高 CPU 的有效利用率
发展过程:
- 粗糙的时分共享:运行时加载到内存,进程切换时把数据全部储存到磁盘,之后再把新的进程的数据加载到内存(运行太慢了)
- 时分共享:多个进程都在内存中
地址空间: 操作系统需要给用户提供一个易用的物理内存抽象,是进程“看到”的系统中的内存。
1 虚拟内存
1.1 虚拟内存目标
- 透明:对程序行为而言,好像拥有自己的私有物理内存,而操作系统实现了所有的工作,让不同的工作复用内存,实现这个假象;
- 效率:需要硬件的支持
- 保护:当一个程序执行加载、存储或指令提取时,不应该以任何方式访问或影响任何其他进程或操作系统本身的内存内容。
每个进程都应该在自己的独立环境中运行,避免其他出错或恶意进程的影响
1.2 API
1.2.1 内存类型
- 栈内存 (自动内存)
- 堆内存 (申请和释放操作需要由程序员显式完成)
1.2.2 malloc()
#include <stdlib.h>
...
void *malloc(size_t size);
...
1.2.3 free()
1.3 常用内存检查工具
- purify
- valgrind