连续分配方式会形成许多碎片,从而采用离散分配方式。采用页为分配的基本单位,可以避免产碎片,只在最后一页可能产生内碎片。若采用段为基本单位,则称之为分段存储管理方式,段可通俗理解为大的页面,段内采用连续分配,段与段之间采用离散分配。
基本分页存储管理方式
页面:
分页存储管理是将一个进程的逻辑地址空间分成若干大小相等的片,称之为页。并给各个页加以编号,从0开始。相应的,内存也分成与页面等大的若干存储块,称为物理块戍页框,同样为它们加以编号。在为进程分配内存时,以块为单位将进程的若干页分别装入到多个可以不相邻的物理块中。由于进程的最后一页通常装不满而形成不可利用的碎片,称之为“页内碎片“。页面大小一般为2的幂。
页面地址结构:
分页地址由项号,偏移量(页内地址)组成。
页表:系统要为每一个进程都建立一个页表。在进程地址空间内的所有页,依此在页表中有一项表项,记录了相应页在内存中的对应的物理块号。页表是实现从页号到物理块号的地址映射。
地址变换机构:
该机构是实现从逻辑地址到物理地址的转换,页内地址和物理地址是一一对应的,地址变换机构的任务是将逻辑地址中的页号,转换为内存中的物理块号。借助页表实现。
基本的地址变换机构:
如果页号大于或等于页表长度,表示本次所访问的地址超过进程的地止空间,若未越界,则将页表地止与页号和页表项长度的乘积相加(即,基地止*偏移量)得到该表项在页表中的位置,从中得到物理块号
具有快表的地址变换机构:
为了提高地址变换速度,在地址变换机构中增设一个具有并行查询能力的特殊高速缓沖寄存器,称为"快表”。在CPU给出有效地址后,由地址变换机构自动将页号送入快表,并将此页号与快表中的所有页号做比较,若有匹配的,则表示要访问的页表项子在快表中,这样可以直接从快表中读取对应的物理块号,若,不在,则还须再访问内存中的页表,找到后,将物理块号送至地址寄存器,同时将此表项加入快表的一个寄存器中,如果满了则替换
分段存储方式
分段存储的用途:
1)方便编程:用户把作业按照逻辑关系划分为若干段,每段从0开始编址
2)信息共享:分页系统中的页只存放信息的物理块,无完整意义,而段是信息的逻辑单位
3)信息保护
4)动态增长:处理数据段的动态增长
5)动态链接:只有当目标程序运行过程中,才将某段目标程序调入内存并链接
分段的基本原理:
作业的地址空间被划分为若干个段,每段定义了一组逻辑信息。每段从0开始编址,并采用一段连续的地址空间。段的长度由相应的逻辑信息组的长度决定,因而,各段长度不等段号段内地址
段号显示出这个作业最长有多少个段,
段内地址显示出段的大小
段加粗样式表:
在分段存储管理系统中,为每个分段分配一个连续的分区,而进程中的各段可以离散的移入内存中的不同分区中。在系统中,为每个进程创建一个短映射表。每段在表中有个表项,记录该段在内存中的基地址和段的长度。用于实现从逻辑段到物理内存区的映
段地址变换机构:
物理地址=基地址(段表中起始地址和该段的段号查到的基地址)+段内地址(若没越界)
分段和分页的区别:
1)页是信息的物理单位,分页实现离散分配方式,消内存的片,提高内在利围率段是信息的逐辑单位,含有一组意义相对完整的信息。为了更好的满足用户需求
2)页的大小固定具由系统决定,分为页号和页内地址,系统中只有一种大小的页画・而段的长度不固定,由用户编写的程序决定
3)分页的作业地共空间是一進的。而分段的作业地址空间是二推的,在标识一个地址时,要提供段名(确定基地址),还需要段内地址
段页式存储:
先将用户程序分成若干段再把每段分成若干页并为每个段赋予一个段名。在段页式系统中,其地址结构由段号、段内页号和页内地址组成。利用段表起始地址和段号求出该段所对应的段表项在段表中的位置,从中得到该段的页表起始地址,并利用逻辑地址中的段内页号来获得对应页的页表项位置,从中读出该页所在的物理块号,再利用块号和页内地址构成物理地址。段页式需要三次访间内存。为此,添加了一个缓存,每次先到缓存中找,若有,则直接得到相应页的物理块号。
来源:CSDN
作者:新大鹿
链接:https://blog.csdn.net/qq_37006625/article/details/103593327