实验一:基于dos的多任务系统实现

实验一:基于dos的多任务系统实现

ID:9926071

大小:16.96 KB

页数:19页

时间:2018-05-15

实验一:基于dos的多任务系统实现_第1页
实验一:基于dos的多任务系统实现_第2页
实验一:基于dos的多任务系统实现_第3页
实验一:基于dos的多任务系统实现_第4页
实验一:基于dos的多任务系统实现_第5页
资源描述:

《实验一:基于dos的多任务系统实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、#include#include#include#defineNTCB10/*系统允许运行的最大线程数*//*状态码常量定义*/#defineFINISHED0/*表示线程处于终止态或TCB是空白状态*/#defineRUNNING1/*表示线程牌运行态*/#defineREADY2/*表示线程处于就绪*/#defineBLOCKED3/*表示线程处于阻塞态*/#defineCLOCK_NUM2/*每个线程所运行的时钟数*/#defineNTEXT1000

2、/*消息长度*/#defineNBUFF5/*空闲缓冲区最大数量*/#defineGET_INDOS0x34#defineGET_CRIT_ERR0x5d06charfar*indos_ptr=0;charfar*crit_err_ptr=0;intcurrent;/*当前进程tcb的下标*/inttimecount;/*时钟中断次数*/typedefstruct{intvalue;structTCB*wq;/*阻塞队列首个TCB*/}semaphore;semaphoremutex={1,NULL};se

3、maphoreempty={NBUFF,NULL};semaphorefull={0,NULL};semaphoremutexfb={1,NULL};semaphoresfb={NBUFF,NULL};structbuffer{intsender;/*消息发送者的内部标识*/intsize;/*消息长度<=NTEXT个字节*/chartext[NTEXT];/*消息正文*/structbuffer*next;/*指向下一个消息缓冲区的指针*/};structbuffer*freebuf;/*空闲缓冲区*/s

4、emaphoremutexfb;semaphoresfb;/*空闲缓冲区的信号量*/semaphorefull,empty,mutex;/*用于读者写者问题*/intpro=0;/*产品数量*/structTCB{unsignedchar*stack;/*线程堆栈的起始地址*/unsignedss;/*堆栈段址*/unsignedsp;/*堆栈指针*/charstate;/*线程状态*/charname[10];/*线程的外部标识符*/structTCB*next;/*下一个TCB指针*//*以下三个变量用

5、于线程通信*/structbuffer*mq;/*接收线程的消息队列队首指针*/semaphoremutex;/*接收线程的消息队列的互斥信号量*/semaphoresm;/*接收线程的消息队列的计数信息量,用于实现同步*/}tcb[NTCB];structint_regs{unsignedbp/*基址指针寄存器*/,di/*目的变址寄存器*/,si/*源变址寄存器*/,ds/*数据段段地址*/,es/*附加数据段*/,dx,cx,bx,ax/*能用/累加器....*/,ip,cs,/*代码段的段地址*//

6、*代码段的段内偏移地址*/flags,/*flags寄存器的允许中断位*/off,seg;/*撤销线程代码的偏移地址*//*撤销线程代码的段址*/};/*def*//*马龙龙*/voidInitDos(void);intDosBusy(void);typedefint(far*codeptr)(void);/*self*/voidInitTcb(void);/*initializethetcb*/voidsender();voidreceiver();/*曹亚娟*//*self*/intcreate(cha

7、r*name,codeptrcode,intstck);/*self*/voiddestroy(intid);/*self*/voidover(void);/*沈伟臣*//*self*/intfind(void);/*findthenextthread*//*self*/voidinterruptmy_swtch(void);/*switchtoanotherthread*/voidinterrupt(*old_int8)(void);/*self*/voidinterruptnew_int8(void);

8、/*盛竹青*/voidtcb_state(void);intisFinished(void);/*checkwhetherallthreadisfinished*/voidf1(void);voidf2(void);voidproducer(void);voidconsumer(void);/*赵怀瑞*/voidblock(structTCB**p);voidwakeup(structTCB**p);voidp(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。