⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 display.c

📁 这是一个操作系统中模拟内存管理的程序。主要展示内存的三种分配算法
💻 C
字号:
//display.c  显示一些菜单
//2007.12.12
 extern int mem_size;
 extern int ma_algorithm;
 extern struct free_block_type* free_block;
 extern struct allocated_area* allocated_block;
//显示菜单
display_menu()
{
	printf("\n\n                    虚拟内存管理\n");
	printf("_______________________________________________________\n\n");
	printf("\t1  设置内存大小\n\t2  设置分配算法\n\t3  创建新进程\n\t4  删除进程\n\t5  显示内存使用情况\n\t6  概况\n\t0  退出\n");
    printf("_______________________________________________________\n");
    printf("\t\n请选择:");
	return 0;
}
//显示内存使用情况
page_c()
{
    int i=25;
    for(;i>0;i--)
    printf("\n");
    return 0;
}
display_mem_usage(struct free_block_type *fb,struct allocated_area *ab)
    {
        int i;
        //显示空闲内存
        i=0;
        page_c();
        printf("\n                            内存使用情况\n");
        printf("---------------------------------------------------------------------\n");
        //可用内存
        printf("\n当前可用内存\n");
        printf("---------------------------------------------------------------------\n");
        printf("%-20s%-20s%-20s%-20s\n","序号","起始地址","结束地址","区域大小");
        while(fb!=NULL)
        {
            i++;
            printf("%-20d%-20d%-20d%-20d\n",i,fb->start_addr,(fb->start_addr+fb->size-1),fb->size);
            fb=fb->next;
        }
        //已用内存
        printf("\n当前已用内存\n");
        printf("---------------------------------------------------------------------\n");
        printf("%-20s%-20s%-20s%-20s\n","进程号","起始地址","结束地址","区域大小");
        while(ab!=NULL)
        {
            printf("%-20d%-20d%-20d%-20d\n",ab->pid,ab->start_addr,(ab->start_addr+ab->size-1),ab->size);
            ab=ab->next;
        }
        printf("\n\n任意键继续...");
        getch();
        return 0;
    }
    //显示概况
    display_all()
    {
        int free_m;
        char *p[3]={"FF(最先适应算法)","BF(最佳适应算法)","WF(最坏适应算法)"};
        free_m=free_memery();
        page_c();
        printf("                            概况\n");
        printf("-------------------------------------------------------------\n");
        printf("内存总大小:  %d\t",mem_size);
        printf("内存分配算法:  %s\n\n",*(p+ma_algorithm-1));
        printf("当前使用量:  %d\t\t",mem_size-free_m);
        printf("可用内存大小:  %d\n\n",free_m);
        printf("当前进程数:  %d\n",process_count());
        printf("-------------------------------------------------------------\n\n");
        printf("任意键继续...");
        getch();
        return 0;
    }
int free_memery()
{
     int mem=0;
     struct free_block_type* fb;
     fb=free_block;
     while(fb!=NULL)
     {
        mem+=fb->size;
        fb=fb->next;
     }
     return mem;
}
int process_count()
{
    int pro=0;
    struct allocated_area* ab;
    ab=allocated_block;
    while(ab)
    {
        ab=ab->next;
        pro++;
    }
    return pro;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -