时间片轮转 操作系统课程设计 myprocess

时间片轮转 操作系统课程设计 myprocess

ID:47169790

大小:52.00 KB

页数:11页

时间:2019-08-15

时间片轮转 操作系统课程设计 myprocess_第1页
时间片轮转 操作系统课程设计 myprocess_第2页
时间片轮转 操作系统课程设计 myprocess_第3页
时间片轮转 操作系统课程设计 myprocess_第4页
时间片轮转 操作系统课程设计 myprocess_第5页
资源描述:

《时间片轮转 操作系统课程设计 myprocess》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、#include#include#include#include/*状态码*/#defineNTCB5/*TCB的数量*/#defineNTEXT60/*线程通信缓冲区文本内容的大小*/#defineNBUF10/*缓冲区的个数*//****线程的五种状态****/#defineSTART-1#defineFINISHED0#defineRUNNING1#defineREADY2#defineBLOCKED3#definetimeout1/*线程时间片轮转的时间*/

2、typedefint(far*codeptr)(void);/*函数指针定义*//*DOS的初始化状态码*/#defineGET_INDOS0x34#defineGET_CRIT_ERR0x5d06structbuffer{intsender;intsize;chartext[NTEXT];structbuffer*next;}*freebuff;/*消息缓冲区的定义*/typedefstruct{intvalue;structTCB*wq;}semaphore;/*记录型信号量定义*/structTCB{unsignedchar*st

3、ack;unsignedss;unsignedsp;charstate;charname[10];structbuffer*mq;/*消息队列排队使用*/semaphoremutex;/*互斥信号量,用于对TCB消息队列处理时互斥*/semaphoresm;/*消息队列的计数信号亮*/structTCB*next;}tcb[NTCB];/*线程控制块定义*/structint_regs{unsignedbp;unsigneddi;unsignedsi;unsignedds;unsignedes;unsigneddx;unsignedcx

4、;unsignedbx;unsignedax;unsignedip;unsignedcs;unsignedflags;unsignedoff;unsignedseg;};/*线程私有堆栈的数据结构的定义*/charfar*indos_ptr=0;charfar*crit_err_ptr=0;unionREGSregs;structSREGSsegregs;intcurrenttcb=-1;/*初始化TCB的值*/inttimecount=0;/*时间计数初始为0*/semaphoresfb={NBUF,NULL};/*空闲缓冲区的同步信

5、号量*/semaphoremutexfb={1,NULL};/*对空闲缓冲区处理的互斥信号量*/semaphorefmutex={0,NULL};/*F1和F2的同步信号量*/voidInitBuff(void);/*初始化消息缓冲区*/intDosBusy(void);/*DosBusyFunctionreturnnon_zeroifDOSisbusy*/voidInitInDos(void);/*InitInDosFuntiontogettheaddressesofINDOSandCRIT_ERRflags*/voidInitTcb

6、(void);/*初始化TCB*/voidinterrupt(*old_int8)(void);/*旧的时钟中断处理程序*/voidinterruptnew_int8(void);/*新的时钟中断处理程序*/intcreate(char*name,codeptrcode,intstacklen);/*创建线程*/voidtcb_state(void);/*线程状态函数*/intSeeknext(void);/*寻找下一个就绪线程*/voidinterruptcpu_switch(void);/*CPU调度函数*/intall_finis

7、hed();/*判断所有线程是否完成*/voidDestroy(inti);/*销毁一个线程*/voidover(void);/*结束一个线程*/voidwait(semaphore*sem);/*P操作*/voidsignal(semaphore*sem);/*v操作*/voidblock(structTCB**qp);/*阻塞函数*/voidwakeup(structTCB**qp);/*唤醒函数*/voidf1(void);/*函数F1*/voidf2(void);/*函数F2*/voidinsert(structbuffer**

8、mq,structbuffer*buff);/*将buff所指的缓冲区插到*mq所指的缓冲队列末尾*/voidsend(char*receiver,char*a,intsize);/*发送一个消息给rece

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

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

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