问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求高人用VC++写一保护进程的代码

发布网友 发布时间:2022-06-05 07:40

我来回答

2个回答

热心网友 时间:2023-11-11 11:25

vc++

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
typedef struct node /*创建PCB*/
{ char name[10]; /*进程标识*/
int prio; /*进程优先数*/
int cputime; /*进程占用CPU时间*/
int needtime; /*进程完成所需时间*/
int count; /*计数器*/
char state; /*进程的状态*/
struct node *next; /*链指针*/

}PCB;
PCB *finish,*ready,*tail,*run;
int N;

firstin() /*创建就绪队列对头指针*/
{
run=ready;
run->state='R';
ready=ready->next;
}

void prt(char algo) /*演示进程调度*/
{
PCB *p;
printf(" NAME CPUTIME NEEDTIME PRIORITY STATUS\n");
if(run!=NULL)
printf(" %-10s%-10d%-10d%-10d %c\n",run->name,
run->cputime,run->needtime,run->prio,run->state);
p=ready;
while(p!=NULL)
{ printf(" %-10s%-10d%-10d%-10d %c\n",p->name,
p->cputime,p->needtime,p->prio,p->state);
p=p->next;
}
p=finish;
while(p!=NULL)
{ printf(" %-10s%-10d%-10d%-10d %c\n",p->name,
p->cputime,p->needtime,p->prio,p->state);
p=p->next;
}
getch();
}

insert(PCB *q)
{
PCB *p1,*s,*r;
int b;
s=q;
p1=ready;
r=p1;
b=1;
while((p1!=NULL)&&b)
if(p1->prio>=s->prio)
{
r=p1;
p1=p1->next;
}
else
b=0;
if(r!=p1)
{
r->next=s;
s->next=p1;
}
else
{
s->next=p1;
ready=s;
}
}

void create(char alg) /*创建各个进程*/
{
PCB *p;
int i,time;
char na[10];
ready=NULL;
finish=NULL;
run=NULL;
for(i=1;i<=N;i++)
{
p=malloc(sizeof(PCB));
printf("Enter NAME of process:\n");
scanf("%s",na);
printf("Enter TIME of process(less than 50):\n");
scanf("%d",&time);
strcpy(p->name,na);
p->cputime=0;
p->needtime=time;
p->state='w';
p->prio=50-time; /*假设优先级与耗时之和为50*/
if(ready!=NULL)
insert(p);
else
{
p->next=ready;
ready=p;
}
}
clrscr();
printf(" DISPLAY OF THE PROGRESS:\n");
printf("************************************************\n");
prt(alg);
run=ready;
ready=ready->next;
run->state='R';
}

priority(char alg) /*优先级算法调度*/
{
while(run!=NULL&&run->prio>=0)
{
run->cputime=run->cputime+1;
run->needtime=run->needtime-1;
run->prio=run->prio-3;
if(run->needtime==0)
{
run->next=finish;
finish=run;
run->state='F';
run=NULL;
if(ready!=NULL)
firstin();
}
else
if((ready!=NULL)&&(run->prio<ready->prio))
{
run->state='W';
insert(run);
firstin();
}
prt(alg);
}
}

main()
{ char algo;
clrscr();
loop: printf("Enter THE TOTAL NUMBER of PCB(less than 10 is better):\n");
scanf("%d",&N);
if(N>10)
{printf("it's too big,and select a small number.\n");
goto loop;}
create(algo);
priority(algo);
}

holp you like!

热心网友 时间:2023-11-11 11:26

你好,你可以先尝试写一个驱动的hello world,熟悉下ddk环境,用用windbg等工具。了解了windows驱动开发后看下我那篇文章应该就能满足你上面说的要求了。

有问题网站上交流吧,我查邮不勤...

参考资料:http://www.jellon.cn/index.php/archives/105

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
酸醋萝卜怎么做又脆又好吃 账簿启用及交接表填写的步骤 账簿启用及交接表怎样填写 说的是精神分裂症,吃了二年多的药,分别是利培酮片,苯海索片,补脑_百度... 精神分裂症急性期适当的治疗方法 快递三斤荔枝的话要多少钱? 求高手指点一个plc编程问题,计算时间差,还有时间比较后,输出执行... 你好高手 我现在买了个松下fp0的PLC我想写一个步进程序,请问能否... 【plc执行程序步骤】 plc执行程序时 若有一步不能满足条件而执行不了... 电脑屏幕的壁纸怎么更换? 谁有OPPOA79第三方刷机包 oppoa79k有最新的卡刷包固件升级包吗? 亲们帮我算算,2010年借别人5万,到现在5年,应该给我多少利息?按照银行定期存款计算 请教:5万,年利率3.6%,60天。收益多少? 哥哥把5万元存到银行定期三年年利率为3.6%倒是她应该得到多少利息 请教:5万,年利率3.6%,60天。 收益多少? ps工具怎么用? 如何让人加你 为什么QQ密码输入都正确,但是就是登不上去为什么,电脑上QQ原本保存的就能登上去,密码是一样的 期权有到期日吗?芝商所CME期权到期日是什么时候? 还有一个月时间里,请问大家 系统集成项目管理工程师 大题解题方法 怎么训练 ? 谢谢 GSX避震孔多少cm 20篇500字读书笔记 为啥gsx250油箱左右侧缝隙不一样大 铃木gsx250双缸摩托车不能起动,发动机有突突声,但不爆发 请问摩托车下面这个是什么东西 里面有一点点*的油 正常吗 车是gsx250r gsx250减震1和7什么区别 GSX250换个LED可以吗 我的透明鱼是什么鱼 谁知道这里面的两条透明的鱼叫什么名字?体长30多公分,淡水河里面捕捞的 非常苦恼,在php使用uploadprogress上传大文件实现进度条时,uploadprogress_get_info取不到值 跪求千千静听皮肤 银川动物园游记作文六百字 马蜂窝离银川多少公里 C语言中 windous.h 指的是什么 windows.h是c++的吧,那么在C语言中可以用吗 有没有C语言大佬,告诉我这些代码的详细含义,尤其是GetDyAddr里面的意思,还有头文件Windows.h的作用? windows.h 是什么 #include&lt;windows.h&gt;和#include&lt;stdlib.h&gt;有什么不同 C语言中的windows.h在C++中怎么定义? windows.h的用法 C语言的windows.h函数库有个网页访问的功能的函数不知道是什么? vc ++ c语言 在学习windows.h的函数,划红线的是什么意思 C语言调用“windows.h”的话。 带刺玫瑰对于风水有讲究吗? 窗前种玫瑰对风水有影响吗 4s店车险和电话车险 4S店代理的车险靠谱还是电话车险靠谱 电话车险与4s店车险 电话投保和4S店投保哪种车险投保方式更靠谱