第四章 存储器管理 4.5 基本分段存储管理方式

发布时间 2023-04-26 15:56:48作者: 一只朋克小狗

一、程序的分段:方便编程,分段共享,分段保护,动态链接,动态增长 

二、分段系统的基本原理

    1.分段

    作业地址空间按逻辑信息的完整性被划分为若干个段;

    每段有段名(或段号),每段从0开始编址;

    段内的地址空间是连续的。 

    2.段表——实现从逻辑段到物理内存区的映射

    为每个分段分配一个连续的分区,而进程中的各个段可以离散地移入内存中不同的分区中。

    在系统中为每个进程建立一张段映射表,简称“段表”。

    每个段在表中占有一个表项,其中记录了该段在内存中的起始地址,段长度,存取控制

    通常将段表放在内存中,执行中的进程可通过查找段表找到每个段所对应的内存区。 

    3.地址变换机构

         ①根据段表寄存器的内容找到该作业的段表起始地址;  

        ②利用有效地址中的段号作为检索段表的索引,若段号大于等于段表长度,则发出越界中断;否则得到该段在主存的起始地址

        ③将段的主存起始地址和位移量W相加,即得访问主存的物理地址。

三、信息共享

    比如:多个进程访问同一打印程序段。

    分段的共享是通过多个作业段表的相应表目都指向被共享过程的同一物理副本来实现的。

    可重入代码:一种允许多个进程同时访问的代码(可共享),且是一种不允许任何进程对其进行修改的代码。

四、段页式存储管理方式

    1.分页管理内存管理:效率高,没有外零头,内零头小。

      分段管理:符合模块化思想,每个分段都具备完整的功能,方便代码共享、保护,没有内零头,存在外零头。 

    2.原理:分段和分页相结合。  

      先将用户程序分段,每段内再划分成若干页,每段有段名(段号),每段内部的页有一连续的页号。 

    注意:程序的分段可以由程序员或编译程序根据信息的逻辑结构来划分;而分页则与程序员无关,是由系统自动进行的

    3.逻辑地址结构:

    4.地址变换

        ①从段表寄存器从获得进程段表的起始地址,根据该地址,查找进程的段表。

        ②根据逻辑地址指定的段号检索段表,找到对应段的页表起始地址

        ③根据逻辑地址中指定的页号检索该页表,找到对应页所在的物理块号。

        ④用物理块号加上逻辑地址中指定的页内偏移量,形成物理地址

    5.访问效率

    在段页式存储管理方式中,每访问一次数据,需访问三次内存:访问段表,访问页表,访问数据。

      既能有效地利用存储空间,又能方便用户进行程序设计;需要增加硬件成本,系统的复杂度和管理开销也大大增加。适合于大、中型计算机系统,不太适合小型、微型计算机系统。

    可以在地址变换机构中设置快表,表项应包括段号、页号、物理块号。利用段号和页号去检索高速缓存。