资源简介
(1)进程状态至少有运行、就绪和阻塞,相应设置运行队列、就绪队列、等待队列。
(2)设计创建进程、撤消进程、调度进程、阻塞进程、唤醒进程函数执行相应功能。
调度算法可选:时间片轮转法、先来先服务、优先级等
(3)设计用户界面(可视化界面或键盘命令),以交互式方式创建进程、撤消进程、调度进程、阻塞进程、唤醒进程等功能。
(4)能动态显示每个队列的每个进程的当前状态。
(5)程序结构合理,运行稳定、界面友好、能检查操作错误,并给出错误信息。
代码片段和文件信息
// process.cpp : Defines the entry point for the console application.
//
#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 2
//定义优先级减少的数量
#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;
//occupy_chain备用
//*occupy_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;
}
//按优先级把进程插入到link链表的适当位置
void sort_process_ready(process *p)
{
process *first *second;
int insert=0;
first=process_ready;
second=first->next;
if((p->priorty)>(first->priorty))//p的优先级比process_ready链表中所有进程的优先级都高
{
p->next=first;
process_ready=p;//跟改头结点
}
else{//
while(second!=NULL)
{
if((p->priorty)>(second->priorty))
{
p->next=second;
first->next=p;
second=NULL;
insert=1;
}
else //Low priority
{
first=first->next;
second=second->next;
}
}
if(insert==0)
{
first->next=p;
}
}
}
void sort_process_block(process *p)
{
process *first *second;
int insert=0;
first=process_blocked;
second=first->next;
if((p->priorty)>(first->priorty))//p的优先级比process_blocked链表中所有进程的优先级都高
{
p->next=first;
process_blocked=p;//跟改头结点
}
else
{//
while(second!=NULL)
{
if((p->priorty)>(second->priorty))
{
p->next=second;
first->next=p;
second=NULL;
insert=1;
}
else //Low priority
{
first=first->next;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 451584 2008-11-13 18:16 操作系统进程管理模拟\Debug\process.bsc
文件 225356 2008-11-13 18:16 操作系统进程管理模拟\Debug\process.exe
文件 309336 2008-11-13 18:16 操作系统进程管理模拟\Debug\process.ilk
文件 52644 2008-11-13 18:16 操作系统进程管理模拟\Debug\process.obj
文件 203896 2008-11-12 22:47 操作系统进程管理模拟\Debug\process.pch
文件 582656 2008-11-13 18:16 操作系统进程管理模拟\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
文件 91136 2008-11-13 18:16 操作系统进程管理模拟\Debug\vc60.idb
文件 118784 2008-11-13 18:16 操作系统进程管理模拟\Debug\vc60.pdb
文件 29677 2008-11-13 18:16 操作系统进程管理模拟\process.cpp
文件 4552 2008-11-12 23:08 操作系统进程管理模拟\process.dsp
文件 539 2008-11-12 22:44 操作系统进程管理模拟\process.dsw
文件 50176 2008-11-13 18:17 操作系统进程管理模拟\process.ncb
文件 48640 2008-11-13 18:17 操作系统进程管理模拟\process.opt
文件 2076 2008-11-13 18:16 操作系统进程管理模拟\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 2008-11-13 18:16 操作系统进程管理模拟\Debug
目录 0 2008-11-13 18:17 操作系统进程管理模拟
----------- --------- ---------- ----- ----
2180955 22
相关资源
- c语言编写的一个基于mysql简单数据管
- OPENGL分形模拟山脉
- C语言课程设计——职工管理系统
- C语言程序设计——职工档案管理系统
- 火车票订票系统模拟 (C 语言)
- 日历管理系统.cpp
- 通讯录管理系统c++版顺序表存储,折
- 初学者学习C++ Builder第一个程序模拟聊
- 初学者学习C++ Builder第一个程序模拟聊
- 数据结构课程设计应用索引文件和查
- 操作系统进程调度算法——短作业优
- 学生选课管理系统 C++
- 文件目录管理系统.cpp
- C语言 个人通讯录管理系统
- 浙工大C++通关考模拟题代码
- c语言多进程多线程编程
- C语言 车辆出租管理系统
- 学生管理系统,mfc做的,本人课设作
- C语言车辆管理系统
- 模拟的DBMS
- C++课程设计公司人员管理系统
- 车辆信息管理系统课程设计完整源代
- C++ 家庭理财管理系统
- 基于VisualC++ 6.0的服装试穿管理系统
- C++写的车辆信息管理系统
- 学生选课管理系统C++
- c语言模拟ftp项目
- 仪器仪表管理源C语言代码
- 运动会成绩管理系统C语言
- C语言战争模拟器源码
评论
共有 条评论