找回密码
 立即注册

微信扫码登录

使用验证码登录

搜索
查看: 63|回复: 0

13.第13节课第四章存储器管理

[复制链接]

6010

主题

3

回帖

1万

积分

管理员

积分
18150
发表于 2024-4-15 08:34:39 | 显示全部楼层 |阅读模式
接下来我们再看一下两级和多级页表,那么现在的大多数计算机呢,都支持非常大的逻辑地址空间,在这样的环境下呢,页表就方程变得非常大。需要占用相当大的内存空间啊,比如说对于一个有32位的逻辑地址,空间的分页系统呢,规定其页面大小为4 KB就是二的22次方b。也就是说,在每个进程页表的页表项数目呢,可以达到1 MB这么多,1 Mb这么多,又因为每个页表项呢,占用一个字节。

那么,所以每个进程呢?其列表呢?就要占用1 Mb的内存空间,而且还要求是连续的,那么显然是不可不可。很难实现的,因此呢,我们可以采用两个方法来解决这些问题,比如说第一个对于页表所需的内存空间采用离散分配方式,以解决了难以找到一块连续的大的内存空间的问问题。那么第二个呢?只需将当前所需要的部分页表呢?调入内存,其余页呢?

已经驻留在磁盘上,需要时呢来调入,接下来我们看一下。两级页表针对了难以找到大的连续的内存空间来存放页表的问题,可以将页表进行分页的方法。使每个页表的大小与内存物理块的大小相同,并为它们进行编号,其依次为零页,一页n页,然后离散的将各个页面呢,分别存在存于不同的物理块中。这样呢,你要为离散分配的页表呢,再建立一张页表称为外层页表,在每个页表项中呢,

记录了页面页表页面的。目的括号。那么,接下来我们看一下。以这样一个32位逻辑地址空间为例来说明,当页面大小为4 KB时,就是12k为4 KB时,就是我们的四。12位的时候。页面大小为12位的时候呢,若采用一级页表结构,就要有20位的页号,就页表上呢,有1m个。再采用两级页表结构之啊,

再对页表进行分类,使每页呢包含二的十次方个。页表项,比如说最多有二的十次方个页表分页,或者说外层页表中的。外层业内地址呢p2为十位,外层一号呢也为十位,那么这是我们的这样一个逻辑地址,那么这是一个逻逻辑地址的结构的这样一个部分。那么你图上呢?我们也可以看到在页表的每个表象中呢?存放的呢?是进程在某页内存中的物理块号。而在外层页表中呢,每个页表项中呢,

是存放的是某页内某页表分类的手指。我们可以利用外层页表和页表这两级页表呢,来实现从进程到逻辑地址,到内存物理地址的这样一个变换。为了方现实,方便实现地址变换呢?在地址变换机构中,同样增设一个外层页表寄存器,用来存放外层页表的地址,并利用逻辑地址中的外层页号呢?作为外层页表的索引。从中找到指定页表的分页,再利用我们的。这样一个。外层业内地址呢?

作为指定业内分析的索引,找到指定的页表号,页表项,那么也就是说,在该页的内存的物理块号,用该块号和页内地址呢,即可访构成访问的物理地址。那么我们看一下这两级列表的地址变换机构。比如说我们在这两级业审编网机构当中呢,那么我们就是外层列表当中呢?外部页表当中呢,找了这样一个页表,它的这样一个。页表的部分找到这样一个页表的这样一个找到这样一个页表的这样一个部分呢?那么,

在这个页表的这样一个部分当中呢?找到它这个页表项,找到这样一个对应的物理块号,那么找到我们内存中的物理块号的这样一个部分,那么只实现了它的这样一个地找到它这样一个物理地址的这样一个部分。那么,实现了这样一个地址变换。接下来我们看一下多级页,再看一下多级页表,这个部分对于32位的机器呢,采用两级页表是合适了,但是对于64位机器那么。我们来分析一下,如果页面大小仍用4 KB,那么也就是就是说二的12次方b,

那么还剩下三五十二位,那么若仍按物理块的大小二的12次方来划分页表呢?则将剩余的42位呢?用于外层页号,此时外层页表中呢?仍有四零九六g个页表项。需要占用16384 GB的连续内存空间,那么这样的结果呢?显然是不很难很难。很难实现的这样一个部分,因此呢,必须采用多级页表,将外层页表呢再进行分页,也就是说将各页的离散的装入到不连接不连接的这样一个物理块中。再利用第二层的外层页表呢,

来映射它们的关系,那么对于64位的计算机,如果要求它能支持二的24次方规模的物理存储空间。主要也主要就是也就是说使用三级页表项呢,也很难实现这样一个部分,也就是说在64位的操作系统中。可把直接。寻址的存储器呢,减少为45位长度,那么这样呢,可利用三级页表结构呢,来实现这样一个分页存储管理。那么,接下来我们再看一下反置页表,在反分反置分页系统中呢?

为每个进程配置了一张页表进程逻辑地址,空间中的每一页在页表中呢?都对应一个页表项。在现代计算机系统中,通常允许一个进程的逻辑空间非常大,因此有许多页表项,因此呢,会占用很多的地址空间。为了减少页表箱的内存空间呢,引入了反反制页表,一般的页表项呢,是按页号进行排序的,页表上中的内容呢,是物理块号,而反制页表呢,

则为每个物理块呢,设置一个页表项。必按他们的物理快要进行排序,其中的内容呢?是页号和所所属进程的标志符,那么这是我们的反置页表,在利用反置页表进行地址变换的时候呢,是根据进程标志符和页号去检索反置页表。如果检索到与之匹配的页表项呢?则该页表项目中的序号I便是该页所在的起始的物理括号,可用该括号呢?与页内地址呢?一起构成物理地址送到内存页内。送到内存地址寄存器,若检索了整个页表项呢,

仍未找到匹配的页表项,则表明了此页呢,尚未装入内存,对于不具有请求校验功能的存储器管理系统呢。此时呢,表示地址出错,对于请求调阅功能的存储器的管理系统呢,此时应产生请求调阅中断,并将此页呢调入内存。那么,接下来我们看一下分段存储管理方式,那么存储管理方式呢?随着操作系统发展呢,也不不断的发展,当操作系统由单道向多道发展的时候呢,

存储管理方式呢,便由单一连续分配发展为固定分区分配。内为了能更好的适应不同大小的用户的要求呢?存储管理方式呢?又从固定分区分区发展,又到了我们的动态分区分类动态分区。分配那么,为了能更好的提高内存的利用率呢,进而又产生了连续分配发展到离散分配,分页存储管理方式,那么。引入分段存储管理的方式的目的呢?是为了满足用户或程序员在编程上和使用上的需求。那么,这种存储管理方式呢?

是当今所有存储管理方式的基础。那么,我们来看一下这个部分分段存储管理方式的引入。通常为什么要引入分段存储管理方式呢?那么我们可以来进行一个说明,一方面呢,是由于通常的程序可分为若干个段。如主程序段子程序段子程序段,那么数据段和债段每个段呢,大多是一个相对独立的逻辑单位,一方面呢,实现满足信息共享,信息保护。动态链接以及信息的动态增长的需求,也是以段为基本单位的,

也就是说分段管理方式呢,更符合用户和程序员的多方面需求。通常呢,用户把自己的作业按逻辑关系呢,分为若干个段,每个段呢都从零开始,并有自己的名字和长度,因此呢,程序员呢,都希望访问的逻辑地址呢。是由段名和段号和段内偏移量去决定的,这不仅呢,方便程序员编程,也可使程序呢,比较直观,

更具有独。可读性,比如说我们下面两条地址,便使用了段名和段列地址node 1 ad store 1 BC,我们来看一下信息共享。在实现对程序和数据的共享时呢?是以信息为逻辑,单位为基础的,比如说共享的某个过程函数或文件。分页系统中的页呢,只是存放信息的物理单位并不完整,逻辑意义,因此呢,一个可被共享的过程呢,往往需要占用数十个页面。

作为共享呢,增加了困难。那么段可以是信息的共享的逻辑单位,因此呢,我们可以为段。因此呢,我们可以为被该共享过程呢,建立一个独立的段,这样呢,就简化了共享的实现,那么为了实现段的共享呢,存储管理功能呢,应与段用户程序分段的这样一个组织方式相适应。我们来看一下接下来的这样一个信息保护,信息保护呢?

同样是以信息为逻辑,单位为基础的,通常是以一个过程函数或文件为基本单位进行保护的。比如说我们希望函数a仅允许只允许进程执行,而不允许读,更不允许写。那么,我们只需在包包含了函数a的这个段上呢只?标上只执行标志可就可以,但是在分页系统中呢,函数a可能要占用若干个页面,其中的第一个呢和最后一个页面呢,还有可能其他程序段的数据,那么它可能可以呢,有不同的保护属性。

不是说允许读和写,那么这样就很难对这些页面实行统一保护,因此呢,分段管理方式呢,能有效的方便的实现对信息的保护功能。接下来还有动态增长,在实际应用中呢,往往存在一些断,尤其是数据段,在它们的使用过程中呢,由于数据量的不断增加。而使数据段的动态增长,相应的,它所需要的存储空间也会动态增加。而对于数据段究竟应该增长到多大事件,

又很难预料。对此啊,应采取预先多分配的方法来进行解决。接下来我们再看一下动态链接,之前呢,我们已经解介绍了动态链接,为了提高内存之利用率。系统呢,只将真正要运行的目标程序要装入内存,也就是说动态链接呢,在作业运行之前并不把所有的程序和不程序段子都连接起来。当程序要运行的时候呢?首先将主程序和它立即要用到的目标程序呢?装入内存才启动运行,而在程序运行过程中,

当需要调用某个目标程序时,才将该段的调入内存呢?并进行连接,那么所以呢,动态链接要求的是以目标程序作为链接的基本单位,因此呢,分段存储管理方式呢,非常适合于我们的动态链接。接下来我们看一下分段系统的基本原理,比如说分段在分段管理方式中呢,作业的内存空间被划分为若干个段,每个段呢定义了一组逻辑信息,比如说由主程序段。类子程序段x数据段d和字段s。那么,

这样一些部分,那么比如说我们的。那么,各个不同的段。那么,分段地址中的地分段地址中的地址呢?具有这样一个结构,比如说我们的。段号以及呢?我们的段内地址。那么,在前面介绍的所有的动态分区分配的方式当中呢?系统为整个进程分配一个连续的存储空间,而在分段。市存储管理系统当中呢,

主要是为每个分段呢,分配一个连续的分区段进程中的各个段,可以离散的。装入到内存的不同分区中,为了保证程序能够正常运行,就必须从物理内存中找出每个逻辑段所对应的位置。啊,比如说我们利用断表了来实现我们的地址映射,那么这样一个部分。那么因此呢,我们在内存在系统中呢,类似于分裂系统为需要为每个进程呢,建立一张映射表。每个段呢,建立一张映射表记录,

称之为段表,每个段呢,在表中占一个表象,记录了该段在内存中的起始地址和段的长度。段表存放在一组寄存器中,以利以利于提高地址转换速度,那么但通常呢,我们是将段表存放在内存中,在段表配置了之后,执行的进程呢,可以通过查找段表。找到每个段所对应的内存区,那么可见呢?段表是用于实现从逻辑段到物理内存映射的这样一个部分。那么,

这是我们的段表以及了它的这样一个段段号,那么段长。那么,以及它的断机制,这样一个部分。那么我们看一下这个图,那么我们的。做就是我们的作业空间,那么有我们的作业空间x max ds,那么这是我们的段。段表。断表了,有断号断长机制,那么我们找到这样一个断号了,那么找到这样一个断号了。

找到它这样一个位置的,这样一个部分呢,那么实现了这样一个。使用位置的这样一个地址的这样一个部分,那么接下来我们再看一下地址变换机构,那么使用位置这样一个部分,查看它的位置的这样一个信息的。使用位使用地址的这样一个方式,为了实现进程呢,从逻辑地址到物理地址的转换功能在系统中呢设置了断表计时器。用来存放段表实质和段表长度,在实现再进行地址变换的时候呢,系统将逻辑地址中的段号与段表长度进行比较。若s用,如果我们的这样一个。

s呢大于teo表示段号太大是访问越界,于是产生越界中断信号,如果没有越界,则根据段表的实质和摘段的段号计算出该段的对应,段表的位置。从中读取该段的在内存中的起始地址,然后呢,再检查段内地址d呢是否超过该段的段长l。如果超过了这d wsl,同样发出越界中断,如果未越界了,则将该段的极值呢?与段的地址相加。可以得到要访问的物理地址,那么我们来看一下,

那么虽然是这样一个段号。那么,这样一个段号呢?那么,这样一个地址变换机构呢?那么是是我们的这样一个。首先呢,是我们的这样一个。断表寄存器的这样一个部分,那么用于了存放断表食指和断长断表长度。那么,系统呢?将逻辑中,地址中的段号呢?与段表长度与段表长度呢?

to进行比较。若s呢,大于这样一个。段表长度则表示了段表。太大访问越界,于是产生越界中断现象,中断信号,如果没有越界,那么则根据段表的起始地址和该段的段号,计算出该表短对应段。该段表项的位置从中读取了该段呢,在内存中的起始地址。再根据。段内地址d呢?是否超过段长sl?

若超过,则d大于sl,同样发出月结中断。如果未超过,则将该段的地址d呢与段内地址相加。那么,就即可得到了要访问的内存物理地址。那么,这是我们的地址变换机构的这样一个部分。我们来看一下分段。和分页的这样一个区别,首先呢?我们分段和分页呢,都有一些相似之处,比如说两者呢,

都采用离散分配,都是采用地址变换机构,实现地址变换。但是呢,它还有一些不同的地方页呢,是信息的物理单位,而段呢,是信息的。逻辑单位。夜市信息的物理单位。采用分页管理方式呢,实现为了实是为了实现离散分配方式,以减少内存的外零头,那么提高系统的。利用率。

或者说分页了。只是。系统管理上的需要完全是系统的行为,对用户呢是不可见的,而分段存储管理方式呢段则是信息的逻辑单位,通常包含的是一组信有信息,有相对完整的信息。意义相对完整的信息分段的目的呢?主要在于能更好的满足用户的需求,第二个页的大小由系统固定。而段的长度呢,不固定决定于用户所编写的程序,也就是说什么呢?页的大小固定,且由系统决定。

在采用分页存储管理的系统中,在硬件结构上就把用户程序的逻辑地址划分为业内和业内地址两部分,比如说由硬件实现。而在每个系统中呢,只能有一种大小的页面,而段的长度不固定。取决于用户所编写的程序,通常由编译系统呢,在对原程序进行编译时,根据信息的性质来决定。第三个分页是用户程序,地址,空间呢是一维的,而分段呢用户的地址,空间是二维的。

分页的用户地址空间呢,它是一维的分页,完全是系统的行为,不在分页系统中,用户程序的地址属于单一的线性结构空间。程序员呢,只需要用一个记忆符表示一个地址,而分段是用户的行为,所以在分段系统中,用户程序的地址空间是二维的,程序员在标识一个地址时候继续给出段名,也是给出段列地址。接下来我们看一下信息共享在信分页系统中呢,对信程序和数据的共享在分页系统中虽然也能实现对程序和数据的共享。但不如分分段的这样一个最适用的,

这样一个部分。比如说我们的。在这样一个图中,这样一个那么在这样一个图中的这样一个部分呢?是这样一个共享editor的这样一个示意图。那么,这样一个图呢?那么,这样一个图呢?那么就是我们这样一个共享的。这样一个实现的这样一个。使用的叫运用,运用显示的这样一个部分。那么,分段系统中,

程序和数据呢?共享了在分段系统中。由于是有段为基本单位的,不管该段有多大,我们都只需该段设置一个段表项,因此啊,使时间共享变得非常容易。那比如说以刚才的这样一个editor,这样一个部分。在这样一个部分当中呢,此时只需要在这样一个某两个进程的段表中为文本编辑程序呢,设置一个段表项,让段表项的基值呢,这样一个80指向edit程序所在的起始位置。那么,

这是我们的这样一个共享一体的这样一个。使用表示的这样一个方式。接下来我们看一下段页式存储管理方式,段页式存储管理方式。分页是以页面作为内存分配的,基本单位能有效的提高内存利用率,而分段呢,是以段为内存分配的基本单位,它能够更好的满足用户多方面的需求。那么,如果能对这两种存储管理方式呢?那么,进行组合,那么形成一种新的存储与管理方式,断页式存储管理方式,

那么这种新的系统呢?积累分段。系统便于实现可共享与保护,可连接性等优点,又能像分页系统那样能够很好解决内存的这样一个。外部碎片。段页式基本的原理呢,是将分段和分页原理的结合,即先将用户程序分给你,若干个段,再把每个段呢分给你,若干个页。并为每个段呢,赋予一个段名。比如说我们看一下这个图,

当中这个图当中呢,有一个作业地址空间,该作业有三个段主程序段子程序段和数据段。页面大小为4 KB,在段页式系统中呢,其地址由段号段一段内页号和。业内地址三部分组成,那么我们看一下这个部分,这是我们的作业地址空间,那么它有三个号,它有它有三个,它有三个段。那么,这它有三个段子程序,段主程序,

段子程序和段和数据段,那么页面的就是我们的。那么,在段页式系统当中呢?其地址呢?结构呢?由段号段内页号和段页内地址所组成。那么,页面大小呢?为4 KB在段页式系统中,为了实现从逻辑地址到物理地址的变换,系统当中呢?需要同时配置段表和页表。段表的内容呢?与分段系统略不同,

它不再是内存实质和段长,而是页表实质和页表长度。好吧,我们看一下利用段表和页表进行地址空间到物理空间的映射的这样一个部分。那么,我们的段表呢?有我们的段表的这样一个啊,当中呢?就是我们的段号以及呢?它页表的实质这样一个部分,那么页表呢?就是我们的页号到我们存储块的这样一个部分,那么实现了这样一个利用段表和页表呢?实现了这样一个地址映射。那么,

地址变换过程呢?在断页式系统中,为了便于实现地址变换,必须配置一个断表寄存器。其中,存放段表地址和段长tl进行地址变换的时候呢?首先,利用段号s将它与段长tl进行比较,若s小于tl呢,则表示未越界。于是,利用段表地址和段号呢,来求出该段所对应的段表项,在段表中的位置从中得到该段的页表实值,并利用逻辑地址中的段内页号呢。

来获得该对应页的页表项实值,从中对读出该页的所在的物理块号,再利用块号的和页内地址来来构成物理地址,那么这我们看一下。它的这样一个地址变换机构,那么有我们的段,有我们的这,那么就是我们段表的这样一个段表的这样一个。报表的这样一个部分,那么就是首先利用地址变化呢?需要配置一个段表寄存器,那么其中存放段表实质和段长l。进行地址变换后呢,先求出我们的段号s与它与段长呢进行比较,若小于段长呢,

表示位移界,于是利用段表实质和段号呢,求出该段呢。所对应的。在段表项中,段段表项中,在段对应的段表项,在段表中的位置从中得到该段段的,其该段的页表实质。并利用了逻辑地址中的段内页号来获得对应页,在页表上对应页的页表上位置。从中呢,获得该页的物理块号,那么得到了物理块号之后呢,再利用逻辑地址中的页内地址。

那么,与我们的来业内地址来。与与我们的括号呢,构成我们的。物理地址。那么就是我们地址变换机构的这样一个部分。好同学们,今天呢,我们为大家介绍了我们存储器管理这样一个部分,那么大家呢要?了解我们存储器它的这样一个层次结构,那么它的这样一个。分它的这样一个装入链接以及呢?分区分配。它的这样一个分支分配算法和回收算法,

以及呢,兑换和分页管理和分段管理和段页式管理,以及呢块表。和我们的。多级页表的这样一个多级页表的这样一个部分,那么大家呢?要了解一下这些内容,那么大家下来的时候呢?再看一下这些部分,做到一个掌握和熟悉。好同学们,今天我们的课呢,就讲到这里好,谢谢大家。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|5432考试网 ( 蜀ICP备2022024372号|川公网安备51152402000101号 )|网站地图

GMT+8, 2024-5-16 09:05 , Processed in 0.081398 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表