⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 format.c

📁 操作系统:用C++编写的时间片轮转法
💻 C
字号:
#include <stdio.h>
/* 状态码 */
/* BLANK -1 means not assigned */
#define BLANK -1
#define FINISHED 0
#define RUNNING 1
#define READY 2
#define BLOCKED 3
#define NTCB 10		/* NTCB是系统允许的最多任务数 */
#define TB 3		/* 时钟中断的次数 */
#define NBUF 10
#define NTEXT 50	/* 消息正文的最大长度(单位:B) */

/* 全局变量:当前运行的线程号 */
int current = -1;
int nextc;
int i1 = 1, i2 = 3;
long fi,fi1,fi2;
int timecount = 0;	/* 统计时钟中断的次数 */
char b[200];
char words[200];

typedef int (far *codeptr)(void);
void interrupt (*oldInt8)(void);/* 原来的时间中断程序 */

/* 记录型信号量 */
typedef struct semaphore
{
	int value;	/* 消息缓冲队列的线程数 */
	struct TCB *wq;
}semaphore;

semaphore mutexfb = {1,NULL};	/* 互斥信号量 */
semaphore sfb = {10,NULL};	/* 空闲缓冲队列记数信号量 */
semaphore mutexre = {0,NULL};
semaphore mutexse = {0,NULL};

/* 消息缓冲区 */
struct buffer
{
	int sender;		/* 消息发送者的标识符 */
	int size;		/* 消息长度 <= NTEXT 个字节 */
	char text[NTEXT];	/* 消息正文 */
	struct buffer *next;/* 指向下一个消息缓冲区的指针 */
}*freeBuf;

/* 线程控制块TCB */
struct TCB {
	unsigned char *stack;	/* 堆栈的起始地址 */
	unsigned ss;			/* 堆栈段址 */
	unsigned sp;			/* 段栈指针 */
	char state;				/* 进程状态 */
	char name[10];			/* 线程的外部标识符 */
	int value;
	struct TCB *next;
	struct buffer *mq;		/* 消息队列队首指针 */
	semaphore mutex;		/* 消息队列的互斥信号量 */
	semaphore sm;			/* 消息队列的计数信号量 */
}tcb[NTCB];

/* 线程现场保护和恢复的数据结构 */
struct int_regs {
	unsigned bp,di,si,ds,es,dx,cx,bx,ax,ip,cs,flags,off,seg;
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -