国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php开源 > 综合技术 > 【计算机操作系统】操作系统--分段存储管理方式

【计算机操作系统】操作系统--分段存储管理方式

来源:程序员人生   发布时间:2017-02-05 13:27:23 阅读次数:2890次

分段存储管理方式的引入

分段存储管理方式的引入是为了满足用户的要求。

  1. 方便编程:通常1个作业是由多个程序段和数据段组成的,1般情况下,用户希望按逻辑关系对作业分段,并能根据名字来访问程序段和数据段。
  2. 信息同享:

    • 同享是以信息的逻辑单位为基础的。页是存储信息的物理单位,段却是信息的逻辑单位。
    • 页式管理中地址空间是1维的,主程序,子程序都顺序排列,同享公用子程序比较困难,1个同享进程可能需要几10个页面。
      图示
  3. 信息保护:

    • 页式管理中,1个页面中可能装有 2 个不同的子程序段的指令代码,不能通过页面同享实现同享1个逻辑上完全的子程序或数据块。
    • 段式管理中,可以以信息的逻辑单位进行保护。
  4. 动态增长:实际利用中,某些段(数据段)会不断增长,前面的存储管理方法均难以实现。
  5. 动态链接:动态链接在程序运行时才把主程序和要用到的目标程序(程序段)链接起来。

分段系统的空间划分

将用户作业的逻辑地址空间划分成若干个大小不等的段(由用户根据逻辑信息的相对完全来划分) 。各段有段名(经常使用段号代替) ,首地址为 0。

图示

利用段表实现地址映照

图示

段表

段表记录了段与内存位置的对应关系。
段表保存在内存中。
段表的基址及长度由段表寄存器给出。
图示
访问1个字节的数据/指令需访问内存两次 (段表1次,内存1次)。
逻辑地址由段和段内地址组成。
这里写图片描述
图示

在为作业分配内存时以段为单位,分配1段连续的物理地址空间,段间没必要连续。
分页管理中,作业地址空间是1维的,逻辑地址是的线性地址。
分段管理中,全部作业的地址空间由因而分成多个段,因此是2维的,其逻辑地址由段号和段内地址所组成。

地址变换机构

系统将逻辑地址中的段号 S 与段表长度 TL 进行比较。

  • 若 S>TL,表示段号太大,是访问越界,因而产生越界中断信号。
  • 若未越界,则根据段表的始址和该段的段号,计算出该段对应段表项的位置,从中读出该段在内存的始址。

再检查段内地址 d,是不是超过该段的段长 SL。

  • 若超过,即 d >SL,一样发出越界中断信号。
  • 若未越界,则将该段的基址与段内地址 d 相加,便可得到要访问的内存物理地址。

图示

图示

图示

图示

信息同享

分段系统的1个突出优点,是易于实现段的同享,对段的保护也10分简单。

例:1个多用户系统,可同时接纳 40 个用户,都履行1个文本编辑程序 (Text Editor)。如果文本编辑程序有 160KB 的代码和另外 40 KB 的数据区,如果不同享,则总共需有 8 MB 的内存空间来支持 40 个用户。

可重入代码(Reentrant Code) 又称为“纯代码”(PureCode),是1种允许多个进程同时访问的代码。为使各个进程所履行的代码完全相同,绝对不允许可重入代码在履行中有任何改变。因此,可重入代码是1种不允许任何进程对它进行修改的代码。

如果 160 KB 的代码是可重入的,则不管是在分页系统还是在分段系统中,该代码都能被同享。
在内存中只需保存1份文本编辑程序的副本,此时所需的内存空间仅为 1760 KB(40×40+160),而不是(160+40)×40= 8000 KB 。

分页系统的同享

图示

分段系统的同享

在分段系统中,实现同享容易很多,只需在每一个进程的段表中为文本编辑程序设置1个段表项。

图示

分页与分段的主要区分

  • 页是信息的物理单位,分页仅仅是由于系统管理的需要,对用户透明的。段是信息的逻辑单位,分段的目的是为了能更好的满足用户的需要。
  • 页的大小固定且由系统肯定,把逻辑地址划分为页号和页内地址两部份。段的长度却不固定,决定于用户所编写的程序。
  • 分页的作业地址空间是1维的,分段的作业地址空间是2维的。
  • 页和段都有存储保护机制。但存取权限不同:段有读、写和履行3种权限;而页只有读和写两种权限。

图示

2者优点的结合:段页式存储管理

段页式存储管理的基本原理

  • 段页式存储管理是分段和分页原理的结合,即先将用户程序分成若干个段(段式) ,并为每个段赋1个段名,再把每一个段分成若干个页(页式) 。
  • 其地址结构由段号、段内页号、及页内位移3部份所组成。

图示

  • 系统中设段表和页表,均寄存于内存中。读1字节的指令或数据须访问内存3次。为提高履行速度可增设高速缓冲寄存器。
  • 每一个进程1张段表,每一个段1张页表。
  • 段表含段号、页表始址和页表长度。页表含页号和块号。

利用段表和页表实现地址映照

图示

段页式存储管理的地址变换

  • 从 PCB 中取出段表始址和段表长度,装入段表寄存器。
  • 将段号与段表长度进行比较,若段号大于或等于段表长度,产生越界中断。
  • 利用段表始址与段号得到该段表项在段表中的位置。取出该段的页表始址和页表长度。
  • 将页号与页表长度进行比较,若页号大于或等于页表长度,产生越界中断。
  • 利用页表始址与页号得到该页表项在页表中的位置。
  • 取出该页的物理块号,与页内地址拼接得到实际的物理地址。

图示

转载自:杨森源

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生