北科大操作系统实验报告

2026/4/24 2:59:47

操作系统实验报告

学院: 专业: 班级: 学号: 姓名: 指导教师:

成绩:

计算机与通信工程学院 计算机与科学技术

王成耀

2015年 1 月4 日

实验一 线程的状态和转换(5分)

1 实验目的和要求

目的:熟悉线程的状态及其转换,理解线程状态转换与线程调度的关系。 要求:

(1)跟踪调试EOS线程在各种状态间的转换过程,分析EOS中线程状态及其转换的相关源代码;

(2)修改EOS的源代码,为线程增加挂起状态。

2 完成的实验内容

2.1 EOS线程状态转换过程的跟踪与源代码分析

(分析EOS中线程状态及其转换的核心源代码,说明EOS定义的线程状态以及状态转换的实现方法;给出在本部分实验过程中完成的主要工作,包括调试、跟踪与思考等) //使 Zero 状态或者运行状态的线程转入就绪状态 VOID

PspReadyThread( { }

//取消线程的就绪状态,使线程转入 Zero 状态 VOID

PspUnreadyThread( {

ASSERT(NULL != Thread && Ready == Thread->State);

// 将线程从所在的就绪队列中取出,如果线程优先级对应的就绪队列变为空, // 则清除就绪位图中对应的位。

ListRemoveEntry(&Thread->StateListEntry);

if(ListIsEmpty(&PspReadyListHeads[Thread->Priority])) {

BIT_CLEAR(PspReadyBitmap, Thread->Priority);

1

PTHREAD Thread )

ASSERT(NULL != Thread);

ASSERT(Zero == Thread->State || Running == Thread->State);

// 将线程插入其优先级对应的就绪队列的队尾,并设置就绪位图中对应的位。 // 最后将线程的状态修改为就绪状态。

ListInsertTail(&PspReadyListHeads[Thread->Priority], &Thread-BIT_SET(PspReadyBitmap, Thread->Priority); Thread->State = Ready;

>StateListEntry);

PTHREAD Thread )

}

}

Thread->State = Zero;

//使处于等待状态的线程脱离等待队列并转入 Zero 状态 VOID

PspUnwaitThread( { }

2.2为线程增加挂起状态的实现

(给出实现方法的简要描述、源代码、测试和结果等) {

STATUS Status; BOOL IntState; THREAD Thread;

// 根据线程句柄获得线程对象的指针

Status = ObRefObjectByHandle(hThread, sThreadTye, (VOID*)&Thread); if (EOS_SUCCESS(Status)) { }

2

IN PTHREAD Thread )

ASSERT(Waiting == Thread->State);

// 将线程从所在等待队列中移除并修改状态码为Zero。 ListRemoveEntry(&Thread->StateListEntry); Thread->State = Zero;

// 如果线程注册了等待计时器,则注销等待计时器。 if (STATUS_TIMEOUT == Thread->WaitStatus) { }

KeUnregisterTimer(&Thread->WaitTimer);

IntState = KeEnableInterruts(FALSE); // 关中断 if (Zero == Thread->State) { }

KeEnableInterruts(IntState); ObDerefObject(Thread);

// 开中断

ListRemoveEntry(&Thread->StateListEntry); sReadyThread(Thread); sThreadSchedule();

Status = STATUS_SUCCESS; Status = STATUS_NOT_SUORTED;

} else {

}

return Status;

3


北科大操作系统实验报告.doc 将本文的Word文档下载到电脑
搜索更多关于: 北科大操作系统实验报告 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219