广工操作系统2015实验报告

实 验 报 告

课程名称操作系统实验 学生学院计算机学院 专业班级计算机科学与技术

学 号

学生姓名

指导教师 孙为军

2015 年12月30日

实验一 进程调度

一、实验目的

编写并调试一个模拟的进程调度程序,以加深对进程的概念及进程调度算法的理解.

二、实验内容

1. 采用“短进程优先”调度算法对五个进程进行调度。每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、到达时间、需要运行时间、已用CPU时间、进程状态等等。

2. 每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。 每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。重复以上过程,直到所要进程都完成为止。

三、实现思路

先考虑实现进程调度所需要的数据结构,然后根据所需要的算法进行设计。

四、主要的数据结构

进程控制块PCB:

struct pcb {

char name[10];

char state; int ntime; int rtime; struct pcb* link;

}*ready=NULL,*p;

五、算法流程图

六、运行与测试

输入进程信息:

输入完毕,显示当前运行以及就绪的进程:

优先运行短进程

七、改进的方向

界面比较难看,可以中文化信息。

实验二 作业调度

一、 实验目的

用高级语言编写和调试一个或多个作业调度的模拟程序,以加深对作业调度算法的理解。

二、 实验内容

1.写并调试一个单道处理系统的作业等待模拟程序。

2.作业等待算法:分别采用先来先服务(FCFS)、响应比高者优先(HRN)的调度算法。

3.由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的 CPU时限等因素。

4.每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之

一。每个作业的最初状态总是等待W。

5.对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间。

三、实现思路

首先根据题目的要求,先设想出作业调度所需的数据结构,包括题目中的作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针以及在作业运行完成后需要现实的信息包括开始运行时刻、完成时刻、周转时间、带权周转时间。

在完成数据结构的构造后,在对每一个模块进行编写。在作业调度中,与实验一的进程调度有所不同的是需要增加一个总体的变量,运行的时间。在本实验中需要实现两种不同的算法,所以这也需要特别去考虑。

四、主要的数据结构

作业控制块jcb

struct jcb

{

char name[10];

int tjtime;

int kstime;

int ntime;

int nresource;

float super;

int ftime;

float zztime;

float dqtime;

char state;

struct jcb *link;

}*ready=NULL,*p,*q;

五、算法流程图

六、运行与测试

运行程序后首先选择一个算法:

首先先选择先来先服务算法,输入作业数据后,显示各个作业,并显示开始运行时刻、完成时刻、周转时间、带权周转时间:

运行了三次后,可以看出目前的算法是先来先服务算法:

所有作业运行结束后,显示平均周转时间以及平均带权周转时间:

现在选择响应比高者优先算法,并输入一组新数据后显示:

运行一次后,由于C的相应比高于B,所以先运行:

完成运行后显示相应的数据:

七、改进的方向

界面可以改进成图形界面,可以实现将运行完的作业保留下来并且在其运行状态改为F的功能,还可以实现在所有作业运行完毕后将所有作业的相关数据集合成一张简单的表的功能。

实验三 动态分区分配方式的模拟

1、实验目的

了解动态分区分配方式中的数据结构和分配算法,并进一步加深对动态分区存储管理方式及其实现过程的理解

2、实验内容

1. 用C语言分别实现采用首次适应算法和最佳适应算法的动态分区分配过程和回收过程。其中,空闲分区通过空闲分区链(表)来管理;在进行内存分配时,系统优先使用空闲区低端的空间。

2. 假设初始状态下,可用的内存空间为640KB,并有下列的请求序列: •作业1申请130KB

•作业2申请60KB

•作业3申请100KB

•作业2释放60KB

•作业4申请200KB

•作业3释放100KB

•作业1释放130KB

•作业5申请140KB

•作业6申请60KB

•作业7申请50KB

•作业8申请60KB

请分别采用首次适应算法和最佳适应算法进行内存的分配和回收,要求每次分配和回收后显示出空闲内存分区链的情况。

三、实现思路

使用双向链表来表示存储空间,整题的总体思路在于操作该链表,只是在分配空间需要考虑不同的算法实现。

四、主要的数据结构

空闲区说明表结构

typedef struct FreeA

{

int NUM; long size; long address; int state;

}ElemType;

双向链表存储结构

typedef struct NLNode

{

ElemType data; struct NLNode *prior; struct NLNode *next;

}NLNode,*NLinkList;

五、算法流程图

六、运行与测试

运行程序,显示选择两种不同算法的界面:

选择首次适应算法,直接显示当前的分配情况以及有两个分配回收内存的功能:

根据题目要求输入相应的请求序列:

选择最佳适应算法,再次输入题目要求的作业请求序列:

七、改进的方向

界面可以改进成图形界面,增加对主存剩余地址的输出,增加更多种的内存动态分配的算法以及对内存操作的功能。

实验四 多级反馈调度队列调度算法

一、实验内容

用高级语言实现多级调度,调度算法自由选择。本实验选择两道处理系统,相对应的算法包括:作业调度使用先来先服务算法,进程调度使用短进程优先算法。

二、实现思路

根据前面的实验一以及实验二,结合经验设计。

三、主要的数据结构

进程控制块pcb

struct pcb {

char state;

};

作业控制块jcb

struct jcb

{

char name[10];

int tjtime;

int ntime;

char state;

struct pcb *l;

struct jcb *link;

}*ready=NULL,*p,*q;

四、运行与测试

输入5个请求序列,结果如图:

A运行完后,无作业提交,故等待:

两份作业同时被调度,此时根据短进程优先原则,B进入就绪状态,D继续运行:

继续运行:

最后只剩下作业B还在运行

运行完毕:

五、改进的方向

界面可以改进成图形界面,可以显示更多的信息,可以选择使用多种不同的算法。

实 验 报 告

课程名称操作系统实验 学生学院计算机学院 专业班级计算机科学与技术

学 号

学生姓名

指导教师 孙为军

2015 年12月30日

实验一 进程调度

一、实验目的

编写并调试一个模拟的进程调度程序,以加深对进程的概念及进程调度算法的理解.

二、实验内容

1. 采用“短进程优先”调度算法对五个进程进行调度。每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、到达时间、需要运行时间、已用CPU时间、进程状态等等。

2. 每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。 每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。重复以上过程,直到所要进程都完成为止。

三、实现思路

先考虑实现进程调度所需要的数据结构,然后根据所需要的算法进行设计。

四、主要的数据结构

进程控制块PCB:

struct pcb {

char name[10];

char state; int ntime; int rtime; struct pcb* link;

}*ready=NULL,*p;

五、算法流程图

六、运行与测试

输入进程信息:

输入完毕,显示当前运行以及就绪的进程:

优先运行短进程

七、改进的方向

界面比较难看,可以中文化信息。

实验二 作业调度

一、 实验目的

用高级语言编写和调试一个或多个作业调度的模拟程序,以加深对作业调度算法的理解。

二、 实验内容

1.写并调试一个单道处理系统的作业等待模拟程序。

2.作业等待算法:分别采用先来先服务(FCFS)、响应比高者优先(HRN)的调度算法。

3.由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的 CPU时限等因素。

4.每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之

一。每个作业的最初状态总是等待W。

5.对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间。

三、实现思路

首先根据题目的要求,先设想出作业调度所需的数据结构,包括题目中的作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针以及在作业运行完成后需要现实的信息包括开始运行时刻、完成时刻、周转时间、带权周转时间。

在完成数据结构的构造后,在对每一个模块进行编写。在作业调度中,与实验一的进程调度有所不同的是需要增加一个总体的变量,运行的时间。在本实验中需要实现两种不同的算法,所以这也需要特别去考虑。

四、主要的数据结构

作业控制块jcb

struct jcb

{

char name[10];

int tjtime;

int kstime;

int ntime;

int nresource;

float super;

int ftime;

float zztime;

float dqtime;

char state;

struct jcb *link;

}*ready=NULL,*p,*q;

五、算法流程图

六、运行与测试

运行程序后首先选择一个算法:

首先先选择先来先服务算法,输入作业数据后,显示各个作业,并显示开始运行时刻、完成时刻、周转时间、带权周转时间:

运行了三次后,可以看出目前的算法是先来先服务算法:

所有作业运行结束后,显示平均周转时间以及平均带权周转时间:

现在选择响应比高者优先算法,并输入一组新数据后显示:

运行一次后,由于C的相应比高于B,所以先运行:

完成运行后显示相应的数据:

七、改进的方向

界面可以改进成图形界面,可以实现将运行完的作业保留下来并且在其运行状态改为F的功能,还可以实现在所有作业运行完毕后将所有作业的相关数据集合成一张简单的表的功能。

实验三 动态分区分配方式的模拟

1、实验目的

了解动态分区分配方式中的数据结构和分配算法,并进一步加深对动态分区存储管理方式及其实现过程的理解

2、实验内容

1. 用C语言分别实现采用首次适应算法和最佳适应算法的动态分区分配过程和回收过程。其中,空闲分区通过空闲分区链(表)来管理;在进行内存分配时,系统优先使用空闲区低端的空间。

2. 假设初始状态下,可用的内存空间为640KB,并有下列的请求序列: •作业1申请130KB

•作业2申请60KB

•作业3申请100KB

•作业2释放60KB

•作业4申请200KB

•作业3释放100KB

•作业1释放130KB

•作业5申请140KB

•作业6申请60KB

•作业7申请50KB

•作业8申请60KB

请分别采用首次适应算法和最佳适应算法进行内存的分配和回收,要求每次分配和回收后显示出空闲内存分区链的情况。

三、实现思路

使用双向链表来表示存储空间,整题的总体思路在于操作该链表,只是在分配空间需要考虑不同的算法实现。

四、主要的数据结构

空闲区说明表结构

typedef struct FreeA

{

int NUM; long size; long address; int state;

}ElemType;

双向链表存储结构

typedef struct NLNode

{

ElemType data; struct NLNode *prior; struct NLNode *next;

}NLNode,*NLinkList;

五、算法流程图

六、运行与测试

运行程序,显示选择两种不同算法的界面:

选择首次适应算法,直接显示当前的分配情况以及有两个分配回收内存的功能:

根据题目要求输入相应的请求序列:

选择最佳适应算法,再次输入题目要求的作业请求序列:

七、改进的方向

界面可以改进成图形界面,增加对主存剩余地址的输出,增加更多种的内存动态分配的算法以及对内存操作的功能。

实验四 多级反馈调度队列调度算法

一、实验内容

用高级语言实现多级调度,调度算法自由选择。本实验选择两道处理系统,相对应的算法包括:作业调度使用先来先服务算法,进程调度使用短进程优先算法。

二、实现思路

根据前面的实验一以及实验二,结合经验设计。

三、主要的数据结构

进程控制块pcb

struct pcb {

char state;

};

作业控制块jcb

struct jcb

{

char name[10];

int tjtime;

int ntime;

char state;

struct pcb *l;

struct jcb *link;

}*ready=NULL,*p,*q;

四、运行与测试

输入5个请求序列,结果如图:

A运行完后,无作业提交,故等待:

两份作业同时被调度,此时根据短进程优先原则,B进入就绪状态,D继续运行:

继续运行:

最后只剩下作业B还在运行

运行完毕:

五、改进的方向

界面可以改进成图形界面,可以显示更多的信息,可以选择使用多种不同的算法。


相关内容

  • 2015年山西省中考理化实验操作试题及评分细则
  • 装 订 线 2015年山西省初中毕业升学理化实验操作考试 物理实验操作试题 物理试题 1 探究串联电路中各处电流的关系 物理试题 2 探究并联电路中干路电流与各支路电流的关系 物理试题 3 探究串联电路中用电器两端的电压与电源两端 电压的关系 物理试题 4 探究并联电路各支路用电器两端电压的关系 物 ...

  • [财务分析]课程实验报告格式及要求最终
  • <财务分析>课程 实验报告 实验学时: 8 实验项目数: 1 2016 年 10月 24日 组长:沈海彤 小组成员及分工 珠海格力电器股份有限公司2015年财务报告分析 摘要: 本文以珠海格力电器股份有限公司为例,主要站在企业的角度,从相关的理论介绍到应用的现状分析.首先简述公司概况及行 ...

  • 2015年金融市场实验报告
  • 金融市场学实验报告 实验日期:2015年5月7日(第1次).2015年5月14日(第2次) 学号 姓名 实验名称:股票交易及市盈率分析(1-2) 一.实验目的和要求 1. 通过对个股及行业市盈率的研究,掌握搜寻个股资讯的工具和方法.投资价值的评价方法以及将海量资讯整合为单一报告的技能. 2.了解支付 ...

  • 核酸检测实施方案
  • 全面推行核酸检测试运行工作方案 为预防和控制经血传播疾病的发生,保障临床用血质量和安全,经研究决定我站将全面 开展核酸检测.为稳步推进核酸全面检测,不影响血液批放行,满足临床用血需求,制定本 试运行方案. 一.组织管理 为顺利开展全面核酸检测工作,成立核酸检测工作小组,工作组负责全面推行核酸检测 试 ...

  • 2015年中考理化生实验技能考试样题
  • 2015年中考理化生实验技能考试样题 物理试题1 探究凸透镜成像的规律 实验器材:凸透镜(f =10cm).蜡烛.光屏.光具座.火柴. 1.操作步骤: 实验记录: f =10cm 当u>2f时成的像是 . 当f<u<2f时成的像是 . 物理试题2 探究电流与电压的关系 实验器材:电 ...

  • 药品检测行业现状及发展趋势分析
  • 2015-2020年中国药品检测市场调查研究及 发展前景趋势分析报告 报告编号:1521080 行业市场研究属于企业战略研究范畴,作为当前应用最为广泛的咨询服务,其研究成果以报告形式呈现,通常包含以下内容: 一份专业的行业研究报告,注重指导企业或投资者了解该行业整体发展态势及经济运行状况,旨在为企业 ...

  • 电解水设计实验方案报告书(打印)
  • 设计实验方案报告书 开课学期 2014至 2015学年第 2学期 实验项目:学生姓名:指导教师:学 号: 专 业:班 级: 电解水的实验研究 余庆梅 张怡 周玲玲 崔莹[1**********] [1**********] [1**********] [1**********] 化学教育专业 完成日 ...

  • 2014-2015初中生物实验教学计划(1)
  • 初中生物实验教学计划 (2014-2015学年度第一学期) 旬阳县吕河初中 肖鹏 实验教学是整个教学活动的重要环节,是提高学生学科素质,培养学生动手操作能力和协作精神,落实素质教育必不可少的.因此,做好实验教学工作就显得至关重要.现将本学期的生物实验教学工作制定计划如下: 一.指导思想 通过实验教学 ...

  • 医学院本科医用物理实验微课教学探讨
  • 第13卷第8期·总第208期2015年4月·下半月 刊 119 医学院本科医用物理实验微课教学探讨 宋清焕 (河南省漯河医学高等专科学校医用物理实验室,漯河462002) 摘 要:提高医用物理实验教学,促进医用物理在医学各科的基础作用,成为广大医学院校物理教师需要解决的问题,我们在 临床本科医用物理 ...