第一范文网 - 专业文章范例文档资料分享平台

操作系统实验报告 实验一

来源:用户分享 时间:2025/7/5 23:00:57 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

昆明理工大学信息工程与自动化学院学生实验报告

( 2012 —2013 学年 第 二 学期 )

课程名称:操作系统 开课实验室:信自楼445 2011 年 4 月 18 日 年级、专业、班 学号 姓名 实验项目名称 教师评 教师签名: 进程管理 指导教师 舒国锋 成绩 语 年 月 日 一、实验要求:

对一个非抢占式多道批处理系统采用以下算法的任意两种,实现进程调度,并计算进程的开始执行时间,周转时间,带权周转时间,平均周转时间,平均带权周转时间

1.先来先服务算法 2.短进程优先算法 3.高响应比优先算法 二、实验目的

通过编写进程管理的算法,要求学生掌握整个进程管理的各个环节,进程的数据结构描述,进程的各种状态之间的转换,以及进程的调度算法。以加深对进程的概念及进程调度算法的理解,并且提高链表的应用能力,达到提高编程能力的目的。

三、实验原理及基本技术路线图(方框原理图)

用C语言或C++语言开发。需要定义PCB的数据结构,用链表的形式管理进程,采用多级反馈队列调度的算法模拟进程的控制。要求有创建、撤销、调度、阻塞、唤醒进程等功能。

输入开始进程数n 创建n个PCB并加入ready-queue中 ready-queue是否为-1- Y N Running<=id Running<=逐个将redy_pc中的PCB

N 阻塞Running

Y Y Running=idle

N 将Running从ready_queue中删除,再将running加入block_queueb 更新新进程就绪队列进程优先数,优先数加1

N 是否创建新PCB

Y

创建新进程并加入到ready_queue中

随机 对block_queue中的进程PCB询问是否要唤醒? Y 处理完了吗

N N 是否要唤醒

Y 将其从 blick_queuek 队列是中删除,再将其加入 ready_queuek

输入开始进程数n 创建n个PCB并加入ready-queue中 ready-queue是否为 N

Running<=逐个将redy_pc中的PCB

-2- Y Running<=id N 阻塞Running

Y Y Running=idle

N 将Running从ready_queue中删除,再将running加入block_queueb N 是否创建新PCB

Y

创建新进程并加入到ready_queue中

随机 对block_queue中的进程PCB询问是否要唤醒 ? Y 处理完了吗

N N 是否要唤醒

Y 将其从blick_queuek队列是中删除,再将其加入ready_queuek Y

四、所用仪器、材料(设备名称、型号、规格等)。 计算机一台

五、实验方法、步骤 源代码:

#include \#include \#include \#define NULL 0 #define false 0 #define true 1 bool _state=0;

-3-

struct PCB { };

void init();/*产生idle进程,输入用户进程数目,调用insert()*/ void print(PCB *pcb);/*输出进程属性信息*/

void print_init(PCB *pcb);/*输出所有PCB的初始值*/ void insert();/*生成进程属性信息,插入进程就绪队列*/

void Run_priority(PCB *pcb);/*运行进程,随机阻塞进程、产生新进程,插入就绪队列,唤醒阻塞进程*/

void block(PCB *pcb);/*调用destroy()将进程插入阻塞队列*/ void wakeup();/*唤醒进程,插入就绪队列*/ void proc_priority();/*优先权调度算法模拟*/ //void Run_loop(PCB *pcb);

void proc_loop();/*轮转法调度算法模拟*/ void update(PCB *pcb);/*更新进程信息*/

void pushback_queue(PCB *queue,PCB *item);/*将item插入到队列的尾部*/

void insert_queue(PCB *queue,PCB *item);/*将item插入到队列中,使得插入后,队列中按照优先级从高到低有序*/

void sort_queue(PCB *&queue);/*对queue中的结点进行排序,按照优先级从大到小*/ PCB *ready_queue,*block_queue,*idleprocess;/*就绪队列,阻塞队列及闲逛进程指针变量*/ int main(int argc, char* argv[]) {

int ID; int priority; int CPUtime; int ALLtime; int State; PCB* next;

int i=0; while(1) {

cout<<\

-4-

搜索更多关于: 操作系统实验报告 实验一 的文档
操作系统实验报告 实验一.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c4d2hl2jy9e1wxgu8jpt9_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top