小编整理了一些关于存储管理的知识,第一次学操作系统的时候,这些问题我就没有搞清楚,还好,现在还有机会再去学一遍,终于搞清楚了,下面,开始介绍内容。
我们之前提到分区化管理,就是我们在内存中划分一个区域,供用户调用内存时使用的,这种方式往往是把一整个程序调入到内存当中,这也就意味着如果说程序是4G大,用户空间2个G,如果我要运行2G以上的程序,是完全不可能的,甚至我要运行1G以上的程序都会出现错误,因为我们在运行程序时,他这个2G的空间很有可能是被打碎的,不是一整个2G空间,所以分成的N个片段,可能每个片段都足够小,导致无法运行程序。
为了解决上述问题,我们便提出了段页式存储。
- 页式存储组织
做法:把用户程序分成等分大小的页,比如说这里有一个用户程序,我们把该程序分成4K一个块的等分程序,每一个4K的块称为一个页,把内存当中的存储区也分为4K一个,然后调入程序时,不再是把整个程序都调入,而是我想运行哪个块调入哪个块,这样一来,就需要一个页表来记录他们之间的对应关系,就是程序页号对应内存中的块号。
当采用这种方法时,还可能运行超过内存空间大小的程序,因为只需要调入要运行的块,而不是整个程序。
优点:内存的利用率高、碎片小、分配及管理简单
缺点:增加了系统开销,可能产生抖动现象
高级程序语言使用逻辑地址
运行状态,内存中使用物理地址
逻辑地址与物理地址,他们的页内地址是相同的,页号是不同的,因为逻辑地址的页号对应物理地址的块号,页号和块号需要查询页表才能知道,至于页内地址相同是因为,我们调入时,都是采取页的方式调入,那页面偏移量就是相同的。
题中,要求物理地址,很显然,求物理地址,首先要将逻辑地址当中的页号和逻辑页内地址分开,首先,题中给出了页面大小为4K,换为2进制,也就是2的12次,也就是说逻辑地址的后12位代表页内大小,那么其他位则表示页号,而每4位二进制则等于1位16进制,12进制则等于三位16进制,那么5A29 中,A29则是页面大小,5是页号,看表得对应的物理地址页号是6,那么物理地址就是6A29H。
第二问,如果页面4不在内存,要淘汰其他页面,必然淘汰的是在内存里面的,所以看这些页号的访问位,状态位为1代表在内存中,也就是在0125中选择,访问位为1代表刚刚被访问过,不能被淘汰,所以应该淘汰访问位为0的,也就是1号页面。 - 段式存储组织
段式是按照逻辑结构划分的,比如说,我会把程序中的main函数作为一个段,第一个子函数function1作为一个段,第二个子函数function2作为一个段,段的大小不要求一致,可随意,这也是与页式存储的差别之一,页式存储的大小是固定的,而段式是不固定的。
优点:多道程序共享内存,各段程序修改互不影响
缺点:内存利用率较低,内存碎片较大浪费较大
段式存储中的段表存放的是段号、段长、基址(起始地址)
- 段页式存储组织
优点:空间浪费小,存储共享容易、存储保护容易、能动态连接
缺点:由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内容也有多增加,使得执行速度大大下降
快表:是一块小容量的相联存储器,由高速缓存器组成,速度快,并且可以从硬件上保证按内容并行查找,一般用来存放当前访问最频繁的少数活动页面的页号。