进程有5页程序,访问页顺序为:1,2,3,4,1,2,5,4,2,3,2,1。分别采用FIFO、LRU等置换算法: 如果为该程序在内存中分配3个页面,请计算置换率和缺页率情况
时间: 2024-03-19 12:40:30 浏览: 266
假设该进程的页面序列为:1,2,3,4,1,2,5,4,2,3,2,1,页面大小为1页,内存中的页面数为3页。下面分别使用FIFO和LRU算法来计算置换率和缺页率。
1. FIFO算法
内存中的页面数为3页,因此最开始将1、2、3三个页面加载到内存中。当访问到第4页时,发现内存中没有该页面,因此需要进行页面置换,按照FIFO算法,选择最早进入内存的页面1进行替换。接下来的页面访问序列中,都可以直接从内存中找到对应的页面,直到访问到第5页时,发现内存中没有该页面,需要进行置换。此时,选择最早进入内存的页面2进行替换。随着页面的不断访问,不断有新的页面进入内存并替换掉旧的页面,直到最后一个页面1再次进入内存,这时内存中已经没有空闲页面可以使用,因此需要将最早进入内存的页面3进行替换。最终的页面置换情况如下所示:
| 页面访问顺序 | 内存页面状态 | 页面置换情况 |
|--------------|--------------|--------------|
| 1 | 1 | |
| 2 | 1,2 | |
| 3 | 1,2,3 | |
| 4 | 4,2,3 | 1 |
| 1 | 4,2,3 | |
| 2 | 4,2,3 | |
| 5 | 4,2,5 | 1 |
| 4 | 4,2,5 | |
| 2 | 4,2,5 | |
| 3 | 3,2,5 | 4 |
| 2 | 3,2,5 | |
| 1 | 1,2,5 | 3 |
在上述过程中,共发生了3次页面置换,因此置换率为3/12=25%;缺页次数为9次(每次发生缺页就进行了一次页面置换),缺页率为9/12=75%。
2. LRU算法
内存中的页面数为3页,因此最开始将1、2、3三个页面加载到内存中。当访问到第4页时,发现内存中没有该页面,因此需要进行页面置换,按照LRU算法,选择最近最少使用的页面3进行替换。接下来的页面访问序列中,都可以直接从内存中找到对应的页面,直到访问到第5页时,发现内存中没有该页面,需要进行置换。此时,选择最近最少使用的页面1进行替换。随着页面的不断访问,不断有新的页面进入内存并替换掉旧的页面,直到最后一个页面1再次进入内存,这时内存中已经没有空闲页面可以使用,因此需要将最近最少使用的页面2进行替换。最终的页面置换情况如下所示:
| 页面访问顺序 | 内存页面状态 | 页面置换情况 |
|--------------|--------------|--------------|
| 1 | 1 | |
| 2 | 1,2 | |
| 3 | 1,2,3 | |
| 4 | 4,2,3 | 3 |
| 1 | 4,2,1 | 3 |
| 2 | 4,2,1 | |
| 5 | 5,2,1 | 4 |
| 4 | 5,2,4 | 1 |
| 2 | 5,2,4 | |
| 3 | 5,3,4 | 2 |
| 2 | 5,3,2 | 4 |
| 1 | 1,3,2 | 5 |
在上述过程中,共发生了5次页面置换,因此置换率为5/12=41.67%;缺页次数为7次(每次发生缺页就进行了一次页面置换),缺页率为7/12=58.33%。
综上所述,FIFO算法的置换率为25%,缺页率为75%;LRU算法的置换率为41.67%,缺页率为58.33%。因此,在该程序在内存中分配3个页面的情况下,采用LRU算法的效果比FIFO算法要好。
阅读全文