我是靠谱客的博主 斯文吐司,最近开发中收集的这篇文章主要介绍操作系统14————存储器管理之分段存储&段页存储操作系统14————存储器管理之分页存储,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

操作系统14————存储器管理之分页存储

一.目录

文章目录

  • 操作系统14————存储器管理之分页存储
      • 一.目录
      • 二.分段存储管理方式的引入
      • 三.分段系统的基本原理
        • 1.分段
        • 2.段表
        • 3.地址变化机构
        • 4.分段和分页的主要区别
      • 四.信息共享
        • 1.分页系统中对程序和数据的共享
        • 2.分段系统中对程序和数据的共享
      • 五.段页式存储管理方式
        • 1.基本原理
        • 2.地址变化过程
      • 六.参考资料

二.分段存储管理方式的引入

为什么引入分段存储管理方式,有两方面原因:

  • 通常的程序都可以分为若干个段,每个段大多都是一个相对独立的逻辑单位。
  • 实现和满足信息共享,信息保护,动态链接以及信息的动态增长等需求,也都是以段为基本单位的。

三.分段系统的基本原理

1.分段

在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。例如,有主程序段MAIN、子程序段X、数据段D及栈段S等,通常,用段号代替段名。每个段都从0开始编址,并采用一段连续的地址空间。

段的长度由相应的逻辑信息组的长度决定,因此每个短对长度并不相等。

分段地址中地址具有的结构:
这里写图片描述

2.段表

类似与分页系统,分段系统中段也是离散的分布在内存中,所以需也要为每个进程建立一个段映射表,简称段表。

每个段在表中占有一个表项,其中记录了该段在内存空间的起始地址(基址)和段的长度。如下图:
这里写图片描述

3.地址变化机构

为了实现进程从逻辑地址到物理地址的变换功能,在系统中设置了段表寄存器,用于存放段表始址和段表长度TL。

在进行地址变换时:

  • 系统将逻辑地址中的段号与段表长度TL进行比较。若S>TL,表示段号太大,是访问越界,于是产生越界中断信号。
  • 若未越界,则根据段表的始址和该段的段号,计算出该段对应段表项的位置,从中读出该段在内存的起始地址。
  • 再检查段内地址d是否超过该段的段长SL。若超过,即d>SL,同样发出越界中断信号。
  • 若未越界,则将该段的基址d与段内地址相加,即可得到要访问的内存物理地址。
    这里写图片描述

4.分段和分页的主要区别

相似:

  • 两者都采用了离散分配方式
  • 都是通过地址映射机构来实现地址变化

区别:

  • 页是信息的物理单位,分页仅仅是为了系统管理的需求,完全是系统的行为,对用户是不可见的。段是信息的逻辑单位,它通常是一组意义完整的信息,目的是更好的满足用户的需求。
  • 页的大小固定且有系统决定,段的大小不定。
  • 分页的用户程序地址空间是一维的。分段系统中,用户的地址空间是二维的。

四.信息共享

分段系统的一个突出优点,是易于实现段的共享,即允许若干个进程共享一个或者多个分段。

1.分页系统中对程序和数据的共享

在分页系统中,虽然也能实现对程序和数据的共享,但远不如分段系统来得方便。例如多用户系统中,多个进程执行一个文本编译程序,该程序有160kb的代码和40kb的数据区。代码区可以共享。假设每个页面的大小为4kb,那么160kb的代码将占用40个页面,数据区占用10个页面。为了实现代码的共享,所以进程的40个代码页表项的物理块号是21#60#。进程10个数据页表项的物理块号分别是61#70#,71#~80#…如下图:

这里写图片描述

2.分段系统中对程序和数据的共享

在分段系统中,无论该段有多长,只需为该段设置一个段表项。这就使分段系统实现共享变得很容易,还是一上面的文本编辑器程序为例。下图就是分段程序共享文本编辑器的示意图:
这里写图片描述

五.段页式存储管理方式

分页系统以页面作为内存分配的基本单位,能够有效提高内存的利用率,而分段系统以段作为内存分配的基本单位,它能够更好的满足用户多方面的需求。而段页式系统这很好的集两者之长。

1.基本原理

段页式系统的基本原理是分段和分页原理的结合,即先将用户程序分为若干段,再把系统分为若干页,为每一个段分配一个段明。

段页地址结构包括三部分:段号,段内页号,页内地址
这里写图片描述

段表的内容和分段系统不同,它还包括页表大小和页内始址,下图就是利用段表进行从逻辑地址到物理地址的转变:
这里写图片描述

2.地址变化过程

在段页式系统中,为了便于实现地址变换,须配置一个段表寄存器,其中存放段表始址和段长TL。

进行地址变换时

  • 利用段号S,将它与段长TL进行比较。
  • 若S < TL,表示未越界,于是利用段表始址和段号来求出该段所对应的段表项在段表中的位置,从中得到该段的页表始址
  • 利用逻辑地址中的段内页号P来获得对应页的页表项位置,从中读出该页所在的物理块号b
  • 再利用块号b和页内地址来构成物理地址。

这里写图片描述

在段页式系统中,为了获取一条指令,需进行三次内存访问,即访问段表,访问页表,访问物理块号。为了提高运行速度,在其中增加一个高速缓冲寄存器。每次访问地址时,现在高速缓存器中查找,如果有,可直接找到物理块。若未找到,在使用原来的三次访问,之后将该物理块存入高速缓存器中。

六.参考资料

《操作系统 第四版》

最后

以上就是斯文吐司为你收集整理的操作系统14————存储器管理之分段存储&段页存储操作系统14————存储器管理之分页存储的全部内容,希望文章能够帮你解决操作系统14————存储器管理之分段存储&段页存储操作系统14————存储器管理之分页存储所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部