页表、段表、段页表?求大神解释。。。

如题所述

第1个回答  推荐于2016-05-18
一 页式管理
1 页式管理的基本原理将各进程的虚拟空间划分成若干个长度相等的页(page),页式管理把内存空间按页的大小划分成片或者页面(page frame),然后把页式虚拟地址与内存地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地址变换问题。页式管理采用请求调页或预调页技术实现了内外存存储器的统一管理。

它分为
1 静态页式管理。静态分页管理的第一步是为要求内存的作业或进程分配足够的页面。系统通过存储页面表、请求表以及页表来完成内存的分配工作。静态页式管理解决了分区管理时的碎片问题。但是,由于静态页式管理要求进程或作业在执行前全部装入内存,如果可用页面数小于用户要求时,该作业或进程只好等待。而且作业和进程的大小仍受内存可用页面数的限制。

2 动态页式管理。动态页式管理是在静态页式管理的基础上发展起来的。它分为请求页式管理和预调入页式管理。

优点: 没有外碎片,每个内碎片不超过页大小。一个程序不必连续存放。便于改变程序占用空间的大小(主要指随着程序运行而动态生成的数据增多,要求地址空间相应增长,通常由系统调用完成而不是操作系统自动完成)。

缺点:程序全部装入内存。
要求有相应的硬件支持。例如地址变换机构,缺页中断的产生和选择淘汰页面等都要求有相应的硬件支持。这增加了机器成本。增加了系统开销,例如缺页中断处理机,请求调页的算法如选择不当,有可能产生抖动现象。 虽然消除了碎片,但每个作业或进程的最后一页内总有一部分空间得不到利用果页面较大,则这一部分的损失仍然较大。

二 段式管理的基本思想
把程序按内容或过程(函数)关系分成段,每段有自己的名字。一个用户作业或进程所包含的段对应一个二维线形虚拟空间,也就是一个二维虚拟存储器。段式管理程序以段为单位分配内存,然后通过地址影射机构把段式虚拟地址转换为实际内存物理地址。
程序通过分段(segmentation)划分为多个模块,如代码段、数据段、共享段。其优点是: 可以分别编写和编译。 可以针对不同类型的段采取不同的保护。 可以按段为单位来进行共享,包括通过动态链接进行代码共享。

三 段页式管理的实现原理

1 虚地址的构成
一个进程中所包含的具有独立逻辑功能的程序或数据仍被划分为段,并有各自的段号s。这反映相继承了段式管理的特征。其次,对于段s中的程序或数据,则按照一定的大小将其划分为不同的页。和页式系统一样,最后不足一页的部分仍占一页。这反映了段页式管理中的页式特征。从而,段页式管理时的进程的虚拟地址空间中的虚拟地址由三部分组成:即段号s,页号P和页内相对地址d。虚拟空间的最小单位是页而不是段,从而内存可用区也就被划分成为着干个大小相等的页面,且每段所拥有的程序和数据在内存中可以分开存放。分段的大小也不再受内存可用区的限制。
2 段表和页表
为了实现段页式管理,系统必须为每个作业或进程建立一张段表以管理内存分配与释放、缺段处理、存储保护相地址变换等。另外,由于一个段又被划分成了若干页,每个段又必须建立一张页表以把段中的虚页变换成内存中的实际页面。显然,与页式管理时相同,页表中也要有相应的实现缺页中断处理和页面保护等功能的表项。另外,由于在段页式管理中,页表不再是属于进程而是属于某个段,因此,段表中应有专项指出该段所对应页表的页表始址和页表长度。
3 动态地址变换过程
在一般使用段页式存储管理方式的计算机系统中,都在内存中辟出一块固定的区域存放进程的段表和页表。因此,在段页式管理系统中,要对内存中指令或数据进行一次存取的话,至少需要访问三次以上的内存:

第一次是由段表地址寄存器得段表始址后访问段表,由此取出对应段的页表在内存中的地址。

第二次则是访问页表得到所要访问的物理地址。

第三次才能访问真正需要访问的物理单元。

显然,这将使CPU的执行指令速度大大降低。为了提高地址转换速度,设置快速联想寄存器就显得比段式管理或页式管理时更加需要。在快速联想寄存器中,存放当前最常用的段号s、页号p和对应的内存页面与其它控制用栏目。当要访问内存空间某一单元时,可在通过段表、页表进行内存地址查找的同时,根据快速联想寄存器查找其段号和页号。如果所要访问的段或页在快速联想寄存器中,则系统不再访问内存中的段表、页表而直接把快速联想寄存器中的值与页内相对地址d拼接起来得到内存地址。

总之,因为段页式管理是段式管理的页式管理方案结合而成的,所以具有它们二者的优点。但反过来说,由于管理软件的增加,复杂性和开销也就随之增加了。另外,需要的硬件以及占用的内存也有所增加。更重要的是,如果不采用联想寄存器的方式提高CPU的访内速度,将会使得执行速度大大下降。本回答被提问者采纳

一文读懂存储管理之页式、段式、段页式存储及优缺点
段式管理以段为单位分配内存,每段有自己的名字,支持按段进行共享和保护。优点是便于编写和编译,可以分别处理不同类型的段,但会产生碎片,需要段表管理内存分配与释放。段页式管理结合了页式和段式管理的优点,为每个段建立页表,实现更细粒度的地址转换。它具有两者的优点,但复杂性增加,需要额外的...

操作系统中什么是段,大页,小页和微页
分段和分页是内存管理方式,分段是指把内存分成大小相等的页,这样在存储的时候寻找未被使用的页,一段程序可以实现跨页存储,可以大大提高内存利用效率,减少内存碎片,为了管理内存中的页,知道哪些页已经分配,哪些未被分配,必须有一个页表以备查询,就像一本书的目录一样。段也是同样的道理,只不过段...

页表与段表的区别?
段表(表中存放各段段号、每段的页表长度、页表首地址、存取 权限等)、页表(表中存放该段的各个页号、页长、页面号等)

采用段页式存储管理在cpu中应设置什么寄存器
段表寄存器,页表寄存器。1、段表寄存器:采用段页式存储管理在cpu中应设置该寄存器,存储了段表的地址和长度信息。2、页表寄存器:采用段页式存储管理在cpu中应设置该寄存器,存储了页表的地址和长度信息。

内存管理页式管理和段式管理、段页式管理的区别
虚拟空间的最小单位是页而不是段,从而内存可用区也就被划分成为着干个大小相等的页面,且每段所拥有的程序和数据在内存中可以分开存放。分段的大小也不再受内存可用区的限制。2 段表和页表 为了实现段页式管理,系统必须为每个作业或进程建立一张段表以管理内存分配与释放、缺段处理、存储保护相地址...

页(段)表寄存器里面的页表始址和段表始址的用处?
页表是用来存储线性地址和物理地址的对应关系的,比如你有一个32位线性地址,后面的12位用作页内偏移,而前面的20位则要用来作为索引,用来从页表内查找物理内存页面的首地址。寄存器里存的就是页表的首地址。问题的关键就是线性地址需要经过一层转换得到物理页的首地址,而不是你理解的直接是物理地址。

虚拟存储器的管理方式分为段式、页式和段页式三种,以下描述中,不正确...
虚拟存储器的调度方式有分页式、段式、段页式三种。页式调度是将逻辑和物理地址空间都分成固定大小的页。主存按页顺序编号,而每个独立编址的程序空间有自己的页号顺序,通过调度辅存中程序的各页可以离散装入主存中不同的页面位置,并可据表一一对应检索。页式调度的优点是页内零头小,页表对程序员来...

分区存储管理中常用哪些分配策略
1.段表 系统为每个进程建立一张段表,用于记录进程的逻辑段与内存物理段之间的对应关系,至少应包括逻辑段号、物理段首地址和该段长度三项内容。 2.建立空闲区表 系统中设立一张内存空闲区表,记录内存中空闲区域情况,用于段的分配和回收内存。 3.地址映射过程段式存储管理采用动态重定位,处理器每执行一条指令,就将...

页表跟段描述符表是什么关系啊?
一个32位的线性地址,高10位指向一级页表,中间的10位指向二级页表,低12位存放的是在那一页(4096字节)中具体的地址。段描述符表存放的是段的描述符。段的描述符中包括段的类型,例如代码段,数据段,堆栈段等,包括段的界限,包括段的访问限制等。所以页表和段描述符表没有直接的关系。

2017年计算机三级网络技术基本概念与名词解释:操作系统基础部分_百度...
65. 页表:是在页式存储管理中记录页面使用情况的表,它包括用户表和空闲表。其中用户表中记录了每一个用户进程所使用的页面及其对应的物理地址,而空闲表记录了空闲页面。在实际使用中,首先从页表起始地址寄存器中查出进程所在的页表的物理起始地址,进而由这个页表中的逻辑页号查出该页面的物理起始地址,再加上页面内地...

相似回答