存储器管理

连续分配存储管理方式

基本思想:

为每一个用户程序分配一个地址连续的内存块,程序中代码或数据的逻辑地址相邻,对应存储单元物理地址也相邻。
有四类分配方法:

单一连续分配

内存分为两个连续区域:系统区,用户区。系统区为操作系统,用户区装载一道应用程序。

固定分区分配

内存分配方法:把内存划分为若干个固定大小的连续分区。一旦划分好,在系统运行期间不再重新划分。

动态分区分配

1. 内存分配方法:系统存储器不预先划分分区,在每次作业装入时,根据作业大小要求,从可用存储空间中切一块大小与所要求相近的存储区分配给作业。
2. 动态分区管理:设置分区表、或分区链表等数据结构,管理分区起始地址、大小、分配状态等.

3. 内存分配(也适合固定分区)

最先匹配法(first-fit)(首次适配算法):空闲区按地址从小到大排列,拿在空闲区表中第一个符合要求的分区,从中切出要求大小的内存块分配出去.
  • 好处:较大的空闲分区可以被保留在内存高端。
  • 不足:但随着低端分区不断划分而产生较多小分区,每次分配时查找时间开销会增大。
最佳匹配法(best-fit):

空闲区按其大小从小到大排列,找到其大小与要求相差最小的空闲分区(即第一个满足要求的分区进行分配)较大的空闲分区可以被保留但会形成较多无法利用的较小分区(外部碎片)

最差匹配法(worst-fit):

空闲区按其大小从大到小排列,找到最大的空闲分区(即空闲区表中第一个分区),从中切出要求大小的内存块,基本不留下小空闲分区,但较大的空闲分区不被保留。

4、内存回收

作业进程运行完毕释放内存时,存储管理程序要收回已使用完毕的空闲区,并将其插入空闲分区表或空闲分区链表空闲区拼接问题。如果回收分区与某空闲分区相邻,则应该进行拼接,以把不连续的零散空闲区集中起来。
a) 上下两相邻分区都是空闲区:
b) 上相邻区是空闲区;
c) 下相邻区是空闲区;
d) 两相邻区都不是空闲区:


image.png

5.地址转换(地址重定位、地址映射)

MMU设置一个重定位寄存器(或称基址寄存器),用来存放程序(数据)在内存中的起始地址,指令执行时,处理机给出相对地址,MMU按以下方法计算绝对地址是:绝对地址=相对地址+重定位寄存器


image.png

6.存储保护

存储保护的目的是限制用户作业(或用户进程的访存范围仅限于分配给作业的存储块地址范围。

动态可重定位分配

分页存储管理方式

分段存储管理方式

银行家算法
1.判断有没有分配足够资源的能力
2.预分配
3.安全性检查

页面置换算法:

  1. 最佳置换算法(OPT)
  • 算法思想:总是选择以后永不使用的,或许是在最长(未来)时间内不再被访问的页面,进行替换


    OPT.jpg

2.先进先出页面置换算法(FIFO)
算法思想:当需要调入新的页面,但无可用空闲物理块时,总是选择在内存中驻留时间最长的页并予以淘汰,用腾出的物理块来载入新的页面
访问顺序7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
M=3
淘汰

处理机调度算法:

①处理机利用率(CPU utilization):
一般越高越好
②作业周转时间(turnaround):
批处理用户从作业提交给系统开始,到作业完成为止的时间间隔称作业周转时间,作业Ji的周转时间为Ti,则平均周转时间为 。


平均周转时间.png

带权周转时间是作业的周转时间Ti与系统为它提供服务的时间TSi之比,方便比较不同规模作业获得服务质量,平均带权周转时间是评价系统服务质量的重要指标


平均带权周转时间.png

③系统吞吐量(throughout):吞吐量是指在单位时间内系统所完成的作业数。对于很多批处理系统来说,吞吐量越高,经济效益越好。
④响应时间(response time):交互式进程从提交一个请求(命令)到接收到响应之间的时间间隔称响应时间,响应时间越短,用户体验性越好。

1.FCFS先来先服务
算法思想:调度最先进入就绪队列的作业或进程,一个进程一旦分得处理机,便执行下去,直到该进程完成或阻塞时,才释放处理机。
采用FCFS调度算法进行调度给出各个作业的开始时间、结束时间、周转时间、带权周转时间,计算平均周转时间和平均带权周转时间

2.短作业优先SJF
算法思想:该算法从就绪队列或后备队列中选出所需CPU时间最短的进程或作业,调度运行或为之分配处理机。

3 响应比最高者优先(HRRF)算法
响应比=1+等待时间/估计运行时间
以下四个作业先后到达系统进入调度:
作业名 到达时间 所需CPU时间
作业1 0 20
作业2 5 15
作业3 10 5
作业4 15 10

HRRF算法.png
  • 开始只有作业1,被选中执行时间20ms;
  • 作业1执行完毕,作业2、3、4响应比依次为1+15/15、1+10/5、1+5/10,作业3被选中,执行时间5ms;
  • 作业3执行完毕,作业2、4响应比依次为1+20/15、1+10/10,作业2被选中,执行时间15ms;
  • 作业2执行完毕,作业4被选中,执行时间10ms;
    平均作业周转时间T = (20+15+35+35)/4 = 26.25
    平均带权作业周转时间W = (20/20+15/5+35/15+35/10)/4 = 2.46

4 基于优先级调度法
算法思想: 这种算法是根据确定的优先级来选取作业,每次总是选择优先数高的作业。

5.最短剩余时间优先(SRTF,Shortest Remaining Time First)
算法思想:把SJF算法改为抢占模式,又称抢占式短作业优先算法,一个新作业进入就绪状态,如果新作业需要的CPU时间比当前正在执行的作业剩余下来还需的CPU时间短,SRTF强行赶走当前正在执行作业。

进程调度算法:

非抢占调度方式:

在批处理系统环境下,一个作业一旦投入运行,就认为一直占有处理机,直到作业运行结束,或因执行I/O等原因,主动放弃CPU,这种方式具有实现简单、系统开销小的好处,但在分时环境下,可能会导致用户操作长时间得不到响应,不太适合分时系统

抢占调度方式:

一旦有新的进程到来或就绪,如果其优先级足够高,允许其请求将暂停当前进程执行,夺走CPU,让优先级更高尽快获得执行的机会,被抢占进程回到就绪队列。这种调度方式能使紧迫性和重要性更高的进程,得到快速响应,适合分时系统环境

时间片轮转调度算法:
时间片轮转调度算法RR.png

1.算法思想:
OS为每个进程分配一个时间片(time slice, 通常为10-100ms之间),每个进程在所分配到的时间内拥有CPU使用权。当某个正在执行的进程其所分配的时间片用完时,OS强行从该进程夺取CPU使用权,并将该进程重新放到就绪队列末尾。

优先权调度算法HPF(Highest-Priority-First):

算法思想:为每个进程设置一个由数字表示的优先级,作为进程竞争CPU的能力,系统总是选择优先级高进程投入运行。

1.非抢占式优先级算法
算法思想:系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直到完成或因发生某事件而放弃处理机时,系统方可重新分配处理机。
2.抢占式优先级算法
算法思想:系统把处理机分配给就绪队列中优先权最高的进程,使之执行。但在其执行期间,只要出现了另一个优先权更高的进程,进程调度程序就立即停止当前进程的执行,重新将处理机分配给新到的优先权最高的进程。

(3)多级反馈队列调度算法MFQ
1.算法思想:

  • 设置多个就绪队列,并为每个队列赋予不同的优先级。队列1的优先级最高,其余队列逐个降低
  • 各队列中进程时间片的大小各不相同,优先级越高,时间片就越短
  • 新进程进入总是插入队列1的末尾,按FCFS等待调度。若一个时间片未完成,超时后转入队列2的末尾,按FCFS再次等待调度,如此下去,如果进入队列n则按RR算法调度执行。
  • 仅当队列1为空时,才调度队列2中的进程运行。若队列I中的进程正执行,此时有新进程进入优先级较高的队列中,则新进程将抢占运行,原进程转移至下一队列


    多级反馈队列.png

你可能感兴趣的:(存储器管理)