操作系统-存储器管理

一、前言

存储器是计算机系统的重要组成部分。

二、存储器层次结构

2.1存储器层次结构

对于通用计算机来讲,主要分为三个层次:CPU寄存器、主存、辅存


2.2存储器介绍

       主存储器主要用来存放进程运行时所需要的程序和数据,处理机从主存中获得指令和数据,送至寄存器,或者将寄存器的数据存回主存。
       寄存器是一种高速的存储器结构,具有与cpu相当的访问速度,但是容量较少造价昂贵。主要用于存放处理机运行时数据。
       高速缓存,是介于主存与寄存器之间的存储器,主要是用于备份主存中常用数据,缓和寄存器与主存之间的速度矛盾。
       磁盘缓存,是介于磁盘与主存的存储器,缓和了主存与磁盘间速度不匹配的矛盾。

三、程序的装入与链接

       用户程序在系统中运行,需要经过以下三个步骤:(1)编译:由编译程序对程序进行编译,形成若干个目标模块。(2)链接:由链接程序将不同的模块以及所需要的库函数链接在一起,形成一个完整的装入模块。(3)装入:由装入程序将装入模块装入内存。

3.1程序装入

(1)绝对装入方式

       在编译后,用户知道程序装入内存的起始地址,并对程序中相对地址做出相应的修改,则程序存放的是绝对地址的目标代码。

        这种方式只适合使用单道程序的系统中,并且对于程序员来讲,这种方式也是一种压力。

(2)可重定位的装入方式

在装入时,把目标程序中的指令与数据的地址进行重定位。

这种方式适合多道程序的运行环境。在多个程序的系统,编译后目标模块放在哪个内存地址并不可知。

(3)动态装入方式

在装入时,并不对程序的逻辑地址进行转换,而是将其过程延迟至程序运行时进行。

这种方式适合对换的方式,在可重定位装入方式中,程序的内存地址在运行时是不允许进行修改的。

3.2程序链接

(1)静态链接方式
        在将几个目标模块装配成一个装入模块时:将各个模块的相对地址进行修改,变换外部调用符号。在链接后,形成一个完整的装入模块。
(2)装入时动态链接
在装入内存时,采用边装入边链接的链接方式。
(3)运行时动态链接
在运行时,对需要的模块进行查找装入。

四、连续分配

连续分配是指为进程分配连续的内存空间。

4.1单一连续分配

在单道程序中,仅装入一个用户程序,即是一个用户程序占用所有的用户内存地址。

4.2固定分区分配

在固定分区分配中,通常可将分区设定为固定分区或者大小不同(大小已确定)的分区。而对于分区使用情况,需要一张分区使用表来协助对于内存的分配和管理。

4.3动态分区分配

动态分区,是根据进程的实际需要,动态的为之分配内存空间。
(1)动态分区使用的数据结构
       在动态分区中,需要知道有哪些空间是空闲的。因此,我们需要一定的数据结构来表示空闲的内存空间。通常有两种方式进行表示,一是使用空闲分区表,一是空间分区链。
(2)动态分区分配算法
(3)动态分区的分配操作
       此处比较简单,分配时根据空间分区表(链)找到相应符合要求的分区,并将空闲分区表进行相应修改。
回收时,将待回收的内存块与空闲分区表中记录相比较,如果邻接,则不必对此创建新的表项。

4.4基于顺序搜索的分配算法

(1)首次适应(FF)

(2)循环首次适应(NF)
(3)最佳适应(BF)
(4)最坏适应(WF)

4.5基于索引搜索的分配算法

(1)快速适应(QF)
将相同容量大小的分区使用链表进行连接,进行分配时,首先根据申请空间大小查找相应的链表,再进行相应寻找。
(2)伙伴系统
将分区分为2的i次方的形式保存,有点类型进程调度中多级队列反馈的算法。分配时,首先判断申请空间大小,然后在相应的链表中查找,如果没有找到便在更大的链表中查找,查到后,并对其进行相应的分裂。回收时,相应存在着合并分区的过程。
(3)哈希算法
根据分区的大小建立相应的哈希函数。

4.6动态可重定位分区分配

(1)紧凑
将内存中分区进行紧凑操作,使空间更加紧凑,减少碎片。
(2)动态重定位
在系统中增设一个重定位寄存器,用来存放程序在内存中起始地址。
(3)动态重定位分区算法

五、对换

5.1进程换出

将阻塞或者优先级低的进程选出,然后申请对换空间,启动磁盘,将进程的所有的程序和数据传送到磁盘的对换区中。

5.2进程换入

查找已就绪且换出的进程,然后申请内存空间,将磁盘中的数据载入内存。

六、分页存储

为了解决连续分配的缺陷,产生离散分配方式。分页存储,是指将进程的逻辑地址空间分成若干个页,同时内存的区域也相应分成页,这样可以将进程的页与内存中的物理块进行映射。

6.1分配的基本方法

地址结构,由页号和位移量组成。位移量是指在对应页中的偏移量。

页表用于存放进程页号和内存物理块号的映射。

6.2地址变换系统

(1)基本地址变换机构

页表寄存器存放着页表的起始位置与页表长度,一般存放在PCB中。


(2)具有快表的地址变换机构

快表中保存着最近访问的页号和物理块的对应记录,可以首先在快表中查找,如未查找到,则转入页表中查找,同时更新快表。


6.3多级页表


6.4反置页表

反置页表是指按照物理块序号排序,包含页号和所隶属进程的标识符。进而减少为每个进程配置一张页表。

七、分段存储

7.1段表

7.2地址变换系统

7.3段页式存储



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值