• 计算机操作系统 第四章 存储器管理(3)


    目录

    4.6  分段存储管理方式

    4.6.1  分段存储管理方式的引入

    4.6.2  分段系统的基本原理 

    4.6.3  信息共享

     4.6.4  段页式存储管理方式


    4.6  分段存储管理方式



      存储管理方式随着OS的发展也在不断地发展。当OS由单道向多道发展时,存储管理方式便由单一连续分配发展为固定分区分配。

    4.6.1  分段存储管理方式的引入


    1. 方便编程
      通常,用户把自己的作业按照逻辑关系划分为若干个段,每个段都从0开始编址,并有自己的名字和长度。因此,程序员们都迫切地需要访问的逻辑地址是由段名(段号)和段内偏移量(段内地址)决定的,这不仅可以方便程序员编程,也可使程序非常直观,更具可读性。例如,下述的两条指令便使用段名和段内地址:
        
    LOAD 1[A] |〈D〉
        
    STORE 1[B] |〈C〉

    2. 信息共享
      在实现对程序和数据的共享时,是以信息的逻辑单位为基础的。比如,为了共享某个过程、函数或文件。分页系统中的“页”只是存放信息的物理单位(),并无完整的逻辑意义,这样,一个可被共享的过程往往可能需要占用数十个页面,这为实现共享增加了困难。

    3. 信息保护
      信息保护同样是以信息的逻辑单位为基础的,而且经常是以一个过程、函数或文件为基本单位进行保护的。

    4. 动态增长
      在实际应用中,往往存在着一些段,尤其是数据段,在它们的使用过程中,由于数据量的不断增加,而使数据段动态增长,相应地它所需要的存储空间也会动态增加。然而,对于数据段究竟会增长到多大,事先又很难确切地知道。对此,很难采取预先多分配的方法进行解决。

     
      4.2.2节中我们已对运行时动态链接做了介绍。为了提高内存的利用率,系统只将真正要运行的目标程序装入内存,也就是说,动态链接在作业运行之前,并不是把所有的目标程序段都链接起来。当程序要运行时,首先将主程序和它立即需要用到的目标程序装入内存,即启动运行。而在程序运行过程中,当需要调用某个目标程序时,才将该段(目标程序)调入内存并进行链接。

    4.6.2  分段系统的基本原理 


    1. 分段
      在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。例如,有主程序段MAIN、子程序段X、数据段D及栈段S等,如图4-19所示。
      分段地址中的地址具有如下结构:

     2. 段表
      在前面所介绍的动态分区分配方式中,系统为整个进程分配一个连续的内存空间。而在分段式存储管理系统中,则是为每个分段分配一个连续的分区。进程中的各个段,可以离散地装入内存中不同的分区中。为保证程序能正常运行,就必须能从物理内存中找出每个逻辑段所对应的位置。

     3. 地址变换机构
      为了实现进程从逻辑地址到物理地址的变换功能,在系统中设置了段表寄存器,用于存放段表始址和段表长度TL。在进行地址变换时,系统将逻辑地址中的段号与段表长度TL进行比较。若S>TL,表示段号太大,是访问越界,于是产生越界中断信号。若未越界,则根据段表的始址和该段的段号,计算出该段对应段表项的位置,从中读出该段在内存的起始地址。然后,再检查段内地址d是否超过该段的段长SL。若超过,即d>SL,同样发出越界中断信号。若未越界,则将该段的基址d与段内地址相加,即可得到要访问的内存物理地址。图4-20示出了分段系统的地址变换过程。

      4. 分页和分段的主要区别
      (1) 页是信息的物理单位。
      
    (2) 页的大小固定且由系统决定。
      
    (3) 分页的用户程序地址空间是一维的。

    4.6.3  信息共享


      1. 分页系统中对程序和数据的共享
      在分页系统中,虽然也能实现对程序和数据的共享,但远不如分段系统来得方便。我们通过一个例子来说明这个问题。

     2. 分段系统中程序和数据的共享
      在分段系统中,由于是以段为基本单位的,不管该段有多大,我们都只需为该段设置一个段表项,因此使实现共享变得非常容易。我们仍以共享editor为例,此时只需在(每个)进程1和进程2的段表中,为文本编辑程序设置一个段表项,让段表项中的基址(80)指向editor程序在内存的起始地址。图4-22是分段系统中共享editor的示意图。

     4.6.4  段页式存储管理方式


      1. 基本原理
      段页式系统的基本原理是分段和分页原理的结合,即先将用户程序分成若干个段,再把每个段分成若干个页,并为每一个段赋予一个段名。图4-23(a)示出了一个作业地址空间的结构。该作业有三个段:主程序段、子程序段和数据段;页面大小为 4 KB。在段页式系统中,其地址结构由段号、段内页号及页内地址三部分所组成,如图4-23(b)所示。

     在段页式系统中,为了实现从逻辑地址到物理地址的变换,系统中需要同时配置段表和页表。段表的内容与分段系统略有不同,它不再是内存始址和段长,而是页表始址和页表长度。图4-24示出了利用段表和页表进行从用户地址空间到物理(内存)空间的映射。

     2. 地址变换过程
      在段页式系统中,为了便于实现地址变换,须配置一个段表寄存器,其中存放段表始址和段长TL。进行地址变换时,首先利用段号S,将它与段长TL进行比较。若S < TL,表示未越界,于是利用段表始址和段号来求出该段所对应的段表项在段表中的位置,从中得到该段的页表始址,并利用逻辑地址中的段内页号P来获得对应页的页表项位置,从中读出该页所在的物理块号b,再利用块号b和页内地址来构成物理地址。图4-25示出了段页式系统中的地址变换机构。

  • 相关阅读:
    射线与OBB相交检测
    精通Linux,没用过scp?
    文章主要内容提取软件[基于NLP技术]
    layim之初始化配置
    『时代』杂志:元宇宙将改变世界;健身教练:AI让我丢工作!有话说北欧人工智能夏令营资料大公开;深度学习书籍TOP5 | ShowMeAI资讯日报
    NPU运行过程中,读带宽高还是写带宽高?
    【蓝桥杯国赛真题24】Scratch货物运输 第十三届蓝桥杯 图形化编程scratch国赛真题和答案讲解
    U盘目录穿越获取车机SHELL - 分析与复现
    【Java面试】Kafka 怎么避免重复消费
    【电商运营】如何吸引客户?经典WhatsApp营销案例分享!
  • 原文地址:https://blog.csdn.net/weixin_53342789/article/details/126249045