实验五 04彭得源

#include"stdio.h"
#include"stdlib.h"
#include"time.h"
struct wuli{
    int wuli_number;
    char pname; /*已分配区表登记栏标志,用"0"表示空栏目*/
}; /*内存表*/
struct wuli wuli_table[20]={0};
struct page{

    char pname;//进程名称
    int psize;//进程大小
    int pagetable[10];//进程页表
};//页表
struct page page_table[10]={0};

int allocate(int wulisize,int i,int pagesize);//为进程分配内存空间
int reclaim(int wulisize,char pname);//释放进程占用的空间

void output();
int main()
{
    int pagesize;//分页大小
    int wulisize=80;//内存大小
    char pname;
    int xuanze;//操作选择
    int i;

    printf("输入页面大小:\n");
    scanf("%d",&pagesize);
    //初始化
    for(i=0;i<20;i++)
    {
        wuli_table[i].wuli_number=i;
        wuli_table[i].pname=‘0‘;
    }
    for(i=0;i<10;i++)
    {
        page_table[i].pname=‘0‘;

    }
    //初始化后的内存空间有一部分已经被使用
    srand((unsigned)time(NULL));
    for(i=0;i<7;i++)
    {

        int number=rand()%19+1;
        wuli_table[number].pname=‘a‘;
        wulisize--;
    }
    output();
    //进入存储分配
    while(wulisize!=0)
    {
        printf("选择操作\n1.分配  2.回收\n");
        scanf("%d",&xuanze);
        if(xuanze==1)
        {
            for( i=0;i<10;i++)
            {
                if(page_table[i].pname==‘0‘)
                {
                    getchar();
                    printf("输入进程名称:");
                    scanf("%c",&page_table[i].pname);
                    getchar();
                    printf("输入进程大小:");
                    scanf("%d",&page_table[i].psize);
                    break;
                }
            }
            wulisize=allocate(wulisize,i,pagesize);
        }else
        {
            printf("输入进程名称:");
            getchar();
            scanf("%c",&pname);
            wulisize=reclaim(wulisize,pname);
        }

        output();
    }

    return 0;
}

int  allocate(int wulisize,int i,int pagesize)
{
    int k;
    int j;
    for(k=0;k<(page_table[i].psize/pagesize);k++)
    {
        for( j=0;j<20;j++)
        {
            if(wuli_table[j].pname==‘0‘)
            {
                wuli_table[j].pname=page_table[i].pname;
                page_table[i].pagetable[k]=j;
                wulisize--;
                break;

            }
        }

    }
    return wulisize;
}

int reclaim(int wulisize,char pname)
{
    int j;
    int k;
    for( j=0;j<20;j++)
    {
        if(wuli_table[j].pname==pname)
        {
            wuli_table[j].pname=‘0‘;

            wulisize++;

        }
    }
    for (j=0;j<10;j++)
    {
        if(page_table[j].pname==pname)
        {
            page_table[j].pname=‘0‘;
            page_table[j].psize=0;
            for(k=0;k<10;k++)
            {
                page_table[j].pagetable[k]=0;
            }

            break;

        }
    }
    return wulisize;
}

void output(){
    int i;
    printf("————————内存分配情况——————————\n");
    printf("物理块号   进程名\n");
    for(i=0;i<20;i++)
    {

        printf("%d         %c\n",wuli_table[i].wuli_number , wuli_table[i].pname);
    }
}
时间: 2024-10-29 00:55:45

实验五 04彭得源的相关文章

实验二,04彭得源

#include <stdio.h> #define n 20 struct fcfs { int id; //进程名 int gt; //进程到达时间 int runt; //进程运行时间 int ft; //进程完成时间 int rt; //进程周转时间 }f[n]; void main() { int amount,i,j,l,k; struct fcfs f[n]; printf("请输入进程个数:\n"); scanf("%d",&am

实验7 201306114104彭得源

实验报告 课程名称 基于Android平台移动互联网开发 实验日期 16/03/25 实验项目名称 实验7 实验地点 S3010 实验类型 □验证型    √设计型    □综合型 学  时 一.实验目的及要求(本实验所涉及并要求掌握的知识点) 实现启动端和BindService之间的双向通信 1)   实现从启动端传递一个数据至BindService端: 2)   实现使用BindService服务播放项目源文件中的音乐: 3)   实现在启动端通过“增加”和“降低”两个按钮控制音频音量大小.

实验8 201306114104彭得源

实验报告 课程名称 基于Android平台移动互联网开发 实验日期 16/05/08 实验项目名称 实验8 实验地点 S3010 实验类型 □验证型    √设计型    □综合型 学  时 一.实验目的及要求(本实验所涉及并要求掌握的知识点) 设计一个个人通讯录,掌握Android平台下的数据库开发,该个人通讯录主要包括联系人列表和联系人详细信息等界面. 程序主界面是通讯录的目录显示手机上联系人的名称.点击联系人的姓名可以显示联系人的详细信息.在按了MEMU键之后会弹出菜单栏.单击菜单栏上的按

试验一,04彭得源

#include<stdio.h> #include<string.h> main() { char a[10]="help"; char b[10]="quit"; char c[10]; while(1){ printf("please enter the command: "); scanf("%s",c); if(strcmp(c,a)==0) printf("dir\ncd\nmd\

04彭得源

#include<stdio.h> #include<string.h> main() { char liangzu[30][30]={"dir","cd","md","rd","cls","date","time","ren","copy","help","quit&quo

实验五:通讯协议设计

北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全系统设计基础               班级:1453班 姓名:彭垚                 学号:20145317 成绩:            指导教师:娄嘉鹏           实验日期:2016.11.16 实验密级:        预习程度:               实验时间10:00-12:00 仪器组次:         必修/选修:必修             实验序号:五 实验名

信息安全系统设计基础实验五:通讯协议设计

北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级:52.53 姓名:王思亓 赵阳林 学号:20135205 20135334 成绩: 指导教师:娄嘉鹏 实验日期:2015.11.24 实验密级: 预习程度: 实验时间:15:30—18:00 仪器组次: 必修/选修:必修 实验序号: 实验名称:通讯协议设计 实验目的与要求:1.掌握在ARM开发板实现一个简单的WEB服务器的过程.2.学习在ARM开发板上的SOCKET网络编程.3.学习Linux下的signal()函

Linux基础入门(新版)(实验五至实验八)

实验五 环境变量与文件查找 (环境变量的作用与用法,及几种搜索文件的方法) 一.环境变量 1.变量 (1)常变量与值是一对一的关系 (2)变量的作用域即变量的有效范围(比如一个函数中.一个源文件中或者全局范围),在该范围内只能有一个同名变量.一旦离开则该变量无效,如同不存在这个变量一般. 这里是一个例子: declare命令创建一个变量名为 tmp 的变量: $ declare tmp 使用=号赋值运算符为变量 tmp 赋值为 shiyanlou:$ tmp=shiyanlou 读取变量的值,使

信息安全技术 实验五 网络攻防技术 20155202 张旭

信息安全技术 实验五 网络攻防技术 20155202 练习一 信息收集 一. 实验目的 该实验为验证性实验. ? 了解信息搜集的一般步骤 ? 学会熟练使用ping命令 ? 学会利用Nmap等工具进行信息搜集 二. 实验内容 Ping探测 Nmap扫描 探测总结 注:详细实验操作请参考实验室服务器上的参考资料. 三. 实验步骤 本练习主机A.B为一组,C.D为一组,E.F为一组.实验角色说明如下: 实验主机 实验角色 系统环境 A.C.E 扫描源/目标 Windows B.D.F 扫描源/目标 L