printf(\"\\n 进程号No.%d:\\n\-4-
p=getpch(PCB);
printf(\"\\n 输入进程名:\"); scanf(\"%s\
printf(\"\\n 输入进程静态优先数:\"); scanf(\"%d\p->retime=i;
printf(\"\\n 输入进程运行时间:\"); scanf(\"%d\
p->super=(p->jsuper-(p->ntime+p->retime))+10;//使优先级不为负数 printf(\"\\n\");
p->rtime=0;p->state='w'; p->link=NULL;
sort(); /* 调用sort函数*/ } }
int space() {
int l=0; PCB* pr=ready; while(pr!=NULL) { l++; pr=pr->link; }
return(l); }
disp(PCB * pr) /*建立进程显示函数,用于显示当前进程*/ { printf(\"\\n
进程名\
状态\
动态优先级\
静态优先级
\Needtime\Runtime\RStime\\n\"); //不好打印 就只能将就了 哈
printf(\"|%s\\printf(\"|%c\\
-5-
printf(\"|%d\\\printf(\"|%d\\\printf(\"|%d\\\printf(\"|%d\\printf(\"|%d\printf(\"\\n\"); }
check() /* 建立进程查看函数 */ { PCB* pr;
printf(\"\\n **** 当前正在运行的进程是:%s\显示当前运行进程*/ disp(p); pr=ready;
printf(\"\\n ****当前就绪队列状态为:\\n\"); /*显示就绪队列状态*/ while(pr!=NULL) { disp(pr); pr=pr->link; } }
destroy() /*建立进程撤消函数(进程运行结束,撤消进程)*/ {
printf(\"\\n 进程 [%s] 已完成.\\n\free(p); }
running() /* 建立进程就绪函数(进程运行时间到,置就绪状态*/ {
(p->rtime)++;
if(p->rtime==p->ntime)
destroy(); /* 调用destroy函数*/ else
-6-
{
(p->super)--; p->state='w';
sort(); /*调用sort函数*/ } }
main() /*主函数*/ {
int len,h=0; char ch; input(); len=space();
while((len!=0)&&(ready!=NULL)) {
ch=getchar(); h++;
printf(\"\\n The execute number:%d \\n\p=ready; ready=p->link; p->link=NULL; p->state='R'; check(); running();
printf(\"\\n 按任一键继续......\"); ch=getchar(); }
printf(\"\\n\\n 进程已经完成.\\n\"); ch=getchar(); }
-7-
五、实验过程原始记录:
六、实验总结:
操作系统是计算机系统中必不可少的系统软件,它是计算机系统中各种资源的管理者和各种活动的组织者、指挥者。操作系统采用时间片法调度进程,是系统资源得到充分利用,用户可以花更少的时间完成过多的工作。通过这次实验,将以前只会做题的过程转化外程序执行的过程,模拟了在单处理机情况下的处理及调度问题,体会到了程序执行的过程,加深了对进程调度的理解。
-8-