罗泽兵 发表于 2024-4-15 08:34:27

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

那么,接下来我们来看一下。分页。存储管理方式。连续分配了。会有许多碎片。虽然可以通过紧凑的方法将许多碎片呢拼接成可用的大块空间,但必须呢未知。付出很大的开销,如果允许这样一个进程直接分散的装入到许多不相连接的分区中,便可充分利用内存空间,无需再进行紧凑。那么,基于这一思想呢,产生了离散分配方式。

根据在离散分配方式时,所分配地址,空间的基本单位的不同,又将离散分配了分为了几种方式,比如说。分页存储管理方式。分段。存储管理方式断页式。存储管理方式,第一种分页存储管理方式呢?在该方式中将用户程序的地址空间分为若干个固定大小的区域,称为页或页面。典型的页面呢,大小为1 KB,相应的再将内存空间分。

分为若干个大小的物理块或页框页和块的大小相同,这样呢,可将用户程序的任意页呢放入。任意物理块中实现的离散分配,而分段存储管理方式呢?这是为了满足用户要求而形成的一种存储管理方式。它把用户程序的地址,空间分为了若干个大小不同的段。每段可定义一段相对完整的信息,在存储器分配时以段为单位,这些段在内存中呢,可以不相邻,所以实现了离散分配段,意是管理方式呢。这是分页和分段两种存储管理方式相结合的部分,

它同时具有两者的优点,是目前广泛采用的一种存储管理方式。我们首先呢,来看一下分页存储管理方法的。存存储管理方式的基本方法,那么由我们的这些概念,比如说页页。和物理块以及呢?地址结构以及呢列表那么这样一些部分,那么我们首先来看一下页面和物理块。页面是什么呢?分页存储管理呢?将进程的逻辑地址空间分为多若干个页对各页呢进行编号,比如说从零开始,比如说第零页,

第一页。相应的也把内存的物理地址空间划分为若干若干个块,并它们加以编号,比如说第零块,第一块。那么,在为进程分配内存时呢?以块为单位将进程中的若干个页。分别装到多个可以。互相连接的物理块中,由于进程的最后一页呢,经常装不满一块。又形成了不可利用的碎片,那么称之为业内碎片。页面的大小是什么呢?

在分页系统中,若选择的页面太小,是在一方面呢,可以减少内存碎片,起到减少内存碎片总空间的作用。有利于内存利用率的提高,但另一方面呢,却会造成每个进程占用的太多的页面,从而导致了进程的页表过长,占用大量内存。此外呢,还会降低页面换进换出的效率,然而呢,如果选择页面过大,虽然可以减少页表的长度,

提高页面换进换出的速度,但会使页内碎片增大。因此呢,页面的大小应该选择适中,且页面大小呢应该是二的b,通常为1 KB+8 KB,那么也就是什么意思呢?我们这里呢,就是说先就是把。进程分成一个个。若干个把进程的逻辑空间分逻辑地址,空间划分为若干个大小相等的页。对各页进行编号。并且呢,把内存的物理空间。

按照这个大小呢,划分成若干个块那么。将进程中的若干个页分别装入到。内存的多个物理块中,那么就行,这样就就就相当于我们这样一个分分页的,这样一个形式,那么就是页面和物理块的这样一个形式。那么,接下来我们再看一下地址结构。分页地址结构呢?他们下面呢?是这样一个情况,首先呢高。前一部分呢,

为业号。后一部分呢,为页面偏页类偏移,就是我们的位移量,就是我们的业内地址,那我们知道这样一个图中的地址长度为32位。其中的零到11位是业内地址每页,比如说比如说就是二的12次方,那么就等于我们的。每页的大小呢是4k啊,不是4k那么12到31位为页号。那么一号呢?就有20位,那么也就说一号有20位,那么就说两。

那么就是二的。那么就是二的20次方。那么,二的20次方呢?那么,二的20次方呢?就是1M。那么就是1M。那么说地址空间呢?最多有1M1m1M页,对于特定机器呢?其地址结构是一定的,若给定一个地址空间的逻辑逻辑地址空间的地址为a。页面的大小为l则页号p和页内地址呢,我们可以按照这样一个公式来进行计算,

其中呢?a是我们的。逻辑地址空间当中的地址为a页面的大小为l,那么a来除以l取整。那么就得到了我们的页号d呢?为a来模上l的取余就是它的这样一个页内地址的这样一个部分。啊,这里要注意页号呢,是a÷l的商的这样一个部分。那么是它的这样一个页号的部分,那么页内地址呢?是a来挪l那么取余的这样一个余数的这样一个部分是它的这样一个页内地址。那么,接下来我们再看一下。在分页,

我们举一个例子,比如说我们这里举一个例子,比如说页面大小呢,为1 KB。页面大小为1 KB,那么我们假设呢?a呢?等于二一七零。baa呢,等于二一七零b。那么这个时候嘞。我们来看一下,我们根据这个式子呢,那么可以求得p=2那么d呢?等于一二二那么可以求得这样一个式子,

那么大家看一下这样一个部分。那么,页表是什么呢?在分页系统中允许将进程的各个页呢?离散的存储在内存的任意物理块中,为了保证进程仍然。能够正确的运行,就是说在内存中呢,能够找到每个页面对应的物理块系统呢,又为每个进程呢,建立了一张页面印象表,称为页表。在地址在进程地址空间的所有页,依次在页表中呢,有一个页表项,

其中记录了相应页在内存中对应的物理块号。比如说我们看一下这个部分。我们这里呢,是一个页表用户的程序,它分为了这些页,那么这是我们的内存,它分为了这样一些块的部分。分为了这样一些块的部分,那么这里呢?我们就有一个页表,页表当中呢?存放了。相应的页在内存中的对应的物理块号啊,比如说第零号页就放在第二个物理块中。第二行页放在第六个物理块中,

第四个页放在第九个物理块中,那么就存放了相应的页。在内存中的物理括号。比如说我们这样一个页表的部分,在配置了页表后呢进程执行时,通过查找该表即可找到每页在内存中的物理块号,那么可见呢,页表的作用呢,是实现了页号到物理块号的地址映射。那么,这里大家要注意页表的作用是实现了页号从物理。到物理块从列号到物理块号的地址映射,那么接下来我们再看一下地址变换机构,为了能将用户地址空间的逻辑地址转换为内置空间的物理地址。在系统中呢,

必须设置地址变换机构,该机构的基本任务呢,是实现从逻辑地址到物理地址的转换。由于业内地址和物理地址是一一对应的。那么,因此呢,地址变换机构的任务呢?实际上是将逻辑地址中的页号呢转换为内存中的物理块号。又因为了页面映射表的作用呢,就是从实现了从页号到物理括号的变化,因此呢,地址变换机构呢,是借助页表的来进行完成的。那么我们看一下基本的地址变换机构进程,在运行期间需要对程序和数据的地址进行变换,

比如说将用户空间的逻辑地址呢变换为内存空间的物理地址。由于它执行的频率非常高,每条指令呢,地址呢,都需要执行变换,因此呢,采用硬件来实现页表功能呢,是由一组专门的寄存器来实现。每一个列表的。一个页表项用一个寄存器,由于寄存器呢,有较高的访问速度。因此呢,有利于提高地址变换的速度,但由于寄存器的成本较高,

那么现在呢?大多数计算机的页表呢,可能很大,使页表项的总数呢,可能很多,那么所所以呢,这些页表项呢,不可能都用计算来实现,因此呢,页表呢,大多驻留在内存中,在系统中只设置一个页表寄存器。其中存放了页表在内存中的实质和内存的页表的长度,那么。当进程呢,

要访问某个逻辑地址中的数据,时分页地址变换机构呢,便会自动的,该将有效地址分为页号和页内地址两部分。再以页号为索引去检索页表查找。操作了由硬件执行,在执行场选手之前,先将页号与页表长度进行比较,如果页号呢,大于或等于页表长度,则表示本次所访问的地址已超越进程的地址空间。于是呢,这就会认为是错误,产生一个地址越界中断,如果未出现越界错误,

则将页表实质与页号和页表上长度相乘,得到该表象呢,在页表中项的位置。从中呢,可得到该表的物理地址,物理括号,从中呢,将物理地址呢?装入物理地址寄存器中,与此同时,再将有效寄存器中的这样一个页类地址送入物理地址寄存器的页内,地址地址字段中,这样呢,便将从逻辑地址到物理实间的物理地址。逻辑地址到物理地址的变换,

那么我们来看一下这个部分。首先呢,我们有一个逻辑地址,逻辑地址呢,我们得到它的算出它的页号和页内地址。然后呢?我们这个页号呢?再与页表长度页号呢?再与页表长度进行比较。如果这个一号呢,大于或等于页表长度,那么则表示了本次所访问的地址呢,已经超越了进行的地址空间,于是呢,产生了越界越界错误。

那么如果呢?未出现越界错误,则将列表实指。与页号。和页表项的长度。的神级相加。那么这样呢?如果未产生月结中断呢?则则将页表向实值。和页表与页表与页号和页表项长度的神级相加,得到该。得到了该表在列表中的位置。这样呢?我们再来找到。该页的物理块号。

找到该该的该该页的物理块号。然后呢,将它装入我们的物理。地址寄存器同时呢,将叶类地址呢放入到物理地址中的这样一个叶类地址字段中,块类地址字段这样呢便实现了。从逻辑地址呢到物理地址的这样一个变换,那么我们来再来看一下我们这里呢,是如果出现了越界错错误了,那么就产生越界中断,那么如果没有出现越界错误呢?就将页表实质。与页号和页表项长度。的神级相加,得到了在该页该页表中的位置,

该该项呢?在页表中的位置,那么得到了该页该表象的在页表中的位置,那么就得到了该表象的在页表中的。溢出了这样一个位置的这样一个部分,那么最后呢,得到它的块号物理块号物理块号呢,放在我们的物理。一直寄存其中,再将我们的。业内地址呢,送入物理地址计算器中的业会计地址字段,那么最后呢,就得到了我们的这样一个物理地址,那么这样呢,

就是我们。分页系统的地址变换机构,接下来我们再看一下具有块表的地址变换机构,由于地址呢,页表呢是存放在内存中的。这时CPU在每存取一个数据时,都需要两次访问页表,第一次呢,是访问页表中内存中的访问都需要两次访问内存。第一次呢,是访问内存中的页表,从中找到指定页的物理块号,再将物理块号呢与页内偏移量。w拼接形成物理地址。第二次访问内存时,

才是第才从第一次所得到的地址中所获得的数据了。向地址中呢写入数据,因此呢,采用这种方式呢,使计算机的处理速度呢,降低二分之一。那因此呢,为了提高地址变换速度。可在地址变换机构中呢?增设一个具有并行查询能力的特殊高速缓冲寄存器,又称为联想寄存器,或称为快表。用于存放当前访问的那些表页表项,此时的地址变换的过程呢?是在CPU给出有效地址后,

由地址变换机构呢?自动的将页号送入高速缓冲寄存器。并将此页号呢,与高速管送的所有页号进行比较,若其中呢,由于此相匹配的一号呢,便表示要访问的页表呢,在快表中。于是呢,可以直接从快表中读出该页所对应的物理块号,并且呢,送到物理地址寄存器中,如果块表中未找到对应的页表项。则还需访问内存中的页表找到后呢,把从页表项中读出的物理块和送往地址寄存器,

此时呢,再将此页表项呢,送入块表中的一个寄存器单元中。也就是说,重新修改会计表。但如果联想寄存器已满,则操作系统呢?必须找到一个以前的,且认为是不再需要的列表项呢?将它换出。这是我们具有快表的这样一个访问方式,那么我们来看一下这个部分快表呢?首先呢,我们看一下这个逻辑地址,那么首先呢,

我们进行比较。那么,我们授权进行比较,那么我们首先呢,在我们CPU给出有效地址后呢?由地址变换机构呢?自动的将此页号呢?送入高速缓冲寄存器。那么,进行一个比较,那么看这样一个标数是否有与它相匹配的一号与由于它相匹配的一号呢?便表示所访问的页表项在快表中。因此呢,便可直接从块表中读出该所该页所对应的一个物理块号,并送达送到一物理地址寄存器。

那么,如果在块表寄存器中呢?如果在块表中没有找到对应的页表项,则还需要访问内存中的页表,然后呢?找到后呢?把从页表项中读取的物理符号呢?送往递存寄存器,然后呢?同时再将此页表项呢?送入我们的快表当中,送入我们的联审计准器当中,那么这是我们的快表的这样一个部分。那么,我们来看一下访问内存的有效时间从进程呢?

触发访问逻辑地址的请求,访问请求经过地址变换到内存中,找到对应的实际物理地址,单元尺寸数据。所花费的总时间称为内存的有效访问时间。假设一次访问内存时间为t,在基本分析存储管理系统中。有效访问时间呢,为第一次访问内存的时间就是查找页表项所发问的时间t与第二次。使访问内存时的时间及页表相同,物理括号与页内地址拼接成实际物理地址,所花费的时间既之和那么1a七呢,等于七+7=2t。那么,在引入了块表的分页存储管理方式中啊,

通过查找块表,可以直接得到逻辑页对应的物理块号,由此拼接形成实际的物理地址,减少了一次内存访问。缩短了内进程访问内存的有效时间,但是呢,由于块表的容量限制,不可能将一个进程的整个页表呢全部装入块表。所以在快表中查找的所需表象的存在的命中率的问题,所谓命中率呢,是指使用快表,并在其中成功查找到所需页面的表象的比率,这样呢,在引入快表的分页存储管理方式中呢。有效访问时间的计算公式啊,

就是eat=a×lambda,加上t×t+lambda。减去乘乘以一减a加t。等于2t加拉姆达减t×a。其中呢,拉姆达表示,查找快表所需要的时间。a表示,命中率c表示访问一次内存的所需要的时间。这里呢,就表示要么呢,在快表中呢呃,在快表在快表中找到了这样一个。概率来乘以这个拉姆达,那么乘以这快表中找到这样一个时间来乘以一减阿尔法,

一减a来乘以。西交那么的就是我们的内存和快表访问的这样一个时间的这样一个部分。那么,再来加上了TT,那么就等于2t减,加上拉姆达减去t×a,那么这样一个时间的部分。那么,引入块表后呢?有效的访问时间呢?分为查找到逻辑页对应的页表上的平均时间以及对应实际物理的内存访问时间。假设最快表的访问时间,拉姆达呢为20纳秒,最内存的访问时间为100纳秒,那么。

在这样一个表中呢,列出了不同命中率与访问时间的关系,当命中率为a时,它的eat为220,然后为50的时候呢,为170。单位80的时候为140,单位90的时候为130,单位98的时候为122。这是我们的叶子。坏表的这样一个部分。也就是说,正是由于引入了快表CPU访问数据所耗费的时间呢?明显减少。


页: [1]
查看完整版本: 12.第12节课第四章存储器管理