操作系统实验1--进程管理.doc

操作系统实验1--进程管理.doc

ID:61488601

大小:23.50 KB

页数:5页

时间:2021-02-05

操作系统实验1--进程管理.doc_第1页
操作系统实验1--进程管理.doc_第2页
操作系统实验1--进程管理.doc_第3页
操作系统实验1--进程管理.doc_第4页
操作系统实验1--进程管理.doc_第5页
资源描述:

《操作系统实验1--进程管理.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、设计一个有N个进程的进程调度程序一、实验目的通过一个简单的进程调度模拟程序的实现,加深对各种进程调度算法,进程切换的理解。二、实验内容1、进程调度算法:采用动态最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)。2、每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:l进程名----进程标示数ID;l优先数----Priority,优先数越大优先权越高;l到达时间----进程的到达时间为进程输入的时间;l进程还需要运行时间----AllTime,进程运行完毕AllTime=0;l已用CPU时间----CPUTime;l进程的阻塞时间Start

2、Block----表示当进程在运行StartBlock个时间片后,进程将进入阻塞状态;l进程的阻塞时间StartTime----表示当进程阻塞StartTime个时间片后,进程将进入就绪状态;l进程状态----State;l队列指针----Next,用来将PCB排成队列。3、调度原则l进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间;l进程的运行时间以时间片为单位进行计算;l进程在就绪队列中带一个时间片,优先数加1;l每个进程的状态可以是就绪R(Ready)、运行R(Run)、阻塞B(Block)、或完成F(Fini

3、sh)四种状态之一;l就绪进程获得CPU后都只能运行一个时间片,用已占用CPU时间加1来表示;l如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减3,然后把它插入就绪队列等待CPU;l每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进行检查;l重复以上过程,直到所要进程都完成为止。三、实验要求完成实验内容并写出实验报告,报告应具有以下内容:1、实验目的。2、实验内容。3、程序及运行情况。4、实验过程

4、中出现的问题及解决方法。#include#includeenumSTATE{Ready=1,Run,Block,Finish};structPCB{intID;//进程名intPriority;//优先数intTime;//到达时间intAllTime;//进程还需要运行时间intCPUTime;//已用CPU时间intStartBlock;//进程的进入阻塞时间intStartTime;//进程的等待阻塞时间STATEState;//进程状态PCB*Next;//队列指针}*ready=NULL,*p;voidSort(){//

5、建立对进程进行优先级排列函数PCB*first,*second;intinsert=0;if(ready==NULL

6、

7、(p->Priority>ready->Priority))//优先级最大者,插入队首{p->Next=ready;ready=p;}else//进程比较优先级,插入适当的位置中{first=ready;second=first->Next;while(second!=NULL){if(p->Priority>second->Priority)//若插入进程比当前进程优先数大{//插入到当前进程前面p->Next=second;first->Next

8、=p;second=NULL;insert=1;}else//插入进程优先数最低,则插入到队尾{first=first->Next;second=second->Next;}}if(insert==0)first->Next=p;}}voidInput(){//输入进程控制块信息inti,num;//clrscr();/*清屏*/printf("请输入进程数量:");scanf("%d",&num);for(i=0;iID=i+1;printf("输入进程%d的信息:

9、",p->ID);printf("进程优先数:");scanf("%d",&p->Priority);printf("进程需要运行时间:");scanf("%d",&p->AllTime);p->Time=3*i;p->CPUTime=0;p->StartBlock=0;p->StartTime=0;p->State=Ready;p->Next=NULL;printf("");Sort();/*调用sort函数*/}}intLength(){intl=0;PCB*pr=ready;while(pr!=NULL){l++;pr=pr->

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。