?? format.bak
字號:
#include <stdio.h>
/* 狀態(tài)碼 */
/* BLANK -1 means not assigned */
#define BLANK -1
#define FINISHED 0
#define RUNNING 1
#define READY 2
#define BLOCKED 3
#define NTCB 10 /* NTCB是系統(tǒng)允許的最多任務(wù)數(shù) */
#define TB 3 /* 時鐘中斷的次數(shù) */
#define NBUF 10
#define NTEXT 50 /* 消息正文的最大長度(單位:B) */
/* 全局變量:當(dāng)前運行的線程號 */
int current = -1;
int nextc;
int i1 = 0, i2 = 0;
long f,f1,f2;
int timecount = 0; /* 統(tǒng)計時鐘中斷的次數(shù) */
char b[200];
char words[200];
typedef int (far *codeptr)(void);
void interrupt (*oldInt8)(void);/* 原來的時間中斷程序 */
/* 記錄型信號量 */
typedef struct semaphore
{
int value; /* 消息緩沖隊列的線程數(shù) */
struct TCB *wq;
}semaphore;
semaphore mutexfb = {1,NULL}; /* 互斥信號量 */
semaphore sfb = {10,NULL}; /* 空閑緩沖隊列記數(shù)信號量 */
semaphore mutexre = {0,NULL};
semaphore mutexse = {0,NULL};
/* 消息緩沖區(qū) */
struct buffer
{
int sender; /* 消息發(fā)送者的標(biāo)識符 */
int size; /* 消息長度 <= NTEXT 個字節(jié) */
char text[NTEXT]; /* 消息正文 */
struct buffer *next;/* 指向下一個消息緩沖區(qū)的指針 */
}*freeBuf;
/* 線程控制塊TCB */
struct TCB {
unsigned char *stack; /* 堆棧的起始地址 */
unsigned ss; /* 堆棧段址 */
unsigned sp; /* 段棧指針 */
char state; /* 進(jìn)程狀態(tài) */
char name[10]; /* 線程的外部標(biāo)識符 */
int value;
struct TCB *next;
struct buffer *mq; /* 消息隊列隊首指針 */
semaphore mutex; /* 消息隊列的互斥信號量 */
semaphore sm; /* 消息隊列的計數(shù)信號量 */
}tcb[NTCB];
/* 線程現(xiàn)場保護(hù)和恢復(fù)的數(shù)據(jù)結(jié)構(gòu) */
struct int_regs {
unsigned bp,di,si,ds,es,dx,cx,bx,ax,ip,cs,flags,off,seg;
};
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -