资源简介
这个是我操作系统课设的进程管理模块,用c++做的,希望对你有用
代码片段和文件信息
#include “stdafx.h“
#include “stdio.h“
#include “stdlib.h“
#include “string.h“
#include “iostream.h“
#include //要用到格式控制符
//定义“空”
#define null 0
//定义不再切割的剩余分区大小
#define size 5
//定义内存总量大小
#define memory_totalsize 100
//定义时间片
#define TIME_PIECE 5
//定义优先级减少的数量
#define PRIORITY 0
//定义进程结构体
struct process
{
char name[40];//进程名字
float memory_need;//进程所需内存
char state[10]; //进程状态
int priorty; //优先级
int alltime; //总共所需运行时间
int cputime; //该进程在CPU中运行的总时间
struct process *next;//指向下一个进程
}*process_ready *process_blocked *process_e; //将正在执行的进程设置为一全局变量
//定义内存分配结构体
struct memory_allocation
{
struct memory_allocation *forward;//指向前一个空间
char process_name[40];//进程名
float start_address;//进程开始地址
float memory_size;//进程占用内存大小
int state;//内存占用状态
struct memory_allocation *after;//指向后一个空间
}*free_chain;
void process_excute();//把就绪队列的第一个转换成执行状态
void process_ready_delete();//在就绪队列删除一个进程
void process_blocked_delete();//在阻塞队列中删除一个进程
struct memory_allocation *memory_largestselect();
int process_createjudge(struct process *process_temp);
void memory_allo(struct process *temp_process);
void memory_free(struct process *temp_process);
struct memory_allocation *memory_bestselect(struct process *temp_process);
void process_display();//显示系统中所有进程的信息
void process_end();//终止正在运行的进程
void sort_process_ready(process *p);//按优先级把进程插入到就绪链表的适当位置
void sort_process_block(process *p);
//初始化内存
void memory_init(){
free_chain = (struct memory_allocation *)malloc(sizeof(struct memory_allocation));//分配空间
strcpy(free_chain->process_name “null“);
free_chain->start_address = 0;
free_chain->memory_size = memory_totalsize;
free_chain->state = 0;
free_chain->forward = null;
free_chain->after = null;
}
//创建进程函数 process_create()
void process_create()
{
struct process *process_temp *process_p;
//申请内存空间并赋值
process_temp = (struct process *)malloc(sizeof(struct process));
printf(“\n创建进程:\n“);
printf(“请输入所要创建的进程的“名字”: “);
scanf(“%s“process_temp->name);
do{
printf(“请输入所要创建的进程“内存需求(0 scanf(“%f“&process_temp->memory_need);
}while((process_temp->memory_need)<=0);
do{
printf(“请输入所要创建的进程的“优先级(0 scanf(“%d“&process_temp->priorty);
}while((process_temp->priorty)<=0||(process_temp->priorty)>10);
do{
printf(“请输入所要创建的进程总共所需的“运行时间(0 scanf(“%d“&process_temp->alltime);
}while((process_temp->alltime)<=0||(process_temp->alltime)>=50);
strcpy(process_temp->state“ready“);//刚创建的进程设置成ready态
process_temp->cputime=0;//刚创建的进程在CPU中运行了0次
process_temp->next = null;
int temp = process_createjudge(process_temp);
if(temp == 0){
//分配内存
memory_allo(process_temp);
//将新建的进程加入到就绪队列中
if(process_ready == null){//如果就绪队列为空,那么把新进程加到就绪队列的第一位
process_ready = process_temp;
}else{//如果就绪队列不为空,那么按优先级把新进程加到就绪队列的适当位置
sort_process_ready(process_temp);
}
printf(“进程 %s 已经创建成功并加入到就绪队列中...\n“ process
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 451584 2008-11-13 18:16 操作系统进程管理模拟\Debug\process.bsc
文件 225409 2010-12-24 09:07 操作系统进程管理模拟\Debug\process.exe
文件 311748 2010-12-24 09:07 操作系统进程管理模拟\Debug\process.ilk
文件 44240 2010-12-24 09:07 操作系统进程管理模拟\Debug\process.obj
文件 2075512 2010-12-21 19:51 操作系统进程管理模拟\Debug\process.pch
文件 582656 2010-12-24 09:07 操作系统进程管理模拟\Debug\process.pdb
文件 0 2008-11-13 18:16 操作系统进程管理模拟\Debug\process.sbr
文件 2261 2008-11-12 22:47 操作系统进程管理模拟\Debug\StdAfx.obj
文件 4073 2008-11-12 22:47 操作系统进程管理模拟\Debug\StdAfx.sbr
文件 148480 2010-12-24 09:07 操作系统进程管理模拟\Debug\vc60.idb
文件 118784 2010-12-24 09:07 操作系统进程管理模拟\Debug\vc60.pdb
文件 26872 2010-12-24 09:08 操作系统进程管理模拟\process.cpp
文件 3413 2010-12-24 09:07 操作系统进程管理模拟\process.dsp
文件 539 2010-12-24 09:10 操作系统进程管理模拟\process.dsw
文件 58368 2010-12-24 09:10 操作系统进程管理模拟\process.ncb
文件 48640 2010-12-24 09:10 操作系统进程管理模拟\process.opt
文件 2079 2010-12-24 09:07 操作系统进程管理模拟\process.plg
文件 2506 2008-11-13 18:22 操作系统进程管理模拟\ReadMe.txt
文件 294 2008-11-12 22:44 操作系统进程管理模拟\StdAfx.cpp
文件 769 2008-11-12 22:44 操作系统进程管理模拟\StdAfx.h
目录 0 2010-12-24 09:07 操作系统进程管理模拟\Debug
目录 0 2010-12-24 09:10 操作系统进程管理模拟
----------- --------- ---------- ----- ----
4108227 22
评论
共有 条评论