2,3,2,1,5,2,4,5,3,2,5,2,1,4,5分配4个页面和5个页面,采用页式虚拟算法计算命中率
时间: 2024-06-17 21:03:19 浏览: 105
在进行页式虚拟算法计算命中率之前,需要先了解什么是页式虚拟算法。页式虚拟算法是一种操作系统中的存储管理技术,通过将进程的地址空间划分为大小相等的页,来实现虚拟内存。在这种技术下,当进程访问一个不存在于物理内存中的页时,会发生缺页异常,操作系统会将该页从硬盘读入到物理内存中,以满足进程访问该页的需求。
现在给出 4 个页面和 5 个页面的情况下,假设每个页面的大小均为 1KB,那么这些页面的总大小为 9KB。
我们假设一个进程需要访问下面这些虚拟地址:
0x1000, 0x3100, 0x4200, 0x1900, 0x5000, 0x3000, 0x6200, 0x1000, 0x2000, 0x4900, 0x3100, 0x1000, 0x6200, 0x1800, 0x5000
我们将这些地址转换成页号和页内偏移量:
页号 页内偏移量
1 0x000
12 0x100
17 0x200
7 0x900
20 0x000
12 0x000
25 0x200
1 0x000
2 0x000
19 0x200
12 0x100
1 0x000
25 0x200
6 0x800
20 0x000
接下来,我们可以采用先进先出算法(FIFO)来模拟页式虚拟算法的工作过程。FIFO 算法选择最早进入内存的页进行替换。
首先,进程访问地址为 0x1000 的页面,由于该页面不在物理内存中,所以会发生缺页异常。操作系统将该页面从硬盘读入到物理内存中,并将其放入一个空闲的物理页面中。
接下来,进程访问地址为 0x3100 的页面。由于该页面不在物理内存中,所以会再次发生缺页异常。操作系统将该页面从硬盘读入到另一个空闲的物理页面中,并将其放入物理内存中。
接下来,进程访问地址为 0x4200 的页面。由于该页面不在物理内存中,所以会再次发生缺页异常。操作系统将该页面从硬盘读入到另一个空闲的物理页面中,并将其放入物理内存中。
现在,物理内存中已经有了三个页面,分别是页面1、页面12和页面17。
接下来,进程访问地址为 0x1900 的页面。由于该页面不在物理内存中,所以会再次发生缺页异常。由于物理内存已经满了,所以需要选择一个页面进行替换。根据 FIFO 算法,应该选择最早进入内存的页面进行替换。因此,操作系统选择了最早进入内存的页面1进行替换,并将其写回到硬盘上。
现在,物理内存中已经有了三个页面,分别是页面12、页面17和页面7。
接下来,进程访问地址为 0x5000 的页面。由于该页面不在物理内存中,所以会再次发生缺页异常。由于物理内存已经满了,所以需要选择一个页面进行替换。根据 FIFO 算法,应该选择最早进入内存的页面进行替换。因此,操作系统选择了最早进入内存的页面12进行替换,并将其写回到硬盘上。
现在,物理内存中已经有了三个页面,分别是页面17、页面7和页面20。
接下来,进程访问地址为 0x3000 的页面。由于该页面不在物理内存中,所以会再次发生缺页异常。由于物理内存已经满了,所以需要选择一个页面进行替换。根据 FIFO 算法,应该选择最早进入内存的页面进行替换。因此,操作系统选择了最早进入内存的页面17进行替换,并将其写回到硬盘上。
现在,物理内存中已经有了三个页面,分别是页面7、页面20和页面25。
接下来,进程访问地址为 0x6200 的页面。由于该页面不在物理内存中,所以会再次发生缺页异常。由于物理内存已经满了,所以需要选择一个页面进行替换。根据 FIFO 算法,应该选择最早进入内存的页面进行替换。因此,操作系统选择了最早进入内存的页面7进行替换,并将其写回到硬盘上。
现在,物理内存中已经有了三个页面,分别是页面20、页面25和页面1。
接下来,进程访问地址为 0x1000 的页面。虽然该页面已经在物理内存中了(被替换出去了),但是由于之前它已经被访问过一次并且被放置在了物理内存中,所以此次访问是命中的。
接下来,进程访问地址为 0x2000 的页面。与上一个步骤类似,由于该页面之前已经被放置在了物理内存中,所以此次访问也是命中的。
接下来,进程访问地址为 0x4900 的页面。由于该页面不在物理内存中,所以会再次发生缺页异常。由于物理内存已经满了,所以需要选择一个页面进行替换。根据 FIFO 算法,应该选择最早进入内存的页面进行替换。因此,操作系统选择了最早进入内存的页面25进行替换,并将其写回到硬盘上。
现在,物理内存中已经有了三个页面,分别是页面1、页面2和页面19。
接下来,进程访问地址为 0x3100 的页面。由于该页面已经被放置在了物理内存中(第二个被访问到的),此次访问也是命中的。
接下来,进程访问地址为 0x1000 的页面。同样地,在之前被放置在物理内存中的情况下(第一次被访问到的),此次访问也是命中的。
接下来,进程访问地址为 0x6200 的页面。由于该页面已经被放置在了物理内存中(第三次被访问到的),此次访问也是命中的。
接下来,进程访问地址为 0x1800 的页面。由于该页面不在物理内存中,所以会再次发生缺页异常。由于物理内存已经满了,所以需要选择一个页面进行替换。根据 FIFO 算法,应该选择最早进入内存的页面进行替换。因此,操作系统选择了最早进入内存的页面2进行替换,并将其写回到硬盘上。
现在,物理内存中已经有了三个页面,分别是页面19、页面12和页面6。
最后一个步骤是进程访问地址为 0x5000 的页面。由于该页面已经被放置在了物理内存中(第四个被访问到的),此次访问也是命中的。
至此,在这个例子中,在采用 FIFO 算法时,在对这些虚拟地址进行访问时总共发生了5次缺页异常和11次命中。
因此,在这个例子中采用 FIFO 算法时的命中率为11/16 = 68.75%。
阅读全文