操作系统之存储管理

我们用的系统中的线性地址通常采用10-10-12的三段结构
第一段是页目录表索引,第二段是页表索引,第三段是页内偏移
无论是页目录表项还是页表中的表项,都记录了对该页的存储性保护字段。当然,存储性保护远远不只是单纯的依靠页来实现,cpu的段保护机制,起到了更加重要的作用,这是实现操作系统的基础

紧凑技术

所谓碎片是指内存中出现的一些零散的小空闲区域。由于碎片都很小,无法再利用。如果内存中碎片很多,将会造成严重的存储资源浪费。
解决碎片的方法是移动所有的占用区域,使所有的空闲区合并成一片连续区域,这一技术称为移动技术(紧凑技术)。
移动技术除了可解决碎片问题还使内存中的作业进行扩充。显然,移动带来系统开销加大,并且当一个作业如果正与外设进行I/O时,该作业是无法移动的。

在存储管理中,采用覆盖与交换技术的目的是减少程序占用的主存空间,方法是逻辑上扩充主存容量

覆盖技术

  • 覆盖技术是早期在单一连续存储管理中使用的扩大存储器容量的一种技术。
    • 覆盖技术的实现是把程序划分为若干个功能上相对独立的程序段,按照其自身的逻辑结构使那些不会同时运行的程序段共享同一块内存区域。程序段先保存在磁盘上,当有关程序的前一部分执行结束后,把后续程序段调入内存,覆盖前面的程序段

交换技术

  • 交换技术:在分时系统中,用户的进程比内存能容纳的数量更多,系统将那些不再运行的进程或某一部分调出内存,暂时放在外存上的一个后备存储区,通常称为交换区,当需要运行这些进程时,再将它们装入内存

分区存储管理

  • 首次适应法:

    空闲 分区表第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法目的在于减少查找时间。为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按地址由低到高进行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高 地址空间 保留大的空闲区。

  • 最佳适应算法:

    从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区的一种计算方法,这种方法能使碎片尽量小

  • 最坏适应分配算法:

    要扫描整个空闲分区或链表,总是挑选一个最大的空闲分区分割给作业使用。该算法要求将所有的空闲分区按其容量从大到小的顺序形成一空闲分区链,查找时只要看第一个分区能否满足作业要求。

  • 循环首次适应算法:

    该算法是首次适应算法的变种。在分配内存空间时,不再每次从表头(链首)开始查找,而是从上次找到空闲区的下一个空闲开始查找,直到找到第一个能满足要求的的空闲区为止,并从中划出一块与请求大小相等的内存空间分配给作业。该算法能使内存中的空闲区分布得较均匀

分区管理和分页管理

一、分区存储管理
1、固定分区:
提前将内存划分成多个区,区的大小可以不同,但是划分好后,个数和大小都不能发生改变。
优点:易于实现、开销小
缺点:存在内部碎片(分区内未被利用空间)、分区总数固定,限制了并发执行的程序数量。

2、动态创建分区:按照程序申请要求分配。
优点: 没有内部碎片
缺点:有外部碎片(难以利用的小空闲分区)

二、页式存储管理
优点: 没有外部碎片,最后一页可能有内碎片但不大; 程序不必连续存放;便于改变程序占用空间大小。

分区管理和分页管理的主要区别是:
分区要求一道程序存放在连续的空间内而分页没有这种要求

请求分页系统

页表项有:
|页号|物理块号|状态位P|访问字段A|修改位M|外存地址|

各字段说明如下:

  • 1)状态位P:用于指示该页是否已调入内存,供程序访问时参考,内存分配

  • 2)访问字段A:用于记录本页在一段时间内被访问次数,供选择换出页面时参考;

  • 3)修改位M:表示该页在调入内存后是否被修改过,供置换页面时参考;

    如果一个页面已经被修改过(即,它是“脏的”),当页面被换出时,必须将其写回磁盘,如果该页面没有被修改过(即为“干净”的),则直接丢弃就可,因为它在磁盘上的副本仍然有效,改变位有时也称为“脏位”。

  • 4)外存(辅存)地址:用于指出该页在外存上的地址,通常是物理块号,供调入页面时参考;

已修改过的页面再次装入时应来自磁盘对换区
不被修改的页面放到磁盘文件区

分页式存储系统中,页面的大小与可能产生的缺页中断次数无关
若页面尺寸变小,则缺页中断的次数可能增加也可能减少

  • 若把页面尺寸增大一倍而且可容纳的最大页数不变,则在程序顺序执行时缺页中断次数会(减少)
    因为在请求分页存储器中,由于页面尺寸增大,存放程序需要的页帧数就会减少,因此缺页中断的次数也会减少。

  • 在硬件和环境相同的条件下,一个作业在(分页)存储管理系统中运行的时间最长。
    分页式存储管理可能将连续的指令放置在不同的页中,会发生换页中断,而分段、段页都是逻辑分配空间,段长可变逻辑上相对连续的指令放在同一段中,不会像分页那样频繁换页操作。

1.Belady现象:是指当所分配的物理块数增大而页故障数不减反增的异常现象。
2.抖动现象:是指刚刚换出的页面马上又要换入内存,刚刚换入的页面马上又要换出主存,这种频繁的页面调度行为称为抖动,或者颠簸。

FIFO页面的变化会引起抖动现象
请求分页处理不当会产生抖动

  • 逻辑地址=>物理地址计算方法

在页式存储管理系统中,页表内容如表所列:
页表: 页号 块号
0 2
1 1
2 6
3 3
4 7
若页的大小为4KB,则地址转换机构将逻辑地址0转换成物理地址为(8192)。

页面大小是4K = 2^12
块的大小与页大小一致=4K(页是进程里的称呼,块是存储器里的称呼,本质都是一样的)
地址偏移量=逻辑地址%页面大小=0
页号=逻辑地址/页面大小=0
查页表得到块号为2,
故物理地址=内存块号 * 块长 + 偏移量 = 2 *(2^12) + 0 = 8192;


存储保护

是指给外置的存储设备加个保护程序,写不进去数据,也删不掉数据。当多个用户共享主存时,为使系统能正常工作,应防止由于一个用户程序出错而破坏其它用户的程序和系统软件,还要防止一个用户程序不合法的访问不是分给它的主存区域。为此,系统提供存储保护。
通常采用的方法是:存储区域保护和访问方式保护。


置换算法

  • LRU(Least Recently Used)

    最近最少使用页面置换算法,也就是首先淘汰最长时间未被使用的页面
    所基于的思想:在最近的过去很久未使用的在最近的将来也不会使用

  • LFU(Least Frequently Used)

    最近最不常用页面置换算法,也就是淘汰一定时期内被访问次数最少的页面

  • 系统”抖动”现象的发生是由(置换算法选择不当)引起的

在请求分页存储管理中,刚被替换出去的页,立即又要被访问因无空,此时因无空闲内存,又要替换另一页,而后者又是下一次要被访问的页,于是系统需花费大量的时间忙于进行这种频繁的页面交换,致使系统的实际效率很低,这种现象称为抖动现象。一般都是由于置换算法不佳引起,


程序静态链接发生在装入时
程序动态链接都可以发生在装入时调用时(即运行时)


  • 静态重定位:

即在程序装入内存的过程中完成,是指在程序开始运行前,程序中的各个地址有关的项均已完成重定位,地址变换通常是在装入时一次完成的,以后不再改变。

  • 动态重定位

即在程序运行过程中要访问数据时再进行逻辑地址与物理地址的变换(即在逐条指令执行时完成地址映射。

  • 动态内存分配

是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小。操作系统可以提供给进程运行时申请和释放任意大小内存的功能

  • 静态内存分配

需要预先分配存储空间

内存的静态分配和动态分配的区别主要是两个:
一是时间不同。静态分配发生在程序编译和连接的时候。动态分配则发生在程序调入和执行的时候。
二是空间不同。堆都是动态分配的,没有静态分配的堆。

存储模型

可以分为六种方式:
1. 单一连续区:一段时间内只能有一个进程在内存中,因此内存利用率低
2. 固定分区:把内存空间分割成若干区域,成为分区,每个分区装载一个且只能有进程
3. 可变分区:根据进程的需要,把内存空间分割出一个分区,分配给进程,剩余的部分成为新的空闲区。 缺点:产生外部碎片,内存利用率低

当用户作业要求进入主存时,在主存可利用的空间区中,找到大于等于用户作业所需要的空间容量,如果该空间大于用户用需要的容量,那么操作系统将会把该分区分成两部份,一部份大小是刚好用户作业所需要的大小,一份则是较小剩下来的,由此可见,这样就会产生很多小的存储碎片。

  1. 页式存储
  2. 段式存储:一个段是一个(不定长的连续)区域
    6.段页式存储

由连续分配方式发展为分页存储管理方式的主要动力是:提高内存利用率

连续分配,应该是包括单一连续分配(单用户、单任务的操作系统) 和分区分配(多道程序) 两种分配策略

分区分配
主要是围绕着内存碎片做了一些文章。为了改善内存利用率,引入了内存紧缩技术,通过内存数据搬移,把多个不连续的空闲内存拼起来。可想而知,CPU开销比较大。

不连续分配的方式,包括页式、段式和段页式。初衷就是要改善内存的利用率,减少碎片,可以实现虚拟存储

页式虚拟存储器地址空间是一维的,段式虚拟存储器地址空间是二维的, 段页式虚拟存储器地址空间仍然是二维的。(段号+页号)

分段尺寸受内存空间的限制,但作业总的尺寸不受内存空间的限制。

分段对应的是内存具体存储管理的一种方式,是对具体内存进行管理,段号+基地址分段尺寸最大为具体内存。在动态链接时先将主程序所对应的目标程序装入内存并启动运行,运行过程中需要调用某段时才将该段内存合并进行链接。
而作业的大小不受内存大小限制,由虚拟存储器解决空间不够问题,允许作业装入的时候只装入一部分,另一部分放在 磁盘 上,当需要的时候再装入到主存,这样以来,在一个小的主存空间就可以运行一个比它大的作业。同 时,用户编程的时候也摆脱了一定要编写小于主存容量的作业的限制。

段式和页式存储管理的地址结构很类似,但是他们之间有实质上的不同
页式的地址是一维的,段式的地址是二维的
各页可以分散存放在主存,每段必须占用连续的主存空间

页式和段式都是采用动态重定位方式。

页式、段式、段页式存储分配方法可能使系统抖动


磁带存储器也称为顺序存取存储器(SequentialAccessMemory,简称SAM)即磁带上的文件依次存放。磁带存储器存储容量很大,但查找速度慢,在微型计算机上一般用做后备存储装置,以便在硬盘发生故障时,恢复系统和数据。


文件类型

按组织形式和处理方式可将文件分为以下几类:
1.普通文件:有ASCII码或二进制码组成的字符文件。
2.目录文件:由文件目录组成的,用来管理和实现文件系统功能的系统文件,通过目录文件可以对其他文件的信息进行检索。
3.特殊文件:特指系统中的各类 I/O**设备**。

猜你喜欢

转载自blog.csdn.net/qq_41401130/article/details/81746092
今日推荐