xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 7KB
    文件類(lèi)型: .c
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-06-12
  • 語(yǔ)言: C/C++
  • 標(biāo)簽: PCB??優(yōu)先級(jí)??

資源簡(jiǎn)介

本程序是用單鏈表對(duì)列來(lái)管理資源(進(jìn)程),實(shí)現(xiàn)了對(duì)進(jìn)程的優(yōu)先級(jí)調(diào)度。

資源截圖

代碼片段和文件信息

#include
#include
#include

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


/*?進(jìn)程的所以狀態(tài)*/
typedef?enum{
WAIT
READY
RUNNING
FINISH
}pcb_state;
/*進(jìn)程的所有優(yōu)先級(jí)級(jí)別*/
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:初始化進(jìn)程結(jié)點(diǎn)
*
*/

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:建立一個(gè)進(jìn)程結(jié)點(diǎn),即給進(jìn)程結(jié)點(diǎn)一個(gè)實(shí)際的意義
*
*/

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:把有實(shí)際意義的結(jié)點(diǎn)插入到準(zhǔn)備對(duì)列中。
*
*/

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

if(pnode?==?NULL)
return?readyHead;
/*?準(zhǔn)備對(duì)列為空時(shí)*/
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的優(yōu)先級(jí)比準(zhǔn)備對(duì)列中的第一個(gè)元素的優(yōu)先級(jí)還要高*/
if(front?==?node)?
{
pnode->next?=?node;
readyHead?=?pnode;
}
else
{
pnode->next?=?node;
front->next?=?pnode;
}

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

}

/*準(zhǔn)備對(duì)列中最后一個(gè)結(jié)點(diǎn)*/
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:把準(zhǔn)備對(duì)列中的第一個(gè)結(jié)點(diǎn)交給運(yùn)行對(duì)列
*
*/

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

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

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

/*
*Function:insert_wait
*
*Description:把運(yùn)行對(duì)列中優(yōu)先級(jí)小于準(zhǔn)備對(duì)列的頭結(jié)點(diǎn)時(shí),則把這個(gè)結(jié)點(diǎn)插入等待對(duì)列
*
*/

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

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

評(píng)論

共有 條評(píng)論

相關(guān)資源