- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一 进程管理
一、实验目的
进程调度是处理机管理的核心内容,本实验要求编写额调试一个简单的进程调度程序,通过程序的编写加强对进程概念的理解。
二、实验仪器
1、PC兼容机
2、Windows、DOS系统
3、C语言
三、实验内容及要求
1. 通过C语言创建新的进程;查看运行进程;换出某个进程;杀死运行进程;进程之间通信以及进程调度等功能。
2. 为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的优先数或轮转时间数以及进程需运行的时间片数的初始值均由用户给定。
3. 进程调度算法有优先数调度算法和时间片轮转调度算法。
(1). 在优先权(优先数)算法中,优先数可以先取值为一数值50(例如,每个进程的优先数的初始值为(50减去NEEDTIME)),进程每执行一次,优先数减3,CPU已运行时间片数加1,进程还需要的时间片数减1。对于遇到优先数一致的情况,采用FIFO策略解决。注意:每次执行完后,都需要重新判断优先权(当前优先权减3)。
(2). 在时间片轮转算法中,采用固定时间片,即:进程每执行一次,执行一个CPU时间片,1个时间片包含2个时间单位,一个时间片结束时,进程已使用CPU时间数加2,进程还需要的CPU时间数减2,如还有任务未完成需要重新到就绪队列排队。
四、实验设计结果及代码
代码:
// ggg.cpp : Defines the entry point for the console application.
//
#include stdafx.h
#include stdlib.h
#include string.h
#include conio.h
void create();
void diaodu(char name[100],int needtime[100],int n);
void youxian(char name[100],int needtime[100],int n);
void mainmenu(char name[100],int needtime[100],int n);
void chakan(int n);
void huan(int n);
void delet(int n);
void shijian();
char name[100]={0};
int time[100]={0};
int n;
int num=0;//进程数目
int needtime[100]={0};
int priority[100]={0};
char *state[100]={0};
#define ready 0
#define finish 1
struct pcb
{
char name[10];
int priority;
int state;
int needtime;
int runtime;
int time;
struct pcb *next;
};
typedef struct pcb PCB;
PCB *head=NULL;
void diaodu(char name[100],int needtime[100],int n)
{int a;
printf(\n\n选择调度算法:);
printf(\n1 优先数算法);
printf(\n2 时间片轮转算法);
printf(\n3 退出);
printf(\n请选择(1~3) :);
scanf(%d,a);
switch(a)
{
case 1: youxian(name,needtime,n);break;
case 2: shijian();break;
case 3: break;
}
// mainmenu();
}
void shijian()
{ int Fnum=50;
int i,j,cputime=0;
int n;
printf(输入创建进程个数:\n);
scanf(%d,n);
printf(创建新的进程\n);
printf(请输入进程名和时间(例如:A 2):\n);
for(i=0;in;i++)
{scanf(%s,(name[i]));
scanf(%d,needtime[i]);
cputime=cputime+needtime[i];
time[i]=0;
state[i]=ready;
}
j=0;
for(i=0;icputime;i++)
{
printf(cputime:%d\n,i+1);
printf( name cputi
文档评论(0)