㈠ 连续分配存储管理方式
一、单一连续分配
最简单的一种存储管理方式,只能用于单用户、单任务的操作系统中。
优点:易于管理。
缺点:对要求内存空间少的程序,造成内存浪费;程序全部装入,很少使用的程序部分也占用内存。
二、固定分区分配
把内存分为一些大小相等或不等的分区(partition),每个应用进程占用一个分区。操作系统占用其中一个分区。支持多个程序并发执行,适用于多道程序系统和分时系统。最早的多道程序存储管理方式。
缺点:内碎片(一个分区内的剩余空间)造成浪费;划分为几个分区,便只允许几道作业并发,分区总数固定,限制并发执行的程序数目。
三、动态分区分配
1、分区的大小不固定:在装入程序时根据进程实际需要,动态分配内存空间,即——需要多少划分多少。
2、空闲分区表项:从1项到n项:内存会从初始的一个大分区不断被划分、回收从而形成内存中的多个分区。
3、优点:并发进程数没有固定数的限制,不产生内碎片。缺点:有外碎片(分区间无法利用的空间)
4、分区分配算法
①首次适应算法FF(first-fit)
空闲分区排序:以地址递增的次序链接。
检索:分配内存时,从链首开始顺序查找直至找到一个大小能满足要求的空闲分区;
分配:从该分区中划出一块作业要求大小的内存空间分配给请求者,余下的空闲分区大小改变仍留在空闲链中。
若从头到尾检索不到满足要求的分区则分配失败
优点:优先利用内存低址部分,保留了高地址部分的大空闲区;
缺点:但低址部分不断划分,会产生较多小碎片;而且每次查找从低址部分开始,会逐渐增加查找开销。
②循环首次适应算法
空闲分区排序:按地址
检索:从上次找到的空闲分区的下一个空闲分区开始查找,直到找到一个能满足要求的空闲分区。为实现算法,需要设置一个起始查寻指针并采用循环查找方式
分配:分出需要的大小
优点:空闲分区分布均匀,减少查找开销
缺点:缺乏大的空闲分区
③最佳适应算法
总是把能满足要求、又是最小的空闲分区分配给作业,避免“大材小用”。
空闲分区排序:所有空闲分区按容量从小到大排序成空闲分区表或链。
检索:从表或链的头开始,找到的第一个满足的就分配
分配:分出需要的大小
缺点:每次找到最合适大小的分区割下的空闲区也总是最小,会产生许多难以利用的小空闲区(外碎片)
④最差适应算法/最坏匹配法
基本不留下小空闲分区,但会出现缺乏较大的空闲分区的情况。
⑤快速适应算法
根据进程常用空间大小进行划分,相同大小的串成一个链,需管理多个各种不同大小的分区的链表。进程需要时,从最接近大小需求的链中摘一个分区。
能快速找到合适分区,但链表信息会很多;实际上是空间换时间。
5、回收分区
(1)回收区(首址a)与一个分区f1末尾(首址b+大小)邻接:将回收区与f1合并,修改f1的表项的分区大小
(2)回收区(首址a+大小)与一个分区f2的首址b邻接:将回收区与f2合并,修改f2的表项的首址、分区大小
(3) (1)(2)两种情况都有,则将回收区与前后两个分区F1、F2邻接:将三个分区合并,使用F1的表项和F1的首址,取消F2的表项,大小为三者之和
(4) 回收区没有邻接的分区:为回收区单独建立新表项,填写回收区的首址与大小,根据其首址插到空闲链中的适当位置
四、动态重定位分区分配——有紧凑功能的动态分区分配
动态重定位分区分配算法与动态分区分配算法基本相同,差别在于增加了紧凑的功能。
伙伴系统
分区大小有规定,且分区动态变化
1、无论已分配还是空闲分区,大小都为2的k此幂。若整个可分配空间大小为2m,则1≤k≤m.
2、随着系统运行,内存被不断划分,形成若干不连续的空闲分区。对每一类具有相同大小的空闲分区设置一双向链表,即会有k个链表,链表中的分区大小都是2m。
3、进程申请n个大小的空间时,计算n= 2i。则找i对应的链表。若i大小的链表没有,则找i+1的链表。找到的分区对半划分后,一半用于分配,一半链接到较小一级的链表里去。
4、一次分配和回收都可能对应多次的划分和合并。
五、内存空间管理之对换
当内存空间还是满足不了需求时,把内存中暂时不能运行、或暂时不用的程序和数据调到外存上,以腾出足够的内存;把已具备运行条件的进程和进程所需要的程序和数据,调入内存。
整体对换(或进程对换):以整个进程为单位(连续分配)
页面对换或分段对换:以页或段为单位(离散分配)
㈡ 动态分区的思想是什么如何实现其内存保护
可变分区存储管理不是预先把内存中的用户区域划分成若干固定
分区,而是在作业要求装入内存时,根据用户作业的大小和当时内存空间使用情况决定是否为该作业分配一个分区。因此分区大小不是预先固定的,而是按作业需求量来划分的;分区的个数和位置也不是预先确定的。它有效地克服了固定分区方式中,由于分区内部剩余内存空置造成浪费的问题。
㈢ 内存的连续分配有哪些方式,各有什么特点
内存的连续分配方式有:单一连续分配、固定分区分配、动态分区分配以及动态重定位分区分配四种方式。
单一连续分配:只能用于单用户、单任务的操作系统中。
固定分区分配:可运行多道程序的存储管理方式答绝。
动态分区分配:根据戚举蠢进程的实际需要,动态地为之分配内存空间。
可重定位分区分配:必须把一高陪个系统或用户程序装入一连续的内存空间。
㈣ 简述操作系统的内存管理方法中,固定分区法和动态分区法的相同点和不同点
单一连续分配
内存在此方式下分为系统区和用户区,系统区仅提供给操作系统使用,通常在低地址部分;用户区是为用户提供的、除系统区之外的内存空间。这种方式无需进行内存保护。
这种方式的优点是简单、无外部碎片,可以釆用覆盖技术,不需要额外的技术支持。缺点是只能用于单用户、单任务的操作系统中,有内部碎片,存储器的利用率极低。
固定分区分配
固定分区分配是最简单的一种多道程序存储管理方式,它将用户内存空间划分为若干个固定大小的区域,每个分区只装入一道作业。当有空闲分区时,便可以再从外存的后备作业队列中,选择适当大小的作业装入该分区,如此循环。
㈤ 存储器管理的几种动态分区分配算法有什么特点优缺点都是什么
动态分区分配算法:
1.首次适应算法(FF/first fit)
2.循环首次适应算法(next fit)
3.最佳适应算法(best fit)
从最小的分区开始分配
4.最坏适应算法(worst fit)
从最大的分区开始分配
5.快速适应算法/分类搜索法(quick fit)
将空闲分区根据其容量的大小进行分类
㈥ 动态分区和分段式内存管理有什么区别
动态分区是按需分配,开始时内存能充分利用,但当不停有进程被换入、换出时会形成很多进程间的内存碎块,称为外部碎片。
分段是将进程划分成若干个段,但段的长度不必相等,一个进程可以有程序段、数据段和堆栈段,这些段在内存中的地址可以不连续,分段有点类似于动态分区。分段消除了主存的内部碎片,但会产生外部碎片。
㈦ 电脑,主分区和动态分区有什么区别。
1.地位不同
逻辑分区属于扩展分区,扩展分区属于主分区。
给新硬盘上建立分区时都要遵循以下的顺序:建立主分区→建立扩展分区→建立逻辑分区→激活主分区→格式化所有分区。
2.位置不同
主分区又叫做引导分区,最多只能创建四个。
扩展分区是主分区之外的部分。
逻辑分区在扩展分区之内可以创建无数个。
3.作用不同
主分区是独立的,对应磁盘上的第一个分区,“一般”就是C盘。
扩展分区是一个概念,实际上是看不到的。
逻辑分区相当于一块存储截止,和操作系统还有别的逻辑分区、主分区没有什么关系,是“独立的”。
4.格式化情况不同
格式化是针对主分区和逻辑分区的。要格式化是因为这和操作系统管理文件系统有关系。没有格式化的分区就像一张白纸,要写入数据,必须对白纸打上“格子”,每个格子里面写一块。而操作系统只认这些格子。
5.大小不同
我们假定扩展分区为字母X,用一个公式来总结它们之间的关系:
硬盘的容量=主分区的容量+扩展分区的容量(硬盘=C盘+X)
扩展分区的容量=各个逻辑分区的容量之和(X=D盘+E盘+F盘)
㈧ 操作系统中的分区存储管理和分页存储管理的优点和缺点各是什么
一、分区存储管理
1、固定分区:
优点:易于实现、开销小
缺点:存在内部碎片(分区内未被利用空间)、分区总数固定,限制了并发执行的程序数量。
2、动态创建分区:按照程序申请要求分配。
优点: 没有内部碎片
缺点:有外部碎片(难以利用的小空闲分区)
二、页式存储管理
优点: 没有外部碎片,最后一页可能有内碎片但不大; 程序不必连续存放;便于改变程序占用空间大小。
缺点: 程序仍需要全部装入内存。