计算机操作系统上机实验报告

上传人:xzh****18 文档编号:44605365 上传时间:2018-06-14 格式:PDF 页数:8 大小:287.29KB
返回 下载 相关 举报
计算机操作系统上机实验报告_第1页
第1页 / 共8页
计算机操作系统上机实验报告_第2页
第2页 / 共8页
计算机操作系统上机实验报告_第3页
第3页 / 共8页
计算机操作系统上机实验报告_第4页
第4页 / 共8页
计算机操作系统上机实验报告_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《计算机操作系统上机实验报告》由会员分享,可在线阅读,更多相关《计算机操作系统上机实验报告(8页珍藏版)》请在金锄头文库上搜索。

1、计算机操作系统上机实验报告 -进程控制 实验描述实验描述实验描述实验描述: 进程调度是处理机管理的核心内容。 本实验要求编写和调试一个简单的进程调度 程序。通过本实验可以加深理解有关进程控制块、进程队列的概念,并体会和了解优先数和 时间片轮转调度算法的具体实施办法。 【目的】【目的】【目的】【目的】 1通过实验进一步掌握进程控制的方法 2复习与C语言有关的内容 3复习与数据结构有关的内容 【实验要求】【实验要求】【实验要求】【实验要求】 1 设计一个程序模拟进程创建的模拟过程 2 设计有n各进程的程序,其中每个进程控制块PCB中包含: 进程标识号 (ID) , 进程优先数 (Priority)

2、 , 进程状态标志 (State) , 进程进入CPU的时间 (In) , 程序需要运行的时间(Alltime)等 3 PCB中的信息全部放在Pcb.txt文件中 ID Priority In Alltime 1 2 8:00 120 2 3 9:00 50 3 1 9:50 30 4 4 9:52 20 4、 PCB块联接在一个单链表中形成就绪对列,该对列按进程的优先级的高低排列,并在 屏幕上显示其内容 5、 上各功能均通过单独的函数实现,pcb.txt文件内容的应能测试。 小组成员及其分工情况小组成员及其分工情况小组成员及其分工情况小组成员及其分工情况: 小组成员 学号 联系方式 主要工作

3、 杨斌(组长) 1923216 yangbin_ 对小组成员分配模块任务 负责整个框架模块的搭建并完成读文 件、初始化链表、排序等函数 实验报告的内容填写 陆嘉 1923219 静态优先级进程调度代码函数 时间片轮转法进程调度函数 实验报告的内容填写 张俊嵩 1923212 列节点模块 时间片轮转法进程调度函数 实验报告的内容填写 实验原理实验原理实验原理实验原理: 通过 c 语言和数据结构灵活运用进行思考设计。 1) 文本内容数据类型以一结构体表示一行(结构体内含有进程所需要的属性) 2) 接受文本内容的类(该类用来形成队列的节点,含有pcb所需要的属性和各种行为) 3) 用来模拟进程调

4、度所需要的链表(以类b的对象为结点) 控制过程概述控制过程概述控制过程概述控制过程概述: 先创建pcb.txt,然后读出文本,并用链表将其存放,再排序(以时间和优先级排) ,然后运用 调度策略进行管理。 实验流程图实验流程图实验流程图实验流程图: 我们把实验流程图分为静态优先级策略调度和时间片轮转法两个模块 静态优先级策略调度流程图静态优先级策略调度流程图静态优先级策略调度流程图静态优先级策略调度流程图: 否 是 是 其他 最高 否 优先级低 优先级高 否 是 进程请求 调入就绪队列并排序 是否到该进程的时间 当前进程是否完成 进入执行队列 继续执行 cpu 里的内容 就执头比较 时间片是否到

5、 优先级判断 是否有多进程 调入阻塞队列 打印 时间片轮转法,进程调度实现流程图时间片轮转法,进程调度实现流程图时间片轮转法,进程调度实现流程图时间片轮转法,进程调度实现流程图 是 否 否 是 否 是 是 否 否 是 否 是 等待队列中结点是否该被激发 将结点插入就绪队列 执行队列是否为空 将就绪队列的头结点 插入到执行队列 该结点根据优先级分配到时间片, 时间片减 1, 结点的总运行时间减 1 结点的总运行时间是否为 0 打印该结点信息并删除结点 时 间 片 是 否为 0 将结点插入就绪时间片减 1, 总运行时间减 1 系统时间加 1 等待队列|就绪队列|执行队列= = 空 结束 就绪队列是

6、否为空 主要实现步骤主要实现步骤主要实现步骤主要实现步骤: 1、 小组成员共同就实验要求进行讨论, 弄清进程管理的基本思想和流程, 制定出具体的进 度计划并分配了相关的任务。 2、 小组成员各自根据要求完成任务,在此过程中任务会根据新的要求有所变化,各结构及 函数等都会有相应的变化,此步骤也是完善的过程。 3、 把各成员完成的代码组合起来,调试修改,编译通过。 4、 程序测试。用各种数据进行测试,发现程序的bug,慢慢的完善它。 5、 完成实验报告的填写和交作业。在实验的过程中就开始根据完成度填写实验报告。 主要算法主要算法主要算法主要算法: typedef struct PCB/定义 PCB

7、 结点类型 int ID; /PCB 的序列号 int Priority; /PCB 的优先级 int Intime; /进程的进入时间 int Alltime; /进程运行总时间 struct node *next; PCB 链表结构: ADT pcblist 数据对象:D=ai | alElemSet,i=1,2,n,n=0 数据关系:R1=|ai-1,aiD,i=2,n Init(int n) 操作结果:初始化链表 Delet_h() 操作结果:删除头结点 Insert_t(pcbnode * p) 操作结果:在链表尾插入结点 Addnode(pcbnode *p) 操作结果:根据优先级

8、将 p 所指结点插到合适的位置 Delnode() 操作结果:删除结点,仅用于执行队列 算法设计细节(详细设计) :算法设计细节(详细设计) :算法设计细节(详细设计) :算法设计细节(详细设计) : /从文件里读出来的结构体 class filenode public: int id; int priority; int starttime; int alltime; public: friend class pcblist; filenode();/构造函数初始化 int getid(); /返回id int getpri();/返回priority int getsttime();/返回

9、starttime int getalltime();/返回alltime void begaintiming();/开始计时 ; Class pcbnode:filenode/pcb节点类 private: filenode file; int state; /pcb状态标志,0是等待,1就绪,2阻塞,3执行 pcbnode *next;/指向下一个pcbnode的指针 static pcbnode *head;/第一个pcbnode的地址,初始链表的头指针 public: friend class pcblist; pcbnode();/构造函数 setready();/设定该pcbnod

10、e为就绪状态 setblock();/设定该pcbnode为阻塞状态 setexcute();/设定该pcbnode为执行状态 print();/打印出来元元素 ; class pcblist/pcb链表的类 private: pcbnode *head;/头指针 pcbnode *tail;/尾指针 pcbnode *pnow;/指向链表的目前节点 public: pcblist();/构造函数 int readn();/返回文件中记录的个数 void paixutime(filenode *r_file,int n);/按时间排序 int init(int n);/初始化链表,用到head

11、指针 filenode *readfile(filenode *r_file,int n);/读文件,返回数组指针 void insert_t(pcbnode * p);/在链表尾插入结点 void delet_h();/删除头结点 bool isempty();/检查链表是否为空 void setempty();/设置链表为空 void addnode(pcbnode *p);/添加结点到链表尾部 void addnodepri(pcbnode *p);/根据优先级把p所指结点插入合适位置 void setnowhead();/把头转给pnow void next();/指向下一个 pcbn

12、ode* getnow();/得到当前节点指针 void delnode();/删除节点,用在执行队列,功能有限 void movenode();/移走节点,暂时用在执行队列,先简单实现,功能还待补充 pcbnode* gethead();/返回头结点 void print();/打印 ; void os();/静态优先级进程调度 void Timeopie_os();/时间片轮转法进程调度 实验日程安排实验日程安排实验日程安排实验日程安排 (1)10月10日:具体确定各模块的功能和任务,详细到类的属性方法名 (2)1420日:小组成员接到具体任务并开始工作,完成任务 (3)2125日:代码整

13、合、调试修复bug、整体测试和完成实验报告 (4)10月27日:有新实验任务进程调度,讨论并分配新任务 (5)11月初:对新任务进行研究讨论 (6)11月18日:代码整合、调试修复bug、整体测试和完成实验报告 实验实验实验实验测试:测试:测试:测试: 我们把实验测试结果的 debug 用文字表述如下: 1. 静态优先级进程调度测试:静态优先级进程调度测试:静态优先级进程调度测试:静态优先级进程调度测试: 数据:1,1,2,8 2,1,9,11 结果: 等待队列: now print node 顺序 进程 id 优先级 开始时间 运行时间 进程状态 1 1 1 2 8 0 2 2 1 9 11

14、 0 该队列打印完毕! 就绪队列: 该队列为空! 执行队列: 该队列为空! 等待队列: now print node 顺序 进程 id 优先级 开始时间 运行时间 进程状态 1 2 1 9 11 0 该队列打印完毕! 就绪队列: 该队列为空! 执行队列: now print node 顺序 进程 id 优先级 开始时间 运行时间 进程状态 1 1 1 2 3 3 该队列打印完毕! 等待队列: 该队列为空! 就绪队列: 该队列为空! 执行队列: now print node 顺序 进程 id 优先级 开始时间 运行时间 进程状态 1 2 1 9 9 3 该队列打印完毕! 等待队列: 该队列为空! 就绪队列: 该队列为空! 执行队列: now print node 顺序 进程 id 优先级 开始时间 运行时间 进程状态 1 2 1 9 4 3 该队列打印完毕! Press any key to continue 2. 时间片轮转法进程调度测试:时间片轮转法进程调度测试:时间片轮转法进程调度测试:时间片轮转法进程调度测试: 数据:1,1,2,8 2,1,9,11 结果: 等待队列: 该队列为空! 就绪队列: now print node 顺序 进程 id 优先级 开

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号