91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 7KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-12
  • 語言: C/C++
  • 標簽: PCB??優先級??

資源簡介

本程序是用單鏈表對列來管理資源(進程),實現了對進程的優先級調度。

資源截圖

代碼片段和文件信息

#include
#include
#include

#define?NAME_LEN?10
#define??MAX?????5


/*?進程的所以狀態*/
typedef?enum{
WAIT
READY
RUNNING
FINISH
}pcb_state;
/*進程的所有優先級級別*/
typedef?enum{
MAX_HIGH=0
HIGH=10
MIDDLE=20
LOW=30
MIN_LOW=40
DEFFAULT=50
}pcb_priority;

typedef?struct?pcb_node{
char?name[NAME_LEN];
int?priority;
int?needtime;


}PCB_NODE;

typedef?struct?node{
struct?node?*next;
PCB_NODE?imm_pcb;
int?round;
int?cputime;
int?count;
int?state;
}PCB;


/*
*?Function:?init_pcb
*
*Description:初始化進程結點
*
*/

void?init_pcb(PCB?*pnode)
{
if(pnode?==?NULL)
return?;
pnode->next?=?NULL;

// pnode->imm_pcb.name?=?NULL;
memset(pnode->imm_pcb.name‘0‘NAME_LEN);
pnode->imm_pcb.priority?=MIDDLE;
pnode->imm_pcb.needtime?=0;

pnode->round?=0;
pnode->cputime?=0;
pnode->count?=0;
pnode->state?=?READY;

}


PCB?*pcb_malloc(int?size)
{
return?malloc(size);
}

/*
*?Function:?creat_pcb
*
*?Description:建立一個進程結點,即給進程結點一個實際的意義
*
*/

PCB?*creat_pcb(PCB?*pnodePCB_NODE?*pcbNode)
{
if(pnode?==?NULL?&&?pcbNode?==?NULL)
return?NULL;

init_pcb(pnode);
strcpy(pnode->imm_pcb.namepcbNode->name);
if(pcbNode->priority?!=DEFFAULT)
pnode->imm_pcb.priority?=?pcbNode->priority;
pnode->imm_pcb.needtime?=?pcbNode->needtime;

return?pnode;

}

/*
*Function:insert_ready
*
*Description:把有實際意義的結點插入到準備對列中。
*
*/

PCB?*insert_ready(PCB?*readyHeadPCB?*pnode)
{
PCB?*node;
PCB?*front;

if(pnode?==?NULL)
return?readyHead;
/*?準備對列為空時*/
if(readyHead?==?NULL)
{
readyHead?=?pnode;
return?readyHead;
}
/**/
else?if(readyHead->next?==?NULL)
{
if(readyHead->imm_pcb.priority?>?pnode->imm_pcb.priority)
{
pnode->next?=?readyHead;
readyHead?=?pnode;
}
else
{
readyHead->next?=?pnode;
// pnode->next?=?NULL;
}
return?readyHead;
}

front?=?readyHead;

for(node?=?readyHead;node->next?!=?NULL;node=?node->next)
{

if(pnode->imm_pcb.priority?imm_pcb.priority)
{
/*pnode的優先級比準備對列中的第一個元素的優先級還要高*/
if(front?==?node)?
{
pnode->next?=?node;
readyHead?=?pnode;
}
else
{
pnode->next?=?node;
front->next?=?pnode;
}

return?readyHead;
}
else
front?=?node;

}

/*準備對列中最后一個結點*/
if(pnode->imm_pcb.priority?imm_pcb.priority)
{
pnode->next?=?node;
front->next?=?pnode;
}
else
{
node->next?=?pnode;
pnode->next?=?NULL;
}

return?readyHead;

}

/*
*?Function:insert_RUNNING
*
*?Description:把準備對列中的第一個結點交給運行對列
*
*/

PCB?*insert_run(PCB?*runHeadPCB?*pnode)
{

if(pnode?==?NULL)
return?runHead;

pnode->next?=?runHead;
pnode->state?=?RUNNING;
return?pnode;
}

/*
*Function:insert_wait
*
*Description:把運行對列中優先級小于準備對列的頭結點時,則把這個結點插入等待對列
*
*/

PCB?*insert_wait(PCB?*ppnodePCB?*waitHead)
{

ppnode->next?=?NULL;
ppnode->state?=?

評論

共有 條評論