• 大小: 7KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: C/C++
  • 标签: .cpp  

资源简介

操作系统实验 页面置换算法 c++程序代码 缺页次数 缺页率 物理块 FIFO置换算法 LRU置换算法 最佳置换算法

资源截图

代码片段和文件信息

#include
void Print(int bc[]int blockCount)   
{   
    for(int i=0;i    {   
        printf(“%d “bc[i]);   
    }   
   printf(“\n“);  
}   
  
bool Travel(int bc[]int blockCountint x)   
{   
    bool is_found=false;   
    int i;   
    for(i=0;i    {   
        if(bc[i]==x)   
        {   
            is_found=true;   
            break;   
        }   
    }   
    return is_found;   
}   
  
void FIFO(int pc[]int bc[]int pageCountint blockCount)   
{   
    printf(“0:FIFO置换算法\n“);   
    int i;   
    if(pageCount<=blockCount)   
    {   
        printf(“缺页次数为0\n“);
        printf(“缺页率为0\n“);   
    }   
    else  
    {   
        int noPage=0;   
        int p=0;   
        for(i=0;i        {   
               
            //printf(“引用页:%d\n“pc[i]);   
            if(!Travel(bcblockCountpc[i]))   
            {   
                if(i                {   
                    bc[i]=pc[i];   
                }   
                else  
                {   
                    if(p==blockCount)   
                    {   
                        p=0;   
                    }   
                    bc[p]=pc[i];   
                    p++;   
                       
                }   
                noPage++;   
                //printf(“物理块情况:\n“);   
                //Print(bcblockCount);   
            }   
            //printf(“\n“); 
        }   
        printf(“FIFO缺页次数为:%d\n“noPage);
        printf(“FIFO缺页率为:%.2f%%\n“(float)noPage/pageCount*100);   
    }   
}   
  
int FoundMaxNum(int a[]int n)   
{   
    int kj;   
    k=a[0];   
    j=0;   
    for (int i=0;i    {   
        if(a[i]>=k)   
        {   
            k=a[i];   
            j=i;   
        }   
    }   
    return j;   
}   
  
void LRU(int pc[]int bc[]int pageCountint blockCount)   
{   
    printf(“1:LRU置换算法\n“);   
    if(pageCount<=blockCount)   
    {   
      printf(“缺页次数为0\n“);
       printf(“缺页率为0\n“);    
    }   
    else  
    {   
        int noPage=0;   
        int ijm;   
        int bc1[100];   
        for(i=0;i        {   
            bc1[i]=0;   
        }   
        for(i=0;i        {   
           // printf(“引用页:%d\n“pc[i]);   
            if(!Travel(bcblockCountpc[i]))   
            {   
                if(i                {   
                    bc[i]=pc[i];   
                    for(int p=0;p<=i;p++)   
                    {   
                        bc1[p]++;   
                    }   
                }   
                else  
                {   
                    for(j=0;j                    {   
                        bc1[j]++;   
                    }   
                    int k=FoundMaxNum(bc1blockCount);   
         

评论

共有 条评论