内存的扩充(覆盖技术和交换技术的设计思想)

首先,我们要先了解清楚的问题是,为什么会出现内存扩充?这个可以思考一下

好,开始正文:

覆盖技术:

早起的计算机内存很小,比如IBM推出的第一台PC机最大只支持1MB大小的内存。因此经常会出现内存大小不够的情况。

后来人们引入了覆盖技术,用来解决”程序大小超过物理内存总和”的问题

覆盖技术的思想:就是将程序分为多个段(多个模块),

常用的段常驻内存,不常用的段的需要调入内存。

内存中分为一个固定区 和若干个覆盖区

常用的段呢存储在固定区,调入后就不会再调出(除非结束运行)

不常用的段放在覆盖区  需要用到的时候调入内存,用不到的时候调出内存

从下图:

以上面这张图为例,main方法是必须要使用到的,必然会存储在固定去,但是B 和C是两个分支,不可能同时执行,这个时候,就会把这两个程序存储在覆盖区域,

执行谁的时候,就会把那一个调入内存,另一个调出内存。同理,下面的分支同上。

 

必须由程序员声明覆盖结构,操作系统完成自动覆盖。缺点:对用户不透明,增加了用户变成负担。

覆盖技术只用于早起的操作系统,现在的操作系统已经不在使用。

 

交换技术:

交换技术的设计思想:内存空间级转哪行的时候,系统将内存中某些进程暂时换出外存,把外村中某些已具备 运行条件的进程换入内存(进行在内存与磁盘间动态调度)

 

暂时换出外村等待的进程状态为挂起状态(挂起态 suspend)

挂起态又可以进一步细分为就绪挂起、阻塞挂起两种状态

看一下进程状态转换图:

每产生新的思想和新的方式的时候,肯定会有新问题的出现,那下面几个问题就是需要去思考的几个问题:

1.应该在外存(磁盘)的什么位置保存被换出的进程?

2.什么时候应该进行交换

3.应该换入换出哪些进程?

 

1.具有交换功能的操作系统中,通常会把磁盘分为两个区,一个是对换区,一个是文件去两部分。文件区呢主要来存储文件,主要追求存储空间的利用率,因此

对文件区空间的管理采用离散分配方式。

对换区空间只占磁盘空间的一小部分,被换出的进程数据就存放在对换区。由于对换的速度直接影响系统的整体速度,因此对换区空间的管理主要追求的事换入换出的速度,

因此通常对换区采用连续分配方式。总之就是,对换区的I/O速度比文件区的更快。

2.交换通常在许多进程运行且内存吃紧的时候进行的,而系统负荷降低就暂停。

例如:在发现许多进程运行时经常发生缺页,就说明内存吃紧,此时可以换出一些进程;

如果缺页率明显下降,就可以暂停换出、

3.可优先换出阻塞进程,可换出优先级低的进程,为了防止优先级低的进程在被调入内存后很快又被换出,有的系统还会考虑进程在内存的驻留时间…

Pcb会常驻内存,不会被换出外存,因为进程的换入换出等相关位置和状态都会存储在pcb中。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值