怎样用C语言描述操作系统里的死锁算法?谢谢。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样用C语言描述操作系统里的死锁算法?谢谢。相关的知识,希望对你有一定的参考价值。

死锁实验:1.实验目的要求:掌握银行家死锁避免算法,使进程在竞争资源时不发生死锁。。
2. 实验主要内容:设计五个进程P0,P1,P2,P3,P4共享三类资源A,B,C的系统,A,B,C的资源数量分别为10,5,7。进程可动态地申请资源和释放资源,系统按各进程的申请动态地分配资源。要求程序具有显示和打印各进程的某一时刻的资源分配表和安全序列;显示和打印各进程依次要求申请的资源号以及为某进程分配资源后的有关资源数据。

参考技术A 利用银行家算法避免死锁 . 银行家算法 设Requesti是进程Pi的请求向量,如果Requesti〔j〕=K,表示进程Pi需要K个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查:� (1) 如果Requesti〔j〕≤Need〔i,j〕,便转向步骤2;否则认为出错,因为它所需要的资源数已超过它所宣布的最大值。 (2) 如果Requesti〔j〕≤Available〔j〕,便转向步骤(3);否则, 表示尚无足够资源,Pi须等待。 (3) 系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值:� Available〔j〕∶=Available〔j〕-Requesti〔j〕;� Allocation〔i,j〕∶=Allocation〔i,j〕+Requesti〔j〕;� Need〔i,j〕∶=Need〔i,j〕-Requesti〔j〕;� (4) 系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正式将资源分配给进程Pi,以完成本次分配;否则, 将本次的试探分配作废,恢复原来的资源分配状态,让进程Pi等待。 (3) 系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值:� Available〔j〕∶=Available〔j〕-Requesti〔j〕;� Allocation〔i,j〕∶=Allocation〔i,j〕+Requesti〔j〕;� Need〔i,j〕∶=Need〔i,j〕-Requesti〔j〕;� (4) 系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正式将资源分配给进程Pi,以完成本次分配;否则, 将本次的试探分配作废,恢复原来的资源分配状态,让进程Pi等待。 (3) 系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值:� Available〔j〕∶=Available〔j〕-Requesti〔j〕;� Allocation〔i,j〕∶=Allocation〔i,j〕+Requesti〔j〕;� Need〔i,j〕∶=Need〔i,j〕-Requesti〔j〕;� (4) 系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正式将资源分配给进程Pi,以完成本次分配;否则, 将本次的试探分配作废,恢复原来的资源分配状态,让进程Pi等待。

在C语言中怎样产生随机的字符串

在VC中,怎样产生一个随机的字符串?
有没有什么库函数?
或者用什么思想来实现设计算法?
最好以代码为例哈,
谢谢!

直接产生随机的字符串的库函数是没有的,
但是可以这么实现:
1.产生固定长度的随机的字符串
主要就是产生固定个数的随机字符,
那么就简单了,用两组随机数:
一组:随机产生0~25的整数num,然后用'a'+num来赋值小写字母,'A'+num来赋值大写字母
一组:随机产生0,1,产生0,用'a'来和num相加,生成小写字母;产生1,用'A'来和num相加,生成大写字母;

2.产生不固定长度的随机的字符串
就是在上面的产生固定长度的随机的字符串的基础上,在引入一组随机数,来控制字符串长度

代码如下:
1.产生固定长度的随机的字符串
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

#define N 10//固定长度为10

void main()

int flag,charLengt;
int i,j,k=0;
char ch[N+1]=NULL;
srand((unsigned)time(NULL));

for(i=0;i<10;i++)//生成10个String吧

for(j=0;j<N;j++)

flag=rand()%2;
if(flag) ch[k++]='A'+rand()%26;
else ch[k++]='a'+rand()%26;

ch[k]='\0';
k=0;
printf("%s\n",ch);


getch();


不定长的自己参照着写吧
参考技术A //产生长度为length的随机字符串
char* genRandomString(int length)

int flag, i;
char* string;
srand((unsigned) time(NULL ));
if ((string = (char*) myMalloc(length)) == NULL )

myLog("Malloc failed!flag:14\n");
return NULL ;


for (i = 0; i < length - 1; i++)

flag = rand() % 3;
switch (flag)

case 0:
string[i] = 'A' + rand() % 26;
break;
case 1:
string[i] = 'a' + rand() % 26;
break;
case 2:
string[i] = '0' + rand() % 10;
break;
default:
string[i] = 'x';
break;


string[length - 1] = '\0';
return string;
参考技术B #include <stdlib.h>

...

char R[26]='A',....'Z'
char C[100] = 0;

for(int n=0;n<100;n++)

C[n] = R[rand()%26];

参考技术C 能把问题说得具体一点吗?

以上是关于怎样用C语言描述操作系统里的死锁算法?谢谢。的主要内容,如果未能解决你的问题,请参考以下文章

C语言编译后的exe程序怎样进行复制粘贴操作

急!银行家算法用C语言编写.全部程序.

怎样用C语言实现FFT算法啊?

怎样用C语言打开文件夹(源代码)

操作系统,C语言

C语言实现的操作系统银行家算法