switch(choice) {
case 1: addresources();break; case 2: delresources();break; case 3: changeresources();break; case 4: share();break; case 5: addprocess();break; case 0: choice=0;break;
default: cout<<\请正确选择操作序号(0-5)!\ } }
return 1; }}三、调试与运行:
四、总结:
1、本程序的优点和不足之处(四号仿宋,单倍行距)
输入提示信息太啰嗦
银行家算法从某种意义上说,它缺乏实用价值,因为很少有进程能够在运行前就知道其所需资源的最大值,而且进程数也不是固定的,往往在不断地变化(如新用户登录或退出),况且原本可用的资源也可能突然间变成不可用(如磁带机可能坏掉)。在实际情况中只有极少的系统使用银行家算法来避免死锁。 2、心得体会(四号仿宋,单倍行距)
通过实验认识到,实践的必要性,有许多地方没有考虑到,还有些地方写的不够好,程序还需要改进。
实验(四)
动态分配
一、问题描述:
根据进程的实际需要,动态地为之分配内存空间,在实现可变分区分配时,涉及到分区分配中所用的数据结构、分区分配算法和分区的分配与回收。
二、程序分析与设计: 1、基本思想
A.首次适用算法:空闲分区链以地址递增的次序连接,而在分配时从链首开始按顺序查找,直到找到一个大小能满足要求的空闲分区。
B.最佳适用算法:所有空闲分区按其容量从小到大的顺序形成一空闲分区链。 2、结构定义 struct code {
int value; int xx; int fi; }co[20];
3、算法描述(四号仿宋,单倍行距)
#include
int value; int xx; int fi; }co[20];
using namespace std; void alloc(int ch); void opt(int x,int id); void first(int x,int id); void free(int id); void show(); int ch;
void show() {
int i,j;
printf(\初始容量\\t剩余容量\\t状态\\n\ if(ch==2)
for(i=0;i<10;i++)
printf(\ else if(ch==1) for(i=10;i<20;i++)
printf(\); }
void free(int id) {
int i,j;
if(ch==2)
{ for(i=0;i<10;i++) if(co[i].xx==id) {co[i].xx=co[i].value; co[i].fi=0;
printf(\内存释放完毕\\n\ break;} if(i>=10)