91精产品自偷自偷综合官网版下载-91精产品自偷自偷综合下-91精品-91精品91久久久-91精品成人-91精品成人www

網(wǎng)站建設(shè)資訊

NEWS

網(wǎng)站建設(shè)資訊

c語(yǔ)言中是什么調(diào)度函數(shù) c語(yǔ)言調(diào)試函數(shù)

處理機(jī)調(diào)度算法的實(shí)現(xiàn) 用C語(yǔ)言

網(wǎng)絡(luò)答案,經(jīng)過(guò)驗(yàn)證:

成都創(chuàng)新互聯(lián)是工信部頒發(fā)資質(zhì)IDC服務(wù)器商,為用戶(hù)提供優(yōu)質(zhì)的鄭州服務(wù)器托管服務(wù)

#include "stdio.h"

#include stdlib.h

#include conio.h

#define getpch(type) (type*)malloc(sizeof(type))

#define NULL 0

struct pcb { /* 定義進(jìn)程控制塊PCB */

char name[10];

char state;

int super;

int ntime;

int rtime;

struct pcb* link;

}*ready=NULL,*p;

typedef struct pcb PCB;

void sort() /* 建立對(duì)進(jìn)程進(jìn)行優(yōu)先級(jí)排列函數(shù)*/

{

PCB *first, *second;

int insert=0;

if((ready==NULL)||((p-super)(ready-super))) /*優(yōu)先級(jí)最大者,插入隊(duì)首*/

{

p-link=ready;

ready=p;

}

else /* 進(jìn)程比較優(yōu)先級(jí),插入適當(dāng)?shù)奈恢弥?/

{

first=ready;

second=first-link;

while(second!=NULL)

{

if((p-super)(second-super)) /*若插入進(jìn)程比當(dāng)前進(jìn)程優(yōu)先數(shù)大,*/

{ /*插入到當(dāng)前進(jìn)程前面*/

p-link=second;

first-link=p;

second=NULL;

insert=1;

}

else /* 插入進(jìn)程優(yōu)先數(shù)最低,則插入到隊(duì)尾*/

{

first=first-link;

second=second-link;

}

}

if(insert==0) first-link=p;

}

}

void input() /* 建立進(jìn)程控制塊函數(shù)*/

{

int i,num;

system("cls"); /*清屏*/

printf("\n 請(qǐng)輸入進(jìn)程數(shù): ");

scanf("%d",num);

for(i=1;i=num;i++)

{

printf("\n 進(jìn)程號(hào)No.%d:\n",i);

p=getpch(PCB);

printf("\n 輸入進(jìn)程名:");

scanf("%s",p-name);

printf("\n 輸入進(jìn)程優(yōu)先數(shù):");

scanf("%d",p-super);

printf("\n 輸入進(jìn)程運(yùn)行時(shí)間:");

scanf("%d",p-ntime);

printf("\n");

p-rtime=0;p-state='W';

p-link=NULL;

sort(); /* 調(diào)用sort函數(shù)*/

}

}

int space()

{

int l=0;

PCB* pr=ready;

while(pr!=NULL)

{

l++;

pr=pr-link;

}

return(l);

}

void disp(PCB * pr) /*建立進(jìn)程顯示函數(shù),用于顯示當(dāng)前進(jìn)程*/

{

printf("\n 進(jìn)程名\t 狀態(tài)\t 優(yōu)先數(shù)\t 需要運(yùn)行時(shí)間\t 已經(jīng)運(yùn)行時(shí)間\n");

printf("|%s\t",pr-name);

printf("|%c\t",pr-state);

printf("|%d\t",pr-super);

printf("|%d\t\t",pr-ntime);

printf("|%d\t",pr-rtime);

printf("\n");

}

void check() /* 建立進(jìn)程查看函數(shù) */

{

PCB* pr;

printf("\n **** 當(dāng)前正在運(yùn)行的進(jìn)程是:\n"); /*顯示當(dāng)前運(yùn)行進(jìn)程*/

disp(p);

pr=ready;

printf("\n **** 當(dāng)前就緒隊(duì)列狀態(tài)為:\n"); /*顯示就緒隊(duì)列狀態(tài)*/

while(pr!=NULL)

{

disp(pr);

pr=pr-link;

}

}

void destroy() /*建立進(jìn)程撤消函數(shù)(進(jìn)程運(yùn)行結(jié)束,撤消進(jìn)程)*/

{

printf("\n 進(jìn)程 [%s] 已完成.\n",p-name);

free(p);

}

void running() /* 建立進(jìn)程就緒函數(shù)(進(jìn)程運(yùn)行時(shí)間到,置就緒狀態(tài)*/

{

(p-rtime)++;

if(p-rtime==p-ntime)

destroy(); /* 調(diào)用destroy函數(shù)*/

else

{

(p-super)--;

p-state='W';

sort(); /*調(diào)用sort函數(shù)*/

}

}

void main() /*主函數(shù)*/

{

int len,h=0;

char ch;

input();

len=space();

while((len!=0)(ready!=NULL))

{

ch=getchar()();

h++;

printf("-----------------------------------------------------");

printf("\n 現(xiàn)在是第%d次運(yùn)行: \n",h);

p=ready;

ready=p-link;

p-link=NULL;

p-state='R';

check();

running();

printf("\n 按任意鍵繼續(xù)......\n");

}

printf("\n\n 進(jìn)程已經(jīng)完成.\n");

}

c語(yǔ)言中什么是調(diào)用函數(shù)和被調(diào)用函數(shù)

調(diào)用函數(shù)就是計(jì)算機(jī)編譯或運(yùn)行時(shí),使用某個(gè)函數(shù)來(lái)完成相關(guān)命令。對(duì)無(wú)參函數(shù)調(diào)用時(shí)則無(wú)實(shí)際參數(shù)表。實(shí)際參數(shù)表中的參數(shù)可以是常數(shù)、變量或其它構(gòu)造類(lèi)型數(shù)據(jù)及表達(dá)式。各實(shí)參之間用逗號(hào)分隔。

這兩個(gè)定義是相對(duì)的,比如說(shuō)你自己定義編寫(xiě)了一個(gè)函數(shù),然后在后面的編寫(xiě)語(yǔ)句中要用到你之前編寫(xiě)的函數(shù),你引用了,那個(gè)函數(shù)就是被調(diào)用函數(shù),你正在寫(xiě)的那個(gè)主函數(shù)就是調(diào)用函數(shù)。

C語(yǔ)言模擬操作系統(tǒng)進(jìn)程調(diào)度和管理

給,已經(jīng)編譯運(yùn)行通過(guò)了,簡(jiǎn)單寫(xiě)的:

#includestdio.h

#includetime.h

#includestdlib.h

/*********************以下是全局?jǐn)?shù)據(jù)結(jié)構(gòu)和變量***********************/

/*PCB 結(jié)構(gòu)*/

struct PCB{

int pname;

int pri;

int runtime;

int waittime;

struct PCB *next;

}pcb[7];

/* 運(yùn)行指針*/

struct PCB *running;

/*高優(yōu)先級(jí)就緒隊(duì)列頭指針*/

struct PCB *Hready;

/*低優(yōu)先級(jí)隊(duì)列頭指針*/

struct PCB *Lready;

/*等待隊(duì)列頭指針*/

struct PCB *wait;

int sig=0;

/**************************以下是函數(shù)說(shuō)明****************************/

/*利用循環(huán)實(shí)現(xiàn)延遲*/

void delay();

/*模擬進(jìn)程3-9*/

void proc(struct PCB *running);

/*將node插入到head所指示的隊(duì)列的尾部*/

void InsertIntoQueueTail(struct PCB ** head,struct PCB *node);

/*進(jìn)程調(diào)度函數(shù)*/

int proc_switch();

/*進(jìn)程等待函數(shù)*/

void proc_wait();

/*進(jìn)程喚醒函數(shù)*/

int proc_wakeup();

/************************以下是函數(shù)定義及注釋************************/

/*主函數(shù)*/

main()

{

int i;

/*初始化,創(chuàng)建進(jìn)程3-9,置低優(yōu)先級(jí),等待時(shí)間為0,

依次插入低優(yōu)先級(jí)隊(duì)列*/

for(i = 0;i 7;i++){

pcb[i].pname = i+3;

pcb[i].pri = 0;

pcb[i].waittime = 0;

InsertIntoQueueTail(Lready,pcb[i]);

}

/*等待隊(duì)列和高優(yōu)先級(jí)隊(duì)列為空*/

wait = NULL;

Hready=NULL;

printf("\nThe process_switch begin:\n");

/*模擬進(jìn)程調(diào)度開(kāi)始*/

for(;;)

{

switch(sig){

case 0:/*無(wú)進(jìn)程等待調(diào)度,打印信息并返回*/

if(!proc_switch())

{

printf("No Process to run,press any key to return:\n");

getchar();

}

break;

case 1:proc_wait();

break;

case 3:

case 4:

case 5:

case 6:

case 7:

case 8:

case 9:proc(running);

break;

default:printf("\nerror!");

exit(-1);

}

}

}

/*功能:延遲一個(gè)時(shí)間片*/

/*入口參數(shù):無(wú)*/

/*出口參數(shù):無(wú)*/

void delay()

{

int i,j;

for(i=0;i20000;i++)

for(j=0;j10000;j++)

{

}

}

/*功能:進(jìn)程3-9*/

/*入口參數(shù):運(yùn)行指針*/

/*出口參數(shù):無(wú)*/

void proc(struct PCB * running)

{

int i;

srand( (unsigned)time( NULL ) );

/*顯示當(dāng)前運(yùn)行的進(jìn)程的id*/

printf("\nNow Process %d is running\n",running-pname);

/*當(dāng)前進(jìn)程執(zhí)行running-runtime個(gè)時(shí)間片*/

for(i=running-runtime;i0;i--){

/*顯示剩余的時(shí)間片*/

printf("%d time slice(s) left\n",i);

/*延遲*/

delay();

proc_wakeup();

/*產(chǎn)生一個(gè)1到1000的隨機(jī)數(shù),若該隨機(jī)數(shù)小余100,當(dāng)前進(jìn)程等待,*/

if((rand()%1000+1)100){

printf("Process %d begins to wait.\n",running-pname);

sig=1;

return;

}

}

/*顯示時(shí)間片耗盡,進(jìn)程轉(zhuǎn)為低優(yōu)先級(jí)就緒狀態(tài)*/

printf("Time slices for process %d exhausted.\n",running-pname);

InsertIntoQueueTail(Hready,running);

sig=0;

return;

}

/*功能:將一個(gè)節(jié)點(diǎn)插入隊(duì)列尾部*/

/*入口參數(shù):隊(duì)列頭指針地址head,待插入結(jié)點(diǎn)node*/

/*出口參數(shù):無(wú)*/

void InsertIntoQueueTail(struct PCB **head,struct PCB *node)

{

struct PCB *p;

node-next=NULL;

/*被插入隊(duì)列為空*/

if(*head==NULL){

*head=node;

return;

}

/*被插入隊(duì)列不為空*/

else{

p=*head;

/*找到隊(duì)列的最后一個(gè)結(jié)點(diǎn)*/

while(p-next!=NULL) p=p-next;

p-next=node;

}

}

/*功能:進(jìn)程調(diào)度*/

/*入口參數(shù):無(wú)*/

/*出口參數(shù):若調(diào)度成功,返回1,否則返回0*/

int proc_switch()

{

/*若高優(yōu)先級(jí)就緒隊(duì)列和低優(yōu)先級(jí)就緒隊(duì)列均為空,則循環(huán)執(zhí)行進(jìn)程喚醒*/

while(Hready == NULL Lready == NULL)

if(!proc_wakeup()) return 0;

/*若高優(yōu)先級(jí)就緒隊(duì)列非空,則執(zhí)行其第一個(gè)進(jìn)程,分配2個(gè)時(shí)間片*/

if(Hready != NULL){

running = Hready;

Hready = Hready - next;

running-runtime = 2;

}

/*若高優(yōu)先級(jí)就緒隊(duì)列為空,則執(zhí)行低優(yōu)先級(jí)就緒隊(duì)列的第一個(gè)進(jìn)程,

分配5個(gè)時(shí)間片*/

else{

running = Lready;

Lready=Lready - next;

running - runtime = 5;

}

/*別調(diào)度進(jìn)程的id賦給sig*/

sig = running - pname;

return 1;

}

/*功能:進(jìn)程等待。將當(dāng)前運(yùn)行進(jìn)程置高優(yōu)先級(jí),等待時(shí)間為20,

插入等待隊(duì)列尾部*/

/*入口參數(shù):無(wú)*/

/*出口參數(shù):無(wú)*/

void proc_wait()

{

struct PCB *p;

running-pri=1;

running-waittime=20;

InsertIntoQueueTail(wait,running);

sig=0;

return;

}

/*功能:進(jìn)程喚醒*/

/*入口參數(shù):無(wú)*/

/*出口參數(shù):若等待隊(duì)列為空,則返回0,否則返回1*/

int proc_wakeup()

{

struct PCB *p,*last,*MoveToReady;

p = wait;

/*等待隊(duì)列為空,返回0*/

if(p == NULL) return 0;

/*延遲*/

delay();

/*等待隊(duì)列中每個(gè)進(jìn)程的等待時(shí)間減1*/

while(p != NULL){

p - waittime -= 1;

p=p-next;

}

p=wait;

/*從等待隊(duì)列中摘除等待時(shí)間為0的進(jìn)程,插入到高優(yōu)先級(jí)就緒隊(duì)列的尾部*/

while(p!=NULL){

if(p - waittime == 0){

MoveToReady = p;

if (p == wait)

wait = p-next;

else

last - next = p-next;

p = p - next;

InsertIntoQueueTail(Hready,MoveToReady);

}

else{

p = p - next;

}

}

sig =0;

return 1;

}


當(dāng)前名稱(chēng):c語(yǔ)言中是什么調(diào)度函數(shù) c語(yǔ)言調(diào)試函數(shù)
瀏覽路徑:http://www.yuzhuanjia.cn/article/dopcegp.html
主站蜘蛛池模板: 午夜内射高潮视频 | 99久久国产亚洲综合精品 | 91精品福利资源在线观看 | 国产1024香蕉在线观看 | 911精品国产 | 国产99re在线观看69热 | 国产91丝袜播放动漫 | 91久久久久精品无码专区 | 91亚洲中文天堂在线观看 | 国产99视频精品免费视频美女 | 午夜精品一区二区三区免费视频 | 午夜av福利影视 | 丰满少妇被猛烈进 | 91国偷自产一区二区三区老熟女 | 波多野结衣伦理在线观看 | 东京热无码专区 | 国产av毛片影院精品资源 | 99久久久精品免费 | 福利国产微拍广场一区视频在线 | 日韩av无码免费大片暖暖 | 99精品国产自产在线观看 | 波多野たの结衣A片 | 午夜色av | a片试看120分 | 91九色国产操逼无码视频 | 99re在线精品99re8热视频 | 91成人在线一区 | 99久久国产综合精品女同 | 国产91久久久久 | 99久久精品国产一区二区三区 | 99久久久精品综合 | 丰满少妇作爱视频免费观看 | 91麻豆精品国产91久久久点播时间 | 海角亂倫精品一区二区 | 99久久久久免费精品国产 | 91久久国产综合精品 | 国产69式成人免费视频 | 国产91在线播放九色00 | 午夜福利理论 | 99热99操99射| 91精品啪在线观 |