操作系统笔记(九)内存管理
- 进程管理回顾
- 本质:操作系统内核对物理CPU的虚拟,让每个进程以为自己独占了CPU。
- 类似的:内存管理的目的是提供一个虚拟接口,让每个进程以为自己独占了RAM。
- 基本方法:
- 单用户,单任务:MS-DOS
- 用户进程最大内存640K。
- 问题:内存过小,如果应用程序需要更多内存怎么办
- 解决方案:overlay。仅加载当前必须的代码和数据。
- 多任务
- 问题:P1, P2都在运行,P1需要申请更多内存,但内存已经用完
- 解决方案:swap(将P2临时交换到外存)。缺点:磁盘传输导致swap成本极高。
- 重定位问题
- 源程序变成进程:源码 -> 目标文件 -> 可执行文件 -> 进程
- 概念:可执行文件(链接器实现地址绑定)使用地址为相对地址(逻辑地址),而进程需要绝对地址(物理地址)。
- 实现:内存管理单元(MMU)负责将逻辑地址和加载地址结合成物理地址。
- 内存保护问题
- 概念:保护进程内存不被其他进程访问或破坏。
- 实现:MMU实现,在重定位之前检查limit register是否大于逻辑地址。
- 内存分配问题
- 概念:管理内存的分配和回收。即动态内存分配问题。
- 可分配的内存空间:hole。分配内存则分配hole,回收内存则回收hole,涉及hole的合并。
- 外部碎片:分配回收导致较小的内存碎片 -> 解决方案:分配hole的策略(首次适应,最佳适应,最坏适应)
- 内部碎片:内存分块分配,导致分配给进程的内存大于进程所需,导致的碎片。
相关推荐
xiaobaichen 2020-07-30
cleanerxiaoqiang 2020-05-08
fsfsdfsdw 2020-04-08
gzx0 2020-01-31
追寻水中桥 2019-12-30
Proudoffaith 2019-12-08
jacktangj 2019-11-29
zhoujiyu 2016-12-12
拉斯厄尔高福 2020-11-04
ThinkInLinux 2020-09-30
ljbhander 2020-08-07
mingrixing 2020-07-28
iammjun 2020-07-07
emlinux 2020-06-22
fenxinzi 2020-06-21
huanmie 2020-06-16
chenzhaoguo 2020-06-08
ThinkingLink 2020-05-29