![《操作系统原理》课程实验报告_第1页](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/08a41d9c-ba39-4b3e-9d7f-be9c72f5ad5c/08a41d9c-ba39-4b3e-9d7f-be9c72f5ad5c1.gif)
![《操作系统原理》课程实验报告_第2页](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/08a41d9c-ba39-4b3e-9d7f-be9c72f5ad5c/08a41d9c-ba39-4b3e-9d7f-be9c72f5ad5c2.gif)
![《操作系统原理》课程实验报告_第3页](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/08a41d9c-ba39-4b3e-9d7f-be9c72f5ad5c/08a41d9c-ba39-4b3e-9d7f-be9c72f5ad5c3.gif)
![《操作系统原理》课程实验报告_第4页](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/08a41d9c-ba39-4b3e-9d7f-be9c72f5ad5c/08a41d9c-ba39-4b3e-9d7f-be9c72f5ad5c4.gif)
![《操作系统原理》课程实验报告_第5页](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/08a41d9c-ba39-4b3e-9d7f-be9c72f5ad5c/08a41d9c-ba39-4b3e-9d7f-be9c72f5ad5c5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、武汉纺织大学?操作系统原理?课程实验报告姓名: 班级: _ _ 学号: 实验时间: 2021 年 11 月 5 日 指导教师: 实验名称: 进程调度与管理 一、实验目的1了解进程的根本状态和创立方法;2熟悉优先级进程调度的实现原理。二、实验内容1调试下面的进程管理程序,描述其实现的根本过程。2了解进程的创立及优先级进程的调度的实现原理和方法,并观察实现的结果。三、操作步骤1进程管理程序实例:/*进程管理*/ #include"stdio.h"#include"stdlib.h"#include "string.h"#include &
2、quot;ctime"#define WAIT 1#define RUN 2#define FINISH 3typedef struct pcb int num; struct pcb *next; int priority; int timeneed; int state;pcb;/*用此结构体来模拟一个进程*/struct pcb *head;struct pcb *run;pcb *jccreat(int n)/*此函数用于创立进程队列*/ int i=1; pcb *head,*p,*q; srand(unsigned(time(NULL); /*随机函数的初始化*/ hea
3、d=(pcb *)malloc(sizeof(pcb);/*创立一个空头表*/ p=head; for(i=1;i<=n;i+)/*用循环来创立指定个结点*/ q=(pcb *)malloc(sizeof(pcb); p->next=q; q->num=i; q->next=NULL; q->priority=rand()%10+1;/*随机产生优先级*/ q->timeneed=rand()%10;/*随机产生运行时间*/ q->state=WAIT; p=q; return head;/*返回表头指针*/pcb *getmaxpriority(st
4、ruct pcb *head)/*此函数用来挑选一个优先级最大的进程来执行*/ struct pcb *p,*q; int max; p=head->next; max=p->priority;/*初始max为队首结点的优先级*/ q=p; while(p) if(p->priority>max)/*逐一比拟,选出优先级最大的结点*/ max=p->priority; q=p; p=p->next; return q;void delect(struct pcb *head,struct pcb *run)/*此函数用来将运行完的进程删除出进程队列*/ st
5、ruct pcb *q=head; while(q->next)/*扫描进程队列,找到执行完了的进程*/ if(q->next->num=run->num)/*判断是不是已完成的进程*/ if(run->next!=NULL) q->next=run->next; else q->next=NULL; free(run);/*释放申请的空间*/ return; q=q->next; void control()/*此函数是用来控制各个进程的执行和调度*/ struct pcb *p; run=head->next;/* 初始让第一个进
6、程运行*/ run->state=RUN; while(run) if(run->timeneed>0)/*如果当前run指针指向的进程所需时间不为零,状态为运行状态,就让这个进程运行*/ if(run->state=RUN) printf("pcb%d is running.n",run->num); printf("Waiting list:");/*显示整个等待队列*/ p=head->next; while(p) if(p!=run) printf("pcb%d ",p->num);
7、p=p->next; printf("n"); int delay(10000000);/*模拟进程运行*/ run->timeneed-;/*进程需要时间减一*/ run->priority=run->priority-3;/*进程优先级减三*/ if(run->timeneed!=0) if(run->priority<=head->next->priority)/*如果当前运行完的进程的优先级低于队首进程的优先*/ run->state=WAIT; run=getmaxpriority(head);/*那么从
8、进程队列中挑选一个优先级最大的进程来运行*/ run->state=RUN; else printf("pcb%d is finished.n",run->num); int delay(10000000); delect(head,run);/*删除该结点*/ if(head->next!=NULL)/*判断进程队列是不是为空*/ run=head->next; run->state=RUN; else printf("All progresses are done.n"); return; main() int n; i
9、nt flag=1; printf("Enter the number of the progresses:"); scanf("%d",&n);/*输入要创立的进程的数量*/ head=jccreat(n);/*创立进程队列,将链表的表头赋给head指针*/ run=head->next;/*run指针指向正在运行的进程的pcb*/ while(run) printf("num: %d,priority: %d,timenees: %d n", run->num, run->priority, run-&g
10、t;timeneed); run=run->next; /*将刚创立的进程队列打印出来*/ while(flag)/*由flag的值判断是否继续执行control()函数*/ if(head->next)/*判断进程是否完成*/ control(); else flag=0; int getch();2调试进程管理程序,分析程序执行过程,补齐程序中需要注释的空格;3描述程序的整个执行过程,掌握进程的创立方法及运行机制;4描述程序执行结果,并抓取图片。四、实验收获和建议1、分析实验或程序的运行过程在C-Free里新建文件,命名为“text2,把进程管理程序实例代码复制粘贴到里面中保存
11、运行,一会儿出现如下画面:Enter the number of the progresses:输入数量的进展,输入“5按Enter 键,得到如下结果2了解进程的创立及优先级进程的调度的实现原理和方法,并观察实现的结果。进程的定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。进程的创立:功能:创立一个指定标示符的进程。创立的过程及方法:1 申请空白PCB。为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白PCB。 2 为新进程分配资源。为新进程的程序和数据以及用户栈分配必要的内存空间。显然,此时操作系统必须知道新进程所需要的内存大小。 3 初始化进程控制块。PC
12、B的初始化包括:初始化标识信息。将系统分配的标识符和父进程标识符,填入新的PCB中;初始化处理机状态信息。使程序计数器指向程序的入口地址,使栈指针指向栈顶;初始化处理机控制信息。将进程的状态设置为就绪状态或静止就绪状态,对于优先级,通常是将它设置为最低优先级,除非用户以显式的方式提出高优先级要求。 4 将新进程插入就绪队列。如果进程就绪队列能够接纳新进程,便将新进程插入到就绪队列中。 程序的调试过程:由jccreat函数创立5个进程队列,创立一个空表头,用循环来创立指定的结点,随机产生5个进程的优先级和运行时间。然后返回表头指针。挑选一个优先级最大的进程来执行,然后删除已经运行完了的进程,用contorl函数来控制各个进程的执行和调度,当前run指针指向的进程所需时间不为零,状态为运行状态,就让这个进程运行,如果当前运行完的进程的优先级低于队首进程的优先级,那么从进程队列中挑选一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 法律文件审查服务合同(2篇)
- 2024-2025年高中化学 专题1 第2单元 第2课时 常见物质的检验说课稿 苏教版必修1001
- 二零二五年度儿童托管机构教师培训与认证协议
- 二零二五年度门面房产权过户合同范本
- 二零二五年度绿色建筑配套借款协议
- 二零二五年度外语出版社外教审校与编辑合同
- 二零二五年度生态保护用地使用权交换合同
- 2024-2025学年八年级物理上册 2.3 冰的熔化和水的凝固实验实验说课稿 (新版)苏科版001
- 二零二五年度美容院员工安全责任合同范本
- 2024年高考化学 实验全突破 专题07 尾气处理装置说课稿
- AQ6111-2023个体防护装备安全管理规范
- 中层领导的高绩效管理
- 小小银行家-儿童银行知识、理财知识培训
- 机械基础知识竞赛题库附答案(100题)
- 2022年上学期八年级期末考试数学试卷
- 阅读理解特训卷-英语四年级上册译林版三起含答案
- 国库集中支付培训班资料-国库集中支付制度及业务操作教学课件
- 屋面及防水工程施工(第二版)PPT完整全套教学课件
- 2023年上海青浦区区管企业统一招考聘用笔试题库含答案解析
- 2023年高一物理期末考试卷(人教版)
- 2023版押品考试题库必考点含答案
评论
0/150
提交评论