
第二十四课连续内存分配一、什么是连续内存分配先理解名字。连续表示一个程序必须占用一整块连续的内存空间。例如程序A需要100MB。那么分配---------------- 程序A 100MB ----------------必须连续。不能拆成50MB 50MB。早期操作系统主要采用连续分配。二、最简单方式单一连续分配这是最早的方法。思想非常简单内存只分给一个用户程序。结构高地址 ------------- 用户程序 ------------- 操作系统 ------------- 低地址例如电脑内存8GB。系统占1GB。剩下7GB全部给当前程序。优点简单。容易实现。缺点最大问题浪费。例如一个程序只需要1GB。但是系统给它7GB。剩下6GB没人用。所以这种方式现在基本不用。三、固定分区分配为了提高利用率。操作系统把内存提前划分几个固定区域。例如内存100MB。分成---------------- 系统 20MB ---------------- 分区1 20MB ---------------- 分区2 30MB ---------------- 分区3 30MB每个程序进入一个分区。例如程序A需要15MB。进入20MB分区。程序B需要25MB。进入30MB分区。四、固定分区的问题最大问题内部碎片。例子分区大小100MB。程序需要70MB。系统给100MB。那么剩余30MB。但是这个30MB别人不能使用。为什么因为分区已经属于这个程序。这就是内部碎片。五、动态分区分配重点固定分区太死板。于是出现动态分区。思想程序需要多少就分多少。例如内存---------------- 系统 ---------------- 空闲100MB ---------------- 程序A 50MB ---------------- 空闲200MB来了程序B需要80MB。系统找100MB空闲区。分80MB。变成---------------- 程序B 80MB ---------------- 剩余20MB优点减少内部碎片。但是产生新的问题。六、外部碎片出现假设内存如下程序A 空闲10MB 程序B 空闲20MB 程序C 空闲30MB总空闲60MB。现在来了程序D。需要50MB。能放吗不能。为什么虽然总共有60MB。但是没有连续50MB。这就是外部碎片。七、动态分区如何选择空间重点来了。假设有多个空闲区域。程序来了。选择哪个操作系统有几种算法。1. 首次适应算法First Fit★★★★★英文First Fit。思想从低地址开始找第一个满足的空闲区。例如空闲100MB 50MB 200MB程序需要40MB。从头找第一个100MB。够。于是放进去。结果简单。速度快。缺点低地址容易产生很多小碎片。口诀首次适应第一个能放就放。2. 最佳适应算法Best Fit★★★★★思想找最小但够用的空闲区。例如空闲100MB 50MB 200MB程序需要40MB。比较100剩60。50剩10。200剩160。选择50MB。优点减少大空间浪费。缺点容易产生大量小碎片。因为总是切小空间。口诀最佳适应留下最小剩余。3. 最坏适应算法Worst Fit思想总是选择最大的空闲区。例如空闲100MB 50MB 200MB程序需要40MB。选择200MB。剩160MB。优点剩余空间较大。缺点大空间容易被消耗。口诀最坏适应拿大块留大块。八、三个算法比较★★★★★算法选择方式特点首次适应第一个满足速度快最佳适应最小满足碎片多最坏适应最大空间浪费大空间九、考试计算题怎么做典型题空闲区100KB 500KB 200KB 300KB 600KB进程P1212KB P2417KB P3112KB P4426KB问使用首次适应如何分配步骤第一步P1212KB。从头找100不够。500够。分配。第二步P2417KB。继续找剩余空间。注意考试一定按照顺序模拟。不能凭感觉。十、连续分配总结我们学了① 单一连续分配特点一个程序。简单。浪费大。② 固定分区特点提前划分。产生内部碎片。③ 动态分区特点按需分配。产生外部碎片。④ 三种算法首次适应 First Fit 最佳适应 Best Fit 最坏适应 Worst Fit十一、本课重点★★★★★必须掌握连续分配一个程序占连续内存。内部碎片分给你的比需要的大。外部碎片空闲总量够但不连续。三个算法口诀首次找第一个最佳找最小最坏拿大块。