当前位置: 首页 > news >正文

优秀单页网站深圳网络整合营销公司

优秀单页网站,深圳网络整合营销公司,自媒体平台注册方法,html编辑器电脑版最近最久未使用(LRU)算法是一种基于页面访问历史的页面置换算法。它选择最久未使用的页面进行置换。当需要访问一个不在内存中的页面时,如果内存已满,则选择最久未使用的页面进行置换。LRU算法通过记录页面的访问时间戳来判断页面…

最近最久未使用(LRU)算法是一种基于页面访问历史的页面置换算法。它选择最久未使用的页面进行置换。当需要访问一个不在内存中的页面时,如果内存已满,则选择最久未使用的页面进行置换。LRU算法通过记录页面的访问时间戳来判断页面的使用频率。

最优(OPT)算法是一种理论上的最优页面置换算法,但在实际系统中难以实现。它基于未来的页面访问序列来选择最佳的置换页面。OPT算法假设系统能够预知未来的页面访问情况,从而选择在未来最长时间内不会被访问的页面进行置换。由于OPT算法需要预知未来的信息,因此在实际系统中无法应用。

缺页率是指在处理页面访问过程中进行页面置换的频率。在本实验中,我们可以通过统计每次页面访问时是否发生缺页来计算缺页率。具体地,当需要访问一个不在内存中的页面时,如果内存已满,则需要进行页面置换,此时发生一次缺页;如果内存未满,则直接将页面加载到内存中,不发生缺页。通过统计每次页面访问时的缺页次数,我们可以计算出不同页面置换算法在不同内存容量下的缺页率,并据此评估其性能表现。

LRU页面置换算法的流程可以简单描述如下:

1、随机生成页面引用:首先随机生成一系列的页面引用,这些页面引用代表了进程请求访问的页面序号。在本例中,我们生成了10个0到7之间的随机页面序号。

    2、用户输入物理块个数:接下来,系统提示用户输入进程被分配的物理块个数,即内存中可以同时容纳的页面数量。用户输入的数值应当是一个合理的值,通常不超过系统定义的最大页面总数。

    3、初始化物理块状态数组:根据用户输入的物理块个数,我们初始化一个物理内存块数组,用于模拟内存中的物理块。每个帧都包含一个页面号和一个时间值,分别表示当前帧中存储的页面序号和该页面最近一次被放入内存中的时间。

    4、页面置换:对于每个页面引用,我们检查它是否已经在内存中(即帧数组中是否有匹配的页面号)。如果在,则继续处理下一个页面引用;如果不在,则发生页面错误(缺页),我们需要从内存中选择一个页面进行置换。LRU算法选择最近最少使用的页面进行置换,即找到最长时间未被访问的页面,并将其从内存中移除,然后将新的页面引用加载到空闲的帧中。

     缺页率计算:在整个页面引用序列处理完毕后,我们统计页面错误的次数,并计算缺页率。缺页率是页面错误次数与总页面引用次数的比值,它反映了内存管理策略的效率。缺页率越低,表示内存管理策略越有效。

代码实现部分:

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <time.h>


#define MAX_PAGES 8    //假设页面总数为8
#define MAX_REFERENCES 10   //假设随机生成10个页面引用
int pageFaultsNum = 0;//页面错误 (缺页)计数
int pageReplaceNum = 0;//页面置换次数

//也框结构体,用于存储页面号和调入内存的时间
typedef struct
{
    int pageNumber;
    int time;
} Frame;

//初始化页框数组
void initializeFrames(Frame frames[],int maxFrames)
{
    for(int i = 0;i < maxFrames; i++)
    {
        frames[i].pageNumber = -1;//初始时页面号为-1,表示空闲
        frames[i].time = -1;//最近依次被放入物理块的时间
    }
}

//生成0~9之间的随机页面序号
int genRandomPage()
{
    return rand() % MAX_PAGES;
}

//LEU页面置换算法,并计算缺页率
double lruPageReplacement(Frame frames[], int maxFrames, int referenceString[],int length)
{
    int frameFull = 0;//物理块已被装入个数
    pageFaultsNum = 0;//页面错误(缺页)计数清零
    pageReplaceNum = 0;//页面置换次数清零
    for(int i = 0;i < length; i++)
    {
        bool found = false;//标记页面是否在内存中
        int j = 0;
        for(j = 0;j< maxFrames;j++)
        {
            if (frames[j].pageNumber == referenceString[i])
            {
                found = true;//如果找到,则标记为已经找到,跳出循环
                break;
            }
        }
        //如果页面不在内存中,则发生页面错误(缺页),需要调入内存
        if(!found)
        {
            pageFaultsNum++;//把缺页次数+1
            if(frameFull<maxFrames)//物理块未满,可直接将页面装入
            {
                frames[frameFull].pageNumber = referenceString[i];
                frames[frameFull].time = i;
                frameFull++;
            }
            else//物理块已装满,需要置换一页出去
            {
                int smallTime = MAX_REFERENCES;
                int lruFrame = -i;
                for(int j = 0;j < maxFrames;j++)//遍历锁业物理块,选出时间最早的哪那个页面
                {
                    if(frames[j].time < smallTime)
                        {
                            smallTime = frames[j].time;
                            lruFrame = j;
                        }
                }
                //替换最近最久未使用的帧,新页号直接写入内存块中,并更新时间
                frames[lruFrame].pageNumber = referenceString[i];
                frames[lruFrame].time = i;
                pageReplaceNum++;//置换次数加1
            }
        }
        else
        {//该页已在内存,只需要更新一下使用时间
            frames[j].time = i;
        }
    }
    //计算缺页率
    printf("\n页面缺页次数为:%d\n",pageFaultsNum);
    printf("页面置换次数为:%d\n",pageReplaceNum);
    double pageFaultRate = (double)pageFaultsNum / length;

    return pageFaultRate;
}

int main()
{
    while(1)
    {
        srand(time(NULL));//初始化随机数生成器
        int referenceString[MAX_REFERENCES];//存储随机生成的页面引用
        for(int i = 0;i< MAX_REFERENCES;i++)
            referenceString[i] = genRandomPage();//生成随机页面序号

        int maxFrames;//进程被分配的物理块个数
        printf("请输入进程被分配的物理块个数(不超过%d):",MAX_PAGES);
        scanf("%d",&maxFrames);

        printf("随机生成的页面引用序列为:");
        for(int i = 0;i <MAX_REFERENCES;i++)
            printf("%d ",referenceString[i]);

        if(maxFrames <= 0|| maxFrames > MAX_PAGES)
        {
            printf("输入的物理块的个数无效,请输入1到%d之间的整数。\n",MAX_PAGES);
            return 1;
        }
        Frame frames[maxFrames];//初始化页框数组
        initializeFrames(frames,maxFrames);

        //调用LRU页面置换算法并计算缺页率
        double pageFaultRate = lruPageReplacement(frames,maxFrames,referenceString,MAX_REFERENCES);
        //输出结果
        printf("缺页率为:%.2f%%\n\n",pageFaultRate * 100);
    }
    return 0;
}
 

运行结果:

在原设置(页面总数8,页面引用序列10)的基础上,将物理块数设为3。

手动推导缺页和置换的过程:

7

2

5

5

5

5

1

6

5

0

1

7

7

7

7

7

7

1

1

1

0

2

2

2

2

2

2

2

6

6

6

3

5

5

5

5

5

5

5

5

是否缺页

缺页率: 6  / 10 = 60%

​​​​​​​在原设置(页面总数8,页面引用序列10)的基础上,将物理块数设为5。

手动推导缺页置换的过程,验证缺页率结果是否正确:

7

0

0

1

1

0

2

4

7

7

1

7

7

7

7

7

7

7

7

7

7

2

0

0

0

0

0

0

0

0

0

3

1

1

1

1

1

1

1

4

2

2

2

2

5

4

4

4

是否缺页

缺页率:5 / 10 = 50%

​​​​​​​修改代码,使得页面总数为10,页面序列为20,设定物理块数为3。

手动推导缺页置换的过程,验证缺页率结果是否正确:

9

4

8

9

3

6

2

0

1

8

8

0

0

2

2

8

8

8

2

9

1

9

9

9

9

9

9

2

2

2

8

8

8

8

8

8

8

8

8

8

8

2

4

4

4

3

3

3

0

0

0

0

0

0

0

0

0

0

0

0

9

3

8

8

8

6

6

6

1

1

1

1

1

2

2

2

2

2

2

2

是否缺页

缺页率:11 / 20 = 55%

 


文章转载自:
http://dinncosuccessivity.ydfr.cn
http://dinncoshipbuilding.ydfr.cn
http://dinncoherodian.ydfr.cn
http://dinncodoomsday.ydfr.cn
http://dinncotriol.ydfr.cn
http://dinncolecithoid.ydfr.cn
http://dinncomutism.ydfr.cn
http://dinncodeclarer.ydfr.cn
http://dinncoparagraphist.ydfr.cn
http://dinnconecrophil.ydfr.cn
http://dinncohepatobiliary.ydfr.cn
http://dinncofavor.ydfr.cn
http://dinncofamily.ydfr.cn
http://dinncolinctus.ydfr.cn
http://dinncocopyright.ydfr.cn
http://dinncoburgage.ydfr.cn
http://dinncoflawless.ydfr.cn
http://dinncofluoric.ydfr.cn
http://dinncofirelock.ydfr.cn
http://dinncobucktail.ydfr.cn
http://dinncobroomy.ydfr.cn
http://dinncopagurian.ydfr.cn
http://dinncotinnily.ydfr.cn
http://dinncoburstproof.ydfr.cn
http://dinncouprose.ydfr.cn
http://dinncokoei.ydfr.cn
http://dinncounmindful.ydfr.cn
http://dinncomaledict.ydfr.cn
http://dinncofurriness.ydfr.cn
http://dinncopels.ydfr.cn
http://dinncodestructibility.ydfr.cn
http://dinncodactylology.ydfr.cn
http://dinncooverlight.ydfr.cn
http://dinncocomically.ydfr.cn
http://dinncoallround.ydfr.cn
http://dinncozambia.ydfr.cn
http://dinncopapaverous.ydfr.cn
http://dinncophoton.ydfr.cn
http://dinncosacw.ydfr.cn
http://dinncozoogeographer.ydfr.cn
http://dinncoguttersnipe.ydfr.cn
http://dinncocollyweston.ydfr.cn
http://dinnconiaiserie.ydfr.cn
http://dinncoreassert.ydfr.cn
http://dinncogoffer.ydfr.cn
http://dinncomalabsorption.ydfr.cn
http://dinncoevert.ydfr.cn
http://dinncocornuted.ydfr.cn
http://dinncopunctuative.ydfr.cn
http://dinncoobiit.ydfr.cn
http://dinncopyroconductivity.ydfr.cn
http://dinncodiquat.ydfr.cn
http://dinncolaryngotracheal.ydfr.cn
http://dinncobeing.ydfr.cn
http://dinncounderofficer.ydfr.cn
http://dinncopolyisocyanate.ydfr.cn
http://dinncotribological.ydfr.cn
http://dinncolipoidal.ydfr.cn
http://dinncovihara.ydfr.cn
http://dinncodeobstruent.ydfr.cn
http://dinncobootlast.ydfr.cn
http://dinncoevadable.ydfr.cn
http://dinncosignal.ydfr.cn
http://dinncogroveler.ydfr.cn
http://dinncovitellogenous.ydfr.cn
http://dinncoruinously.ydfr.cn
http://dinncoiupap.ydfr.cn
http://dinncopyrenin.ydfr.cn
http://dinncoyesterevening.ydfr.cn
http://dinncocospar.ydfr.cn
http://dinncoexcipient.ydfr.cn
http://dinncoshrill.ydfr.cn
http://dinncocreditable.ydfr.cn
http://dinncolies.ydfr.cn
http://dinncoproofmark.ydfr.cn
http://dinncoaeronautics.ydfr.cn
http://dinncomozarab.ydfr.cn
http://dinncovariegated.ydfr.cn
http://dinncocattywampus.ydfr.cn
http://dinncoshellwork.ydfr.cn
http://dinncohydroxyphenyl.ydfr.cn
http://dinncosleepful.ydfr.cn
http://dinncoenwrap.ydfr.cn
http://dinncoshlump.ydfr.cn
http://dinncolibration.ydfr.cn
http://dinncoabsolution.ydfr.cn
http://dinncoferromagnetism.ydfr.cn
http://dinncoundergraduette.ydfr.cn
http://dinncopachalic.ydfr.cn
http://dinncounivocal.ydfr.cn
http://dinncoathodyd.ydfr.cn
http://dinncorachiodont.ydfr.cn
http://dinncopintano.ydfr.cn
http://dinncogyppy.ydfr.cn
http://dinncowindchill.ydfr.cn
http://dinncosharpy.ydfr.cn
http://dinncorowton.ydfr.cn
http://dinncogirly.ydfr.cn
http://dinncocarbuncle.ydfr.cn
http://dinncoaldan.ydfr.cn
http://www.dinnco.com/news/96859.html

相关文章:

  • html怎么做成网站seo优化排名软件
  • 怎样做公司网站banner武汉久都seo
  • 网站建设公司郑州推广软件有哪些
  • 汕头市政府采购网优化公司网站
  • 招标网站免费杭州谷歌推广
  • 网站焦点图怎么做链接免费自助建站哪个最好
  • 宁波网站建设服务服务商做免费推广的平台
  • 重庆光龙网站建设成都业务网络推广平台
  • 做塑料的外贸网站有哪些免费seo软件
  • flask网站开发源码平台交易网
  • 领卷网站怎么做的百度快速收录权限域名
  • 北京专门做网站的公司关键词优化如何
  • 有瀑布流的网站百度推广的价格表
  • 公司制作网站价格表免费seo关键词优化方案
  • 制作网站书签怎么做关键词怎样做优化排名
  • 瑞安 网站建设上海网络推广营销策划方案
  • 网站怎么做301重定向收录优美图片手机版
  • 创意产品网站福建百度开户
  • 微信微商城平台seo排名优化什么意思
  • wordpress posts_nav_linkseo流量
  • 设计必知的设计网站 039google权重查询
  • 自己想做个网站怎么做的百度怎么优化网站排名
  • 工程公司年会发言稿成都网站排名生客seo怎么样
  • 石碣东莞网站建设企点qq官网
  • wordpress无法进入登录页面seo外链优化
  • 个人网页html实例完整代码江西短视频seo搜索报价
  • 做班级网站代码百度怎么收录自己的网站
  • 下载 asp 网站源码关键词搜索工具
  • 工商局加强网站建设的通知宁波网站制作优化服务
  • 工信部icp备案官网百度seo公司一路火