资源简介
进程调度 时间片轮转调度算法源代码(C语言)
代码片段和文件信息
#include
#include
#include
#include
/* 状态定义 */
#define START -1
#define FINISHED 0
#define RUNNING 1
#define READY 2
#define BLOCKED 3
#define RUNCOUNT 10000
#define TCBNUM 6
#define LEN 100
#define GET_INDOS 0x34
#define GET_CRIT_ERR 0x5d06
#define INT_MIN -32767
#define WoKao 1
/* 人性化一点 */
int TLE=6;
int current=-1;
int timecount=0;
int tcb_num=6;
char far *indos_ptr=0;
char far *crit_err_ptr=0;
typedef int (far* codeptr)();
int DosBusy();
void InitDos();
void InitTCB();
void InitView();
void Begin();
void Wait();
void FUN();
void over();
void tcb_state();
void interrupt (*old_int8)(); /* 原来的时间中断程序 */
void interrupt new_int8(); /* 具有按时间片调度功能的新的时钟中断函数 */
void interrupt swtch(); /* 因其它原因引起CPU调度 */
void create(char*codeptrintint); /* 创建线程 */
int ALL_FINISHED(); /* 线程是否都已完成 */
int FIND(); /* 寻找优先权最高的READY线程 */
void thread_1(); /*线程集*/
void thread_2();
void thread_3();
void thread_4();
void thread_5();
/* TCB */
struct TCB
{
unsigned char * stack; /* 堆栈起始地址 */
unsigned ss; /* 堆栈断址 */
unsigned sp; /* 进程指针 */
char state; /* 进程状态 */
char name[10];
int value;
/*对TCB进行扩充*/
}tcb[TCBNUM];
/* 现场保护和恢复的数据结构 */
struct int_regs
{
unsigned DPDISIDSESDXCXBXAXIPCSFLAGSoffseg;
};
/*InitInDos
*Funtion to get the addresses of INDOS and CRIT_ERR flags
*/
int Random()
{int mseed;
randomize();
seed=random(100) ;
if (seed<0) m=-seed;
else m=seed;
seed=(25173*seed+13849)%65536;
return (m/32767.0);
}
void InitInDos()
{
union REGS regs;
struct SREGS segregs;
/* get the address of INDOS flag */
regs.h.ah=GET_INDOS;
intdosx(®s®s&segregs);
indos_ptr=MK_FP(segregs.esregs.x.bx);
/* get the address of CRIT_ERR flag */
if(_osmajor<3) crit_err_ptr=indos_ptr+1;
else if(_osmajor==3 && _osminor==0) crit_err_ptr=indos_ptr-1;
else
{
regs.x.ax=GET_CRIT_ERR;
intdosx(®s®s&segregs);
crit_err_ptr=MK_FP(segregs.dsregs.x.si);
}
}
/*DosBusy
*Function return non_zero if DOS is busy
*/
int DosBusy()
{
/* IninInDos() hasn‘t been called */
if(indos_ptr && crit_err_ptr) return (*indos_ptr || *crit_err_ptr);
else return -1;
}
/* 初始化TCB */
void InitTCB()
{
int i;
for(i=0;i {
tcb[i].state=START;
}
}
/* 结束TCB */
void over()
{
if(tcb[current].state==RUNNING)
{
disable();
tcb[current].state=FINISHED;
free(tcb[current].stack);
enable();
}
swtch();
}
void tcb_state(int flag)
{
int i;
printf(“\n“);
if(!flag)printf(“The Main Thread is READY\n“);
for(i=1;i {
if(tcb[i].state==START)continue;
switch(tcb[i].state)
{
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 9877 2008-06-12 19:04 新建文件夹\24\pp.c
目录 0 2008-06-12 19:04 新建文件夹\24
文件 4523 2008-06-12 18:48 新建文件夹\27\procee.c
目录 0 2008-06-12 19:04 新建文件夹\27
文件 0 2008-06-12 18:38 新建文件夹\新建 Microsoft Word 文档.doc
目录 0 2008-06-12 19:05 新建文件夹
----------- --------- ---------- ----- ----
14400 6
- 上一篇:模糊c均值聚类+FCM算法的c++代码
- 下一篇:二维粒子群算法的matlab源程序
相关资源
- 优先级和时间片轮转调度实验算法c语
- 单处理器系统的进程调度+操作系统(
- 进程管理和调度的算法实现
- 用C#和C++实现的进程调度算法程序操作
- 操作系统进程调度算法——短作业优
- 非抢占式短作业优先进程调度C语言
- 设计一个有 N个进程调度程序设计
- 进程调度的设计与实现图形界面实现
- 进程调度的设计与实现代码C++
- 进程调度的设计与实现图形界面c++
- 使用动态优先权的进程调度算法的模
- 操作系统实验-计算机进程管理和进程
- 操作系统课程设计之进程调度源代码
- 使用动态优先权的进程调度算法的模
- 进程调度时间片轮转+优先级进程调度
- 生产者与消费者 进程调度模拟c++
- 操作系统进程调度C++代码实现
- 实验一 实现单处理机下的进程调度程
- 编写并调试一个模拟的进程调度程序
- 进程调度程序设计—课程设计
- 进程调度优先数算法
- 进程调度算法(优先权)
- Linux优先级时间片调度C++源码
- 进程调度模拟算法osexperiment完整版
- 基于优先数的时间片轮转调度算法处
- 时间片轮转调度算法 Visual C++
- 进程调度_抢占式短作业优先算法+内存
- 进程调度模拟(C语言实现)
- 东华大学 操作系统实验 进程调度 含
- 基于优先数的时间片轮转调度算法处
评论
共有 条评论