文档详情

中南大学操作系统课程设计.docx

发布:2015-09-21约4.57千字共10页下载文档
文本预览下载声明
中南大学 本科生课程设计(实践)任务书、设计报告 (计算机操作系统课程设计) 题 目调度算法的模拟学生学号学生姓名指导教师学 院信息科学与工程学院专业班级指导老师 2013年12 月 一、实验任务 1.进一步理解进程的基本概念。 2.加强进程管理中主要数据结构的设计及进程调度算法。 3.观察和管理进程——系统在运行过程中可显示或打印各进程的状态及有关参数的变化情况。 二、实验设计思想 1.实验原理 定义PCB的数据结构,用链表的形式管理进程,采用多级反馈队列调度的算法模拟进程的控制,最终完成有创建、撤销、调度、阻塞、唤醒进程等功能。 2.数据结构 类: class queuenode class queue 函数: void enqueue( char item); char dequeue(); void del(char item); void display(); int find(char item); int isempty() 3.算法描述 1-1、创建进程,根据进程的顺序依次放入就绪队列。 2-1、执行进程——管理系统将就绪队列中的第一个进程调入运行队列; 2-2、将阻塞队列中进程调入就绪队列; 2-3、封锁进程——管理系统将就绪队列中的第一个进程调入阻塞队列; 2-4、结束进程——管理系统撤销所选进程; 2-5、结束程序。 4. 算法流程图 输入进程信息 执行进程 将阻塞队列的进程调入就绪队列 封锁进程 结束进程 退出操作 输入要进行操作的功能选项 1 2 3 4 5 进行所选进程操作 选1且进程正在执行 Y 操作不能执行 选择# N N N 选择5 Y Y 开始 结束 三、实验实现源代码 #includeiostream.h class queuenode //定义队列数据结构 { friend class queue; private: char data; queuenode * link; queuenode (char d=0,queuenode * l=NULL): data(d),link(l){} }; class queue { public: queue():rear(NULL),front(NULL){}; ~queue(); void enqueue( char item); char dequeue(); void del(char item); void display(); int find(char item); int isempty(){return front==NULL;} private: queuenode *front,*rear; }; queue::~queue() { queuenode * p; while(front!=NULL) { p=front;front=front-link;delete p; } } void queue::enqueue(char item) { if(front==NULL)front=rear=new queuenode(item,NULL); else rear=rear-link=new queuenode(item,NULL); } char queue::dequeue() { queuenode *p=front; char f=p-data;front=front-link; delete p; return f; } void queue::display()//队列输出 { queuenode *p; p=front; while(p!=NULL) { coutp-data-; p=p-link; } coutNULL; } queue::find(char item)//队列查找 { queuenode *w; w=front; M:while(w!=NULL) { if(item==w-data) { return 1;break; } else { w=w-link; goto M; } } if(w==NULL) return 0; } void queue::del( char item)//队列删除 { queuenode *q,*b; q=front; while(q-data!=item) {b=q; q=q-link; } if(q==front) {front=front-link; delete q;} else if(q=
显示全部
相似文档