| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 550 人关注过本帖
标题:求助!!!
只看楼主 加入收藏
kaituozhe
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-10-20
收藏
 问题点数:0 回复次数:4 
求助!!!
各位大佬,请问在C中如何实现操作第系统中的模拟进程管理这个实验,最好能给我写出代码,小弟不胜感激!!!!!!
搜索更多相关主题的帖子: 不胜感激 如何 最好 
2005-10-20 07:11
JavaBean
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2005-9-30
收藏
得分:0 
这个模拟写起来估计会不短哦!你按照先来先服务或其他调度算法来写。

新建进程 newProcess( ){  .......//资源数,运行时间等等 查看系统资源
,若资源少于需要的则进入堵塞队列队尾,若资源够则插入就绪队列的队尾 }

运行进程 running( ){ ......//根据进程所学要的时间来确定什么时候结束,结束的时候同时释放资源 }

堵塞状态blocked( ){ //管理堵塞进程}

就绪状态runnabled( ){//管理就绪状态}

只要你学了操作系统,按里面的进程运行情况来写程序!(模拟 哦^&^)
2005-10-20 08:30
kaituozhe
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-10-20
收藏
得分:0 
有没有代码啊!!!
2005-10-20 08:39
JavaBean
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2005-9-30
收藏
得分:0 
没有,刚刚想的构架,待会还上课呢!

自己写,慢慢写,可以写出来的。
2005-10-20 08:42
kaituozhe
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-10-20
收藏
得分:0 

#define NULL 0 typedef struct LNode{ int name; int x; int time; int y; struct LNode *next; }LNode,*LinkList; createList(int n){ 创建就绪对列 int i=0; LinkList L,p; L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; for(i=n;i>0;--i){ p=(LinkList)malloc(sizeof(LNode)); scanf("%d",&p->name); printf("\n"); scanf("%d",&p->x); printf("\n"); scanf("%d",&p->time); printf("\n"); p->y=1; p->next=L->next; L->next=p; } return(L); } BlockList(LinkList *LA,LinkList *LB){  阻塞一个进程 lb为阻塞队列 LNode *pa,*pb,*pd; int m=0,n=0,a=0; pa=(*LA)->next; pd=LA; pb=(*LB)->next; printf("input the name of block jincheng:"); if(pa==NULL) printf("ERROR!"); else { printf("input the name of block jincheng:"); scanf("%d",&a); printf("\n"); while(pa){ if(pa->name==a){ pd->next=pa->next; pa->next=pb->next; pb->next=pa; m=1; break; } else{pd=pa; pa=pa->next;} } while(pb){ if(pb->name==a) { printf("Already!"); n=1; break; } else pb=pb->next; } if(!(m||n)) printf("NO FOUND!"); } }

WakeupList(LinkList *LA,LinkList *LB){   唤醒 int m=0,n=0,a=0; LNode *pa,*pb; pa=(*LA)->next; pb=(*LB)->next; printf("input the name of wakeup jincheng:"); scanf("%d",&a); printf("\n"); if(!pb) printf("error!!!\n"); else {while(pb!=NULL) {if(pb->name==a) {pb->next=pa->next; pa->next=pb; pb->y=1; m=1; break; } else pb=pb->next;} while(pa){ if(pa->name==a) {printf("Already!!!"); n=1; break;} else pa=pa->next; } if((m||n)) printf("NO FOUND!!!\n"); } }

EndList(LinkList *LA,LinkList *LB){ 结束一个进程 int m=0,n=0,a=0; LNode *pa,*pb,*pc,*pd; pc=LA; pd=LB; pa=(*LA)->next; pb=(*LB)->next; printf("input the name of end jincheng:"); scanf("%d",&a); printf("\n"); if(!(pa||pb)) printf("ERROR!!!\n"); else{ while(pa){ if(pa->name==a) {pc->next=pa->next; m=1; break;} else{ pc=pa; pa=pa->next;} } while(pb){ if(pb->name==a) {pd->next=pb->next; n=1; break;} else { pd=pb; pb=pb->next;} } if(!(m||n)) printf("NO FOUND!!!\n"); } }

prnList(LinkList *La,LinkList *Lb){  输出 LNode *pa,*pb; pa=(*La)->next; pb=(*Lb)->next; printf("jiuxu:\n"); if(!pa) printf("Empty!\n"); while(pa){ printf("name:"); printf("%d\n",pa->name); printf("x:"); printf("%d\n",pa->x); printf("time:"); printf("%d\n",pa->time); printf("y:"); printf("%d\n",pa->y); pa=pa->next; } printf("block:\n"); if(!pb) printf("Empty!!\n"); while(pb){ printf("name:"); printf("%d\n",pb->name); printf("x:"); printf("%d\n",pb->x); printf("time:");printf("%d\n",pb->time); printf("y:"); printf("%d\n",pb->y); pb=pb->next; } }

main(){ int n=0,i=1,c=0,m=0; LinkList LA,LB; LA=(LinkList)malloc(sizeof(LNode)); LA->next=NULL; LB=(LinkList)malloc(sizeof(LNode)); LB->next=NULL; printf(" start\n"); printf(" system menu\n"); printf(" 1......create\n"); printf(" 2......block\n"); printf(" 3......wakeup\n") ; printf(" 4......End\n"); printf(" 5......prn\n"); printf(" 0......exit\n"); while(i){ printf("please select: "); scanf("%d",&n); printf("\n"); if(n<0||n>5){ printf("please input 0 to 5!!!\n"); scanf("%d",n); printf("\n");} switch(n){case 0: i=0;break; case 1:{ printf("intput the number of list:"); scanf("%d",&m); printf("\n"); LA=createList(m); LB=createList(0); break;} case 2: BlockList(&LA,&LB);break; case 3: WakeupList(&LA,&LB);break; case 4: EndList(&LA,&LB);break; case 5: prnList(&LA,&LB);break; } } } 这是我自己写的,帮我看看在调用BlockList之后输出的结果为什么不正确!!!是不是调用之后返回的问题!!!

2005-10-20 09:03
快速回复:求助!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015718 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved