操作系统课程设计任务书.docx

上传人:b****2 文档编号:8020 上传时间:2022-09-30 格式:DOCX 页数:13 大小:107.76KB
下载 相关 举报
操作系统课程设计任务书.docx_第1页
第1页 / 共13页
操作系统课程设计任务书.docx_第2页
第2页 / 共13页
操作系统课程设计任务书.docx_第3页
第3页 / 共13页
操作系统课程设计任务书.docx_第4页
第4页 / 共13页
操作系统课程设计任务书.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

操作系统课程设计任务书.docx

《操作系统课程设计任务书.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计任务书.docx(13页珍藏版)》请在冰豆网上搜索。

操作系统课程设计任务书.docx

操作系统课程设计任务书

操作系统课程设计任务书

一、课程设计目的

通过课程设计,加深对操作系统各资源管理模块的理解,掌握操作系统的基本原理及功能,具有初步分析实际操作系统、设计、构造和开发现代操作系统的基本能力。

二、课程设计的题目与要求(选作一题)

1.编写并调试一个树型目录结构的文件系统,模拟文件管理工作流程。

要求:

(1)设计多用户文件系统,采用多级文件目录。

(2)至少要有十个以上的实用命令,应设置文件保护措施。

(3)设计一个较实用的用户界面,方便用户使用,界面要为用户提供足够的选择信息,不需用户打入冗长的命令。

2.编写并调试一个单道批处理系统的作业调度程序。

要求:

(1)至少有四种的作业调度算法。

(2)能根据不同的调度算法算出每个作业的周转时间和带权周转时间,并通过一组作业算出系统的平均周转时间和平均带权周转时间,比较各种算法的优缺点。

(3)设计一个实用的用户界面,以便选择不同的作业调度算法。

3.编写并调试一个多进程共行的进程调度程序,以加深对进程调度的理解。

至少有四种以上的进程调度程序供选择。

每个进程由进程控制块表示,进程控制块至少包含6个信息项。

设计一个实用的用户界面,以便选用不同的进程调度算法。

三、课程设计应完成的工作和提交的资料

1.每位同学按照选定的题目,认真完成设计内容,并按照要求撰写课程设计说明书1份(不少于3000字)。

在最后截止时间前提交电子和打印文档两部分内容。

2.电子部分以电子邮件方式或者U盘拷贝方式提交给班长。

把设计内容压缩为一个文件,文件名应为:

“序号”+“姓名”。

内容包括:

源文件、可执行文件、演示运行结果、课程设计说明书,最后由班长以班为单位刻录两张光盘,统一交给任课教师。

3.每人自己打印操作系统课程设计报告的纸质文档,装订后交给班长,班长收齐清点后统一交给任课教师。

课程设计说明书具体包括以下内容:

(1)设计思想说明(5%);

(2)系统结构的说明(15%);

(3)数据结构的说明(5%);

(4)各模块的算法流程图(5%);

(5)程序运行及清单(共60%,其中书面源程序占20%,光盘的源程序在计算机上实现程度占40%)

(6)使用说明书(即用户手册)(内容包含如何登录、退出、读、写、等操作说明)(5%分)

(7)体会,建议(5%)

(8)参考文献

一、设计思想说明

⑴短进程优先调度算法的基本思想:

进程调度每次从就绪队列中选出一估计运行时间最短的进程,将CPU分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时,再重新调度。

⑵最高优先数优先调度算法的基本思想:

进程调度每次是把CPU分配给就绪队列中优先数最高的进程。

进程优先数的设置可以是静态的也可以是动态的。

  静态优先数是在进程创建时根据进程初始特性或用户要求确定的,并在整个进程运行期间不能再改变。

动态优先数是指在进程创建时先确定一个初始优先数,以后在进程运行中随着进程特性的改变(如等待时间增长),不断修改优先数,这样,由于开始优先数很低而得不到CPU的进程,就能因为等待时间的增长而优先数变为最高而得到CPU运行。

例如:

在进程获得一次CPU后就将其优先数减少1。

或者,进程等待的时间超过某一时限时增加其优先数的值,等等。

⑶简单轮转法的基本思想:

所有就绪进程按FCFS排成一个队列,总是把处理机分配给队首的进程,各进程占用CPU的时间片相同。

即将CPU的处理时间划分成一个个相同的时间片,就绪队列的诸进程轮流运行一个时间片。

当一个时间片结束时,如果运行进程用完它的时间片后还未完成,就强迫运行机制进程让出CPU,就把它送回到就绪队列的末尾,等待下一次调度。

同时,进程调度又去选择就绪队列中的队首进程,分配给它一时间片,以投入运行。

直至所有的进程运行完毕。

⑷多队列反馈法的基本思想:

①在系统中设置多个就绪队列,各队优先权不同。

②CPU总是优先分配给优先权高的队列中的进程,仅当优先权高的队列空闲时,CPU才运行下一级队列中的进程。

③优先权越高的队列,其中的进程运行时所获得的时间片越小。

④进程并非总是固定在某一队列中,系统总是把新创建的进程首先放入优先权最高的队列,若它执行一个时间片后尚未完成,系统便把它放入下一级队列的末尾,即进程的优先权在逐步降低。

⑤除最低优先权队列外的所有其他队列,均采用相同的进程调度算法,即按时间片轮转的FIFO(先进先出)算法。

当进程进入最低优先权队列时,便可采用时间片轮转算法或其他方式运行。

二、系统结构的说明

⑴设定系统中有五个进程,每一个进程用一个进程控制块(PCB)表示,进程队列采用链表数据结构。

⑵进程控制块包含如下信息:

进程名、优先数、到达时间、需要运行时间、进程状态、链接指针等等。

⑶进程的优先数及需要的运行时间事先人为地指定。

为方便起见,我在C++Builder下设计了图形界面,并初始化了五个进程的信息。

在每次调用处理程序之前,可以修改进程的信息。

⑷进程的运行时间以时间片为单位进行计算。

⑸根据所选择算法的不同,五个进程排成一个循环队列,队列采用链表结构,并且设置了队首指针。

另外,根据多级反馈队列算法的要求,设置了第二队列,同样也为其设置了队首指针。

⑹执行处理机调度时,总是选择队首进程运行。

另外,再设一个当前运行进程的指针,指向当前正在运行的进程。

⑺由于只是模拟进程调度,所以对选中的进程并不实际启动运行,而只是执行:

进程的运行时间增加;

输出当前运行进程的信息

用这两个操作来模拟进程的一次运行。

⑻进程运行时,在界面上显示相应的信息。

⑼进程运行一次后,以后的调度则将当前指针依此下移一个位置,指向下一个进程,即调整当前运行指针指向该进程的链接指针所指进程,以指示应运行进程。

同时还应判断该进程的实际运行时间大于或等于需要运行的时间。

若满足要求,则释放该进程,退出循环队列,否则重新排队,等待下一次的调度。

⑽所有进程运行完后,程序结束。

三、数据结构的说明

⑴进程控制块包含如下信息:

进程名、状态、到达时间、优先数、需要运行时间、实际运行时间、链接指针等。

1进程名:

进程的标识。

2状态:

就绪、运行或完成三种状态之一。

3到达时间:

由于是模拟共行进程,故到达时间都相同。

4优先数:

事先指定,高优先权算法总是根据优先数调度进程。

5需要运行时间:

事先指定,短进程优先算法根据此调度进程。

6实际运行时间:

以CPU时间片为单位,每调度一次增加1。

7链接指针:

指出下一个到达进程的进程控制块首地址。

按照进程到达的顺序排队。

系统设置一个队头和队尾指针分别指向第一和最后一个进程。

新生成的进程放队尾。

源程序中进程控制块定义如下:

structpcb{/*定义进程控制块PCB*/

  ShortStringname;

  ShortStringstate;//状态

intctime;//到达时间

intsuper;//优先数

intntime;//需要运行时间

intrtime;//实际运行时间

structpcb*link;

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

⑵主要函数说明:

1voidsortbySPF();按进程需要运行时间从小到大排列。

2voidsortbyHPF();建立对进程进行优先级排列函数,优先数大者,排在队首。

3voidsortbyFB();多队列算法时,对第二队列的进程按到达时间先后排列。

4voidsortbyRR();建立对进程进行时间片轮换排序

5intspace();返回队列长度;

6voiddisp(PCB*pr);建立进程显示函数,用于显示当前进程,check()函数调用。

7voidcheck();建立进程查看函数示当前运行进程显示就绪队列状态

8voidcheckFB();查看第二队列进程。

9voiddestroy();建立进程撤消函数(进程运行结束,撤消进程)

10voidrunning();建立进程就绪函数(进程运行时间到,置就绪状态)

11voidrunningFB();建立第二队列的进程就绪函数(FB算法用到,进程运行时间到,置就绪状态)

源程序中定义如下:

classTForm1:

publicTForm

{

__published:

//IDE-managedComponents

TsuiForm*suiForm1;

TsuiProgressBar*suiProgressBar1;

TsuiStringGrid*suiStringGrid1;

TsuiRadioGroup*suiRadioGroup1;

TsuiMemo*suiMemo1;

TsuiGroupBox*suiGroupBox1;

TsuiButton*suiButton1;

TLabel*Label1;

TLabel*Label2;

TLabel*Label3;

TLabel*Label4;

TLabel*Label5;

TLabel*Label6;

void__fastcallFormCreate(TObject*Sender);

void__fastcallsuiButton1Click(TObject*Sender);

private:

//Userdeclarations

public:

//Userdeclarations

 

voidsortbySPF();

voidsortbyHPF();

voidsortbyFB();

voidsortbyRR();

intspace();

voiddisp(PCB*pr);

voidcheck();

voidcheckFB();

voiddestroy();

voidrunning();

voidrunningFB();

__fastcallTForm1(TComponent*Owner);

};

⑶程序不断调度队首的进程,直到该队列为空,如下所示:

len=space();

suiMemo1->Clear();

while((len!

=0)&&(ready!

=NULL))

{

h++;

suiMemo1->Lines->Add("CPU时间片:

"+IntToStr(h));

p=ready;

ready=p->link;

p->link=NULL;

p->state="运行";

check();

running();

}

while(ready2!

=NULL)

{

h++;

suiMemo1->Lines->Add("CPU时间片(第二队列):

"+IntToStr(h));

p=ready2;

ready2=p->link;

p->link=NULL;

p->state="运行";

checkFB();

runningFB();

}

 

四、各模块的算法流程图

⑴短进程优先调度算法的流程图:

 

 

⑵最高优先数优先调度算法的流程图:

 

 

⑶简单轮转法的流程图:

 

 

⑷多队列反馈法的流程图:

五、程序运行及清单

⑴程序运行文件名:

jinchengdiaodu.exe

⑵本程序是在C++Builder6下开发的。

使用C++Builder能够方便快捷地开发一个应用程序,并且设计一个实用的界面。

下面是整个工程项目目录下各个文件的作用。

①inchengdiaod

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1