• 大小: 5KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-17
  • 语言: 其他
  • 标签: 课设呀  

资源简介

这个呢是大二的操作系统的课程设计,我选的页面置换,好久没看了,运行没问题可能排版什么的不太妥当,大家参考参考就好啦,不过我不知道为什么发出去都要积分才可以看,本来想发不用积分就可以下载的,但是不太会,哈哈哈毕竟刚开始上传资源嘛

资源截图

代码片段和文件信息

#include
#include
#include
int knum; //物理的块数
int ynum; //访问页面个数
static int memery[10]={0}; //块中的页号
static int page[100]={0}; //页面号
static int temp[100][10]={0}; //存入输出需要用到的数组
void FIFO();//先进先出置换算法
void LRU();//最近最久未使用算法
void OPT();//最佳置换算法
void print(unsigned int count);//输出函数
void main()
{
     int i;
     int chance;
     printf(“欢迎来到页面置换!\n“);
     system(“pause“);//请按任意键继续
     system(“cls“);//清屏
     printf(“请输入块数:\n“);
     scanf(“%d“&knum);
     printf(“请输入访问页面数:\n“);
     scanf(“%d“&ynum);
     printf(“请输入访问页面:\n“);
     for(i=0;i     scanf(“%d“&page[i]);
     do{
     printf(“--------------------------\n“);
     printf(“看看哪个算法能被你抽中呀!\n“);
     printf(“\n“);
     printf(“1.先进先出\n“);
     printf(“2.最近最久未使用\n“);
     printf(“3.最优算法\n“);
     printf(“--------------------------\n“);
     printf(“请输入你所选择的算法序号:“);
     scanf(“%d“&chance);
        switch(chance)
        {
        case 1:
            FIFO();
            break;
        case 2:
            LRU();
            break;
        case 3:
            OPT();
            break;
        case 4:
            exit(0);
default:
printf(“输入错误,请重新输入:“);
        }
    }while (chance!=4);
getch();
}
void print(unsigned int count)
{
    int ijkl;

    for(j=0;j    {
    for(i=0;i         {
             if(i>=j)
printf(“ %d“temp[i][j]);
else
printf(“  “);

         }
     }
     printf(“----------------------------------------\n“);
printf(“缺页次数:%d\t\t“count+knum);
printf(“缺页率:%d/%d\n“count+knumynum);
printf(“置换次数:%d\t\t“count);
printf(“----------------------------------------\n“);
}
void FIFO()//先进先出
{
    int memery[10]={0};
    int time[10]={0}; /*记录进入物理块的时间*/
    int ijkm;
    int max=0; /*记录换出页*/
    int count=0; /*记录置换次数*/
/*前mSIZE个数直接放入*/
    for(i=0;i    {
        memery[i]=page[i];
        time[i]=i;
        for(j=0;j temp[i][j]=memery[j];
    }
    for(i=knum;i    {
/*判断新页面号是否在物理块中*/
        for(j=0k=0;j        {
            if(memery[j]!=page[i])
                k++;
        }
        if(k==knum) /*如果不在物理块中*/
        {
            count++;
/*计算换出页*/
            max=tim

评论

共有 条评论

相关资源