作業系統課程設計(一)時間片輪轉實現多執行緒排程

2021-04-23 05:53:09 字數 1350 閱讀 6405

#include

#include

#include

#define get_indos 0x34 /* 34h 系統功能呼叫 */

#define get_crit_err 0x5d06 /* 5d06h號系統功能呼叫 */

#define blank -1

#define finished 0 /* 終止 */

#define running 1 /* 執行 */

#define ready 2 /* 就緒 */

#define blocked 3 /* 阻塞 */

#define ntcb 10 /* 系統執行緒的最大數 */

#define tl 2 /* 時間片大小 */

char far* intdos_ptr=0;

char far* crit_err_ptr=0;

int timecount=0;

int current=-1;

int test;

struct tcbtcb[ntcb];

struct int_regs;

typedef int(far* codeptr)(void);

void interrupt(*old_int8)(void);

int dosbusy(void);

void initindos(void);

void inittcb();

void interrupt new_int8(void);

void interrupt swtch();

void create(char* name,codeptr code,int stacklen); /* 建立執行緒 */

void destroy(int i);

void f1() /* 1#執行緒 */ }

void f2() /* 2#執行緒 */

printf("/n"); }

void initindos() /* 取得indos標誌和嚴重錯誤標誌位址 */ }

int dosbusy(void) /* 判斷dos是否忙 */

void inittcb() /* 初始化執行緒 */

void create(char *name,codeptr code,int stacklen)

void destroy(int i)

return; }

void tcb_state() /* 執行緒狀態資訊 */

else }

} void interrupt swtch() /* 其他原因cpu排程 */

int all_finished()

Linux時間子系統一 時間子系統綜述

timer在硬體上是乙個非常簡單的東西 這裡不考慮虛擬化,安全相關的問題 一般來說timer都會支援兩種模式,一是periodic模式和free running模式,前者週期性的產生中斷,後者一直往前累加到配置的最大值,報一次中斷,稱為one shot。軟體上將timer抽象成clocksource...

mysql資料庫時間操作 一 時間函式

一 格式轉化 二 時間取值 dayofmonth date 返回date是一月中的第幾日 在1到31範圍內 dayofyear date 返回date是一年中的第幾日 在1到366範圍內 month date 返回date中的月份數值 dayname date 返回date是星期幾 按英文名返回 m...

作業系統實驗課(三)時間片輪轉排程演算法

include define max 10 struct task struct tasks max int counter 實際程序個數 int time counter 0 int pinput int poutput 排程結果輸出 int time int charge 判斷是否所有的程序都被...