#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);}
}

转载于:https://www.cnblogs.com/badgood/p/4600862.html

实验五 存储管理实验相关推荐

  1. 操作系统实验五--存储管理

    文章目录 操作系统实验五--存储管理 一.实验目的 二.实验内容 三.设计原理及相关算法 四.结果分析 五.源代码 操作系统实验五–存储管理 一.实验目的 1.了解虚拟存储技术的特点,掌握请求页式存储 ...

  2. 计算机网络实验五,计算机网络(实验五).docx

    计算机网络(实验五).docx 实验五一.实验内容在这个实验室里,我们将探讨ICMP 协议得几个方面由 Ping 项目产生得P 信息Tracer ute程序生成得C消息关于 CM 信息得格式与内容.在 ...

  3. 计算机系统(1) 实验五 中断实验

    计算机系统(1) 实验五 中断实验 一.实验目的 二.实验背景及要求 (一)实验背景: (二)实验要求:实现三部分程序 1.用户程序: 2.键盘中断处理程序: 3.操作系统使能代码: 三.实验步骤 1 ...

  4. C#面向对象程序设计课程实验五:实验名称:C#面向对象技术

    C#面向对象程序设计课程实验五:实验名称:C#面向对象技术 实验内容:C#面向对象技术 一. 实验目的及要求 二.实验环境 三.实验内容与步骤 3.1.实验内容:测试类,实现多态 3.2.实验步骤 3 ...

  5. <微机原理>[汇编语言]-[实验五] 定时器实验

    实验五 定时器实验 一.实验目的 学习定时器的工作原理及使用方法. 学习定时器的初始化程序.应用程序的编写和调试. 二.实验仪器 Keil5 普中A2开发板 stc-isp 三.实验内容 数码管间隔一 ...

  6. 广州大学计算机网络实验五,计算机网络实验五.doc

    计算机网络实验五 广州大学学生实验报告 开课学院及实验室:计算机学院,电子信息楼416A室 2014年 12 月 10日 学院计算机科学与教育软件学院年级/专业/班计科122姓名庞彬学号1206100 ...

  7. 南京晓庄学院java实验五_Java实验四和实验五

    实验四 类的继承性和多态性 [开发语言及实现平台或实验环境] Windows2000 或XP,JDK1.6与Jcreator4.0 [实验目的] 1.  掌握OOP方式进行程序设计的方法, 2.  了 ...

  8. 操作系统实验五 存储管理

    ★观前提示:本篇内容为操作系统实验内容,代码等内容经测试没有问题,但是可能会不符合每个人实验的要求,因此以下内容建议仅做思路参考. 目录 一.实验目的 二.实验内容 三.具体实现 四.实验总结 一.实 ...

  9. GIS二次开发:实验五 综合实验

    一.实验目的 1.掌握栅格数据读取与另存: 2.掌握地图制图工具的实现: 3.基于遥感影像的森林资源信息管理与更新系统的实现 二.实验仪器与设备 计算机.visual studio 软件.ArcGIS ...

  10. 实验五 MapReduce实验:单词计数

    实验指导: 5.1 实验目的 基于MapReduce思想,编写WordCount程序. 5.2 实验要求 1.理解MapReduce编程思想: 2.会编写MapReduce版本WordCount: 3 ...

最新文章

  1. 15天Python入门-3-流程控制-选择结构
  2. 【Web安全】先进技术WebSocket下安全测试
  3. 【杂谈】2020年有三AI计算机视觉培养计划详解,该不该学怎么学CV的简单讨论...
  4. 33. 脱壳篇-重建输入表
  5. Java跨域请求cooking共享,关于HTML5中的sessionStorage和localStorage
  6. ubuntu1204 dvd 用tweak后界面起不来 swap设置4g足够32位系统软件用
  7. npm卸载全局安装的第三方插件注意事项
  8. linux(Ubuntu)系统解决校园网锐捷客户端联网问题
  9. 前端开发必备,【项目实战】
  10. 项目经理和产品经理的区别
  11. 《网络渗透技术》 强烈推荐
  12. macOS: 卸载 Flash Player 迎接 2021
  13. 使用 meson 编译代码
  14. Android新浪微博实训报告,完成一份新浪微博目标用户分析报告
  15. 教你自动识别查询快递单号的全部物流信息
  16. 机器学习之One-Hot Encoding详解
  17. Android画布放大缩小,android画板---涂鸦,缩放,旋转,贴纸实现
  18. IPhone 视图切换的的2种方法
  19. GEE5:kNDVI植被指数的获取
  20. 映射和反射的概念及应用方法

热门文章

  1. 手机能识别sim卡但是没信号_一篇文章扫盲手机SIM卡相关知识
  2. nginx中的共享内存的3种方式
  3. 2018年英语计算机职称考试,2018年高级职称计算机考试内容介绍
  4. docker中运行mysql5.7,使用navicat链接报错10061/10060
  5. 【渝粤教育】国家开放大学2018年秋季 1141t工程经济与管理 参考试题
  6. 有监督的神经网络模型
  7. JD_Source Code for problem 1259
  8. error: #error regenerate this file with a newer version of protoc.
  9. 推荐系统000111
  10. from django.core.context_processors import crsf报错