操作系统——内存管理(一)

一:程序的装入和链接

用户程序要在系统中运行,必须先将它装入内存,然后再将其转变为一个可以执行的程序,通常都要经过以下几个步骤:
(1)编译
(2)链接
(3)装入
在这里插入图片描述

二:连续分配存储管理方式

在这里插入图片描述
在这里插入图片描述

1、单一连续分配

在单一连续分配方式中,内存被分为系统区用户区。系统区通常位于内存的低地址部分,用于存放操作系统相关数据;用户区用于存放用户进程相关数据。

特点:同一时刻内存中只能有一道用户程序,用户程序独占整个用户区空间。所以并不支持多道程序并发运行
在这里插入图片描述
优点:实现简单;无外部碎片;可以采用覆盖技术扩充内存;不一定需要采取内存保护。

缺点:只能用于单用户、单任务的操作系统中;有内部碎片,存储器利用率极低。
(分配给某进程的内存区域中,如果有些部分没有用上,就是"内部碎片")

2、固定分区分配

20世纪60年代出现了支持多道程序的系统,为了能在内存中装入多道程序,且这些程序之间又不会相互干扰,于是将整个用户空间划分为若干个固定大小的分区,在每个分区中只装入一道作业,这样就形成了最早的、最简单的一种可运行多道程序的内存管理方式。

划分分区的方法:
1、分区大小相等
2、分区大小不等
在这里插入图片描述
操作系统需要建立一个数据结构――分区说明表,来实现各个分区的分配与回收。每个表项对应一个分区,通常按分区大小排列。每个表项包括对应分区的大小、起始地址、状态(是否己分配)。
在这里插入图片描述
优点:实现简单,无外部碎片
缺点:
a.当用户程序太大时,可能所有的分区都不能满足需求,此时不得不采用覆盖技术来解决,但这又会降低性能;
b.会产生内部碎片,内存利用率低。

3、动态分区分配

在这里插入图片描述

(1)动态分区分配中的数据结构

在这里插入图片描述

(2)基于顺序搜索的动态分区分配算法

在这里插入图片描述
(1)首次适应算法(First Fit)
在这里插入图片描述
(2)邻近适应算法(Next Fit)循环首次适应算法
在这里插入图片描述
在这里插入图片描述
(3)最佳适应算法(Best Fit)
在这里插入图片描述
在这里插入图片描述
(4)最坏适应算法(Worst Fit)
在这里插入图片描述
在这里插入图片描述

(3)基于索引搜索的动态分区分配算法

(1)快速适应算法(quick fit)
在这里插入图片描述
(2)伙伴系统(buddy system)
(3)哈希算法

(4)动态可重定位分区匹配

(1)紧凑
移动作业从把多个分散的小分区拼接成一个大分区的方法称为拼接或紧凑
在这里插入图片描述
虽然"紧凑"能获得大的空闲空间,但也带来了新的问题,即经过紧凑后的用户程序在内存中的位置发生了变化,此时若不对程序和数据的地址加以修改(变换),则程序必将无法执行。为此,在每次"紧凑"后,都必须对移动了的程序或数据进行重定位。为了提高内存的利用率,系统在运行过程中是经常要进行"紧凑"的,每"紧凑"一次,就要对移动了的程序或数据的地址进行修改,这不仅是一件相当麻烦的事情,而且还大大地影响到系统的效率。下面要介绍的动态重定位方法将能很好地解决此问题。

(2)动态重定位
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、对换(Swapping)

问题:内存中被阻塞的进程占用大量空间,外存上却有许多作业因为内存不足而等待。
对换:把内存中暂时不能运行的进程或暂时不用的程序和数据调出到外存上,以便腾出足够的内存空间。

高级调度、中级调度、低级调度的通俗介绍:
https://blog.csdn.net/weixin_42468707/article/details/123299838

在这里插入图片描述
那么应该在外存(磁盘)的什么位置保存被换出的进程呢?
在支持对换的OS中,磁盘空间分为文件区和对换区两部分。

文件区
◆占大部分
◆更关注空间利用率
◆采用离散分配方式,减少碎片

对换区
◆占小部分
◆更注重访问速度
◆连续分配方式,对速度有利
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小本科生debug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值