操作系统课程设计试验报告格式Word下载.doc

上传人:b****2 文档编号:14567091 上传时间:2022-10-23 格式:DOC 页数:49 大小:103.50KB
下载 相关 举报
操作系统课程设计试验报告格式Word下载.doc_第1页
第1页 / 共49页
操作系统课程设计试验报告格式Word下载.doc_第2页
第2页 / 共49页
操作系统课程设计试验报告格式Word下载.doc_第3页
第3页 / 共49页
操作系统课程设计试验报告格式Word下载.doc_第4页
第4页 / 共49页
操作系统课程设计试验报告格式Word下载.doc_第5页
第5页 / 共49页
点击查看更多>>
下载资源
资源描述

操作系统课程设计试验报告格式Word下载.doc

《操作系统课程设计试验报告格式Word下载.doc》由会员分享,可在线阅读,更多相关《操作系统课程设计试验报告格式Word下载.doc(49页珍藏版)》请在冰豆网上搜索。

操作系统课程设计试验报告格式Word下载.doc

.

..

..

指导教师评阅成绩:

XXX1:

实验项目一

项目名称:

实验目的:

实验时间:

人员分工:

实验环境:

实验环境的搭建过程、选用的操作系统、机器配置、编译器等。

实验内容:

对实践过程的详细说明,针对已经满足的实践要求,采用了何种算法或思想,对Nachos平台的哪些代码进行了什么样的修改。

实验结果:

对实践要求的满足程度,代码是否编写完成,是否调试通过,能否正常运行,本项目的要求中共满足了哪几项。

参考文献:

实验项目二

实验项目名称:

Nachos中的线程管理

实验项目目的:

1.最多能够同时存在128个用户线程

2.改变为遵循“优先级调度”的抢占式调度

参与人员及分工:

乔心轲,何赵平,康小芳完成主要代码编写;

崔蓉,张文进行程序的测试及维护。

nNachos:

NotAnotherCompletelyHeuristicOperatingSystem

nLinux

nGcc

nWindows

1.对于最多能够同时存在128个用户线程,我们在Thread.cc中声明了一个static变量numOfThreads;

具体代码如下:

staticintnumOfThreads=0;

//thecountofthethreads

在Thread的构造函数中对其值进行加1;

即每创建一个线程时,都会把numOfThreads加1;

++numOfThreads;

并在SimpleThread()中进行了如下修改,完成了最多能够同时存在128个用户线程。

staticvoid

SimpleThread(intwhich)

{

if(numOfThreads<

128){

for(inti=0;

i<

(kernel->

currentThread->

Time())-(kernel->

executeTime)+2;

i++){

cout<

<

"

***thread"

<

which<

"

looped"

kernel->

executeTime<

times.\n"

;

cout<

priority"

Priority()<

\n"

kernel->

Yield();

}

}

else{

if(count==0)

printf("

Thenumberofthethreadscannotbelargerthan128!

);

kernel->

count++;

}

}

为了实现遵循“优先级调度”的抢占式调度策略,首先为Thread增加了三个变量:

executeTime;

time;

priority

在Thread.h中对它们的声明:

public:

Thread(char*debugName);

//initializeaThread

~Thread();

//deallocateaThread

//NOTE--threadbeingdeleted

//mustnotberunningwhendelete

//iscalled

intexecuteTime;

//Thetimethatthisthreadhasexecuted

//basicthreadoperation

voidsetExTime(intexT);

//settheexecuteTimeofthethreadtoexT

intTime();

//returnthetimethatthethreadshouldbeserved

voidsetTime(intt);

//setthetimethatthethreadshouldbeservedtot

voidsetPriority(intpri);

//setthepriorityofthethreadtopri

intPriority();

//returnthepriorityofthethread

private:

//someoftheprivatedataforthisclassislistedabove

inttime;

//thetimethatthethreadshouldbeservedintpriority;

//thepriorityofeachthread

在Thread.cc中的实现:

Thread:

:

Thread(char*threadName)

name=threadName;

stackTop=NULL;

stack=NULL;

status=JUST_CREATED;

for(inti=0;

i<

MachineStateSize;

i++){

machineState[i]=NULL;

//notstrictlynecessary,since

//newthreadignorescontents

//ofmachineregisters

}

space=NULL;

executeTime=1;

setPriority(0);

setTime

(2);

在Fork()中对numOfThreads进行了+1操作:

void

Fork(VoidFunctionPtrfunc,void*arg)

{

Interrupt*interrupt=kernel->

interrupt;

Scheduler*scheduler=kernel->

scheduler;

IntStatusoldLevel;

DEBUG(dbgThread,"

Forkingthread:

name<

f(a):

(int)func<

arg);

StackAllocate(func,arg);

oldLevel=interrupt->

SetLevel(IntOff);

scheduler->

ReadyToRun(this);

//ReadyToRunassumesthatinterrupts

//aredisabled!

(void)interrupt->

SetLevel(oldLevel);

++numOfThreads;

}

//---------------------------------------------------------------------

//Thread:

setExTime

//settheexecuteTimeofthethreadtoexT

void

setExTime(intexT){

executeTime=exT;

setPriority

//setthepriorityofthethreadtopri

setPriority(intpri)

priority=pri;

Priority

//returnthepriorityofthethread

int

Priority(){

returnpriority;

//setthetimeofthethreadtot

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

当前位置:首页 > 工作范文 > 其它

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

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