⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 process.cpp

📁 首先这个程序是在Linux下写的
💻 CPP
字号:
#include <stdio.h>
#include <string.h>

#define ESC   27
#define SPACE 32
#define COMMAND_COUNT	6
#define W_PROCEEE_ARRAY_LENGTH  15
#define PRINTPCB printf("%d\t%s\t%d\t%d\t%s",q->pcb,q->name,q->cputime,q->needtime,q->status)

char cmd[COMMAND_COUNT][10]={"CREATE","KILL","BLOCK","WAKEUP","SPACE","EXIT"};


int running = -1;

/******************************************/
/***********	队列结构	***************/
#define QLENGTH 10

struct queue{
	int array[QLENGTH];
	int b;
	int e;
	int size;
};

void push(struct queue *q,int pid)
{
	if( q->size >= QLENGTH ){
		printf("\n队列空间不足,请修改QLENGTH值增加空间\n");
		printf("闃熷垪婊′簡!\n");
	}
	else{
		q->array[q->e]=pid;
		q->e += QLENGTH+1;
		q->e %= QLENGTH;
		++(q->size);
	}
}

int pop(struct queue *q)
{
	if(q->size<=0){
		printf("队列中没有数据\n");
//		printf("娌℃湁杩涚▼!\n");
	}
	else{
		int r=q->array[q->b];
		q->b += QLENGTH+1;
		q->b %= QLENGTH;
		--(q->size);
		return r;	
	}
	return -1;	
}

int front(struct queue *q)
{
	if(q->size>0)
		return q->array[q->b];
	return -1;
}

void delque(struct queue *q,int pid)
{
	int b1;
	int b=q->b,
		e=q->e;
	while(b!=e){
		if(q->array[b]==pid){
			while(b!=e){
				b1 = b+1;
				b1 %= QLENGTH;
				q->array[b] = q->array[b1];
				b = b1;
			}
			q->array[e] = 0;
			e += QLENGTH -1;
			e %= QLENGTH;
			q->e = e;
			break;
		}
		b += QLENGTH+1;
		b %= QLENGTH;
	}//end_while
}

/******************************************/

struct queue readyq, blockedq;

/******************************************/
/***********	进程结构	***************/
struct process{
	int pid;
	char name[10];
	char status[10];
	int cputime;
	int needtime;
}proarr[W_PROCEEE_ARRAY_LENGTH];

void initprocess()
{
	int i=0;
	for(i=0; i<W_PROCEEE_ARRAY_LENGTH; ++i)
	{
		proarr[i].pid=-1;
		strcpy(proarr[i].name,"");
		strcpy(proarr[i].status,"");
		proarr[i].cputime = 0;
		proarr[i].needtime = 50;
	}
}

int findpid(int pid)
{
	int i=0;
	for(i=0; i<W_PROCEEE_ARRAY_LENGTH; ++i)
	{
		if(proarr[i].pid==pid)
			return i;
	}
	return -1;
}


/******************************************/
/***********	进程调度	***************/
void dispatch();

int create()
{
	static int pid=1;
	
	int i=0;
	while(proarr[i].pid!=-1 && i< W_PROCEEE_ARRAY_LENGTH) ++i;
	if(i>=W_PROCEEE_ARRAY_LENGTH){
		printf("警告:进程存储空间不足!!!\nnn");
		exit(0);
	}
	else{
		printf("请输入进程名称:");
		scanf("%s",proarr[i].name);
		proarr[i].pid=pid;
		strcpy(proarr[i].status,"ready");
		proarr[i].cputime = 0;
		proarr[i].needtime = 50;
		
		push(&readyq,pid);
		++pid;
		printf("创建进程成功!\n");
//		printf("娌℃湁鍐呭瓨鍙

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -