全球旧事资料 分类
操作系统课程设计实验报告
姓名董永文专业软件工程班级07052714学号07057409
2010年7月
f董永文07057409
任务一任务一基于线程的多任务程序设计
一实验目的本实验旨在促进对于线程控制调度算法和消息通信机制的理解这里的多线程并不使用任何的操作系统提供的线程系统调用而是依靠自己的线程相关函数完成上述目标线程的调度依靠的是改造后的时钟中断处理程序来实现的二实验要求本实验要求实现如下要求1设计实现基于线程多任务程序2完成生产者消费者程序设计3实现线程间的消息通信程序三已经实现的功能1设计实现基于线程多任务程序2完成生产者消费者程序设计3实现线程间的消息通信程序四未能实现的功能五程序设计思路与代码分析任务一主要需要实现的功能可以分为五部分一线程的创建和撤消二调度程序的实现三进程的阻塞和唤醒四利用消息缓冲队列的线程间通信五生产者消费者问题的实现因此本程序可以以上功能实现先后顺序为设计思路进行代码编写一线程的创建和撤消的设计是实现以上功能的必要前提所以要考虑周全1TCB的设计TCB是实现以上功能的必要前提所以要考虑周全defi
eFINISHED0defi
eRUNNING1defi
eREADY2defi
eBLOCKED3defi
eNTCB100structTCBu
sig
edcharstack堆栈的起始地址u
sig
edss堆栈段址u
sig
edsp堆栈指针charstate线程的外部标识符char
ame10NTCB是系统允许的最多任务个数structbuffermq消息队列队首指针初值为NULLstructsemaphoremutex消息队列的互拆信号量初值为1NULLstructsemaphoresm消息队列的计数信号量初值为0NULLi
treaderNum当线程作为读线程时所读线程的线程内部标识符tcbNTCB创建线程2创建线程线程创建的一般步骤1为新线程分配一个线程控制块TCB数组的下标即为该线程的内部标识符2为新线程分配私有堆栈空间3初始化新线程的私有堆栈即按CPU调度时现场信息的保存格式布置堆栈4初始化线程控制块
1
f董永文070574095其它工作如按优先级进行CPU调度则需在TCB中加上优先权信息6返回新线程的内部标识符为新线程分配私有堆栈空间i
tcreatechar
amecodeptrcodeu
sig
edstackle
u
sig
edprioi
tistructi
t_regsirfori1iNTCBiiftcbistateFINISHEDbreakifiNTCBretur
1strcpytcbi
ame
ametcbistacku
sig
edcharmallocstackle
tcbissFP_SEGtcbistacktcbispFP_OFFtcbistackstackle
tcbistateREADYtcbipriopriou
sig
edtcbisp2FP_SEGoveru
sig
edtcbisp4FP_OFFovr
好听全球资料 返回顶部