ch9 内存管理基础(自己摘抄的笔记)
静态链接、静态装入的缺点是既浪费硬盘空间,也浪费内存空间
组织合理的存储结构,依据是访问速度匹配关系、容量要求和价格。(易失性)

操作系统对寄存器,Cache没有话语权,(对操作系统是透明的),只能用,不能支配
存储管理目的
充分利用内存
尽可能方便用户使用
存储保护与安全
共享与通信
实现的性能和代价
解决程序空间比实际内存空间大的问题
存储管理任务
存储分配和回收
存储共享
存储保护
存储器扩充
存储管理方案
连续分配方式
单一连续存储管理
分区存储管理
离散分配方式
分页存储管理(分配单位是页)
段式存储管理(分配单位是段)
段页式存储管理
虚拟存储器
连续分配方式
基本思想
Main memory usually into two partitions:
Resident(常驻) operating system, usually held in low memory with interrupt vector.
User processes then held in high memory
单一连续存储管理:
基本思想
整个内存空间分成系统区和用户区,系统区给操作系统使用,用户区给用户使用。
适用场合
最简单,适用于单用户、单任务的OS
优点
易于管理
缺点
对要求内存空间少的程序,造成内存浪费;程序全部装入,很少使用的程序部分也占用内存。
系统特点
1.容易记住
2.当作业被调度时就获得全部空间;
3.全部主
4.作业运行完后,全部主存空间又恢复成空闲(以上所指的全部主存空间是全部用户区空间)
对于连续区分配而言,虽然这种管理方案不需要专门的硬件,但是应有硬件保护机构,以确保
1.使用界限
2.计算机的状态分为
1.
2.
3.作业的周转时间长,当一个大作业装入系统运行后,新进入系统的小作业也必须等待大作业运行完成后才能装入运行。
4.缺乏灵活性,要求作业的
多道批处理系统与分时操作系统的区别
多道是指在一个处理器上并发运行多个程序,而不是指有多个处理器
多道和分时都是在微观上串行,宏观上并行
一、进程调度方式不同
在多道处理系统中,为了让系统各部分都去“忙”,尽量让各部分一直处于工作状态,当一道程序因I/O请求暂停运行时,CPU才去运行另一道程序
而在分时系统中,把处理器的时间分成很短的时间片,时间片用完了,不管是否执行完,都要进行切换
上诉可以看出是非抢占和抢占的区别。
二、目的不同
多道批处理系统的目的是为了解决人机矛盾及CPU和I/O设备之间速度不匹配矛盾,提高系统有效性(包括资源利用率和吞吐量),并不提供人际交互能力
而分时系统是实现人机交互的系统
分区存储管理
基本原理
固定分区
动态分区
分区分配/释放问题
评价
基本原理
把内存分为一些大小相等或不等的分区,每个应用进程占用一个或几个分区。操作系统占用其中一个分区。
特点:
•适用于多道程序系统和分时系统
• 支持多个程序并发执行
问题:
• 可能存在内碎片和外碎片。
• 难以进行内存分区的共享。
数据结构
分区表,或分区链表
•可以只记录空闲分区,也可以同时记录空闲和占用分区
•分区表可以划分为两个表格:空闲分区表,占用分区表。
•分区表中,表项数目随着内存的分配和释放而动态改变,可以规定最大表项数目。
•空闲分区表中按不同分配算法相应对表项排序。
固定分区
基本思想
内存划分为若干个固定大小的连续分区
•分区大小相等
适合于多个相同程序的并发执行(处理多个类型相同的对象)。
•分区大小不等
多个小分区、适量的中等分区、少量的大分区。根据程序的大小,分配当前空闲的、适当大小的分区。

固定分区
优点
•比单一连续分配方法,内存利用率提高了
•可以支持多道程序
•实现简单
缺点
•作业必须预先能够估计自己要占用多大的内存空间
•内碎片造成浪费
分区总数固定,限制了并发执行的程序数目
动态分区
基本原理
在装入程序时按其初始要求分配,或在其执行过程中通过系统调用进行分配或改变分区大小。
优点
没有内碎片
缺点
有外碎片


分区分配算法
寻找某个空闲分区,其大小需大于或等于程序的要求。若是大于要求,则将该分区分割成两个分区,其中一个分区为要求的大小并标记为“占用”,而另一个分区为余下部分并标记为“空闲”。分区的先后次序通常是从内存低端到高端。
分区释放算法
需要将相邻的空闲分区合并成一个空闲分区。(解决的问题是:合并条件的判断和合并时机的选择)
评价
优点
实现了主存共享,有助于多道程序设计
动态分区主存利用率比固定分区高些
相对于后面介绍的存储管理方式,本方案为实现分区分配所使用的表格,占用存储容量相对较少,算法也相对简单。
实现存储保护的措施也比较简单。
多重分区分配方案能实现对子程序、数据段的共享。
缺点
主存仍不能充分利用,除了采用紧凑技术外,都存在着严重碎片。
不能实现对主存扩充
和单一连续分配一样,要求一个作业执行前必须全部装入主存。
常用分区分配算法
最先适配算法
循环最先适配算法
最佳适配算法
最坏适配算法
分区算法存在的问题
最先适配算法
算法思想
按分区先后次序,从头查找,找到符合要求的第一个分区。
算法实质
尽可能利用存储区低地址空闲区,尽量在高地址部分保存较大空闲区,以便一旦有分配大空闲区要求时,容易得到满足。
算法优点
分配简单,合并相邻空闲区也比较容易。
算法缺点
查找总是从表首开始,前面空闲区往往被分割的很小时,满足分配要求的可能性较小,查找次数较多。
解决方法
针对这个问题,对最先适应法稍加改进,就有了循环最先适应法。
循环首次适应算法
循环首次适应算法是首次适应算法的变种。
循环首次适应算法(Next Fit):
在分配内存空间时,不再每次从表头(链首)开始查找,而是从上次找到空闲区的下一个空闲开始查找,直到找到第一个能满足要求的空闲区为止,并从中划出一块与请求大小相等的内存空间分配给作业。该算法能使内存中的空闲区分布得较均匀。
循环最先适应法
算法思想
按分区先后次序,从上次分配的分区起查找(到最后分区时再回到开头),找到符合要求的第一个分区。
算法特点
算法的分配和释放的时间性能较好,使空闲分区分布得更均匀,但较大的空闲分区不易保留
最佳适配算法
算法思想
在所有大于或者等于要求分配长度的空闲区中挑选一个最小的分区,即对该分区所要求分配的大小来说,是最合适的。分配后,所剩余的块会最小。
算法实现
空闲存储区管理表采用从小到大的顺序结构。
优点
较大的空闲分区可以被保留。
缺点
空闲区是按大小而不是按地址顺序排列的 ,因此释放时,要在整个链表上搜索地址相邻的空闲区,合并后,又要插入到合适的位置。

浙公网安备 33010602011771号