-
大小: 2KB文件類(lèi)型: .rar金幣: 2下載: 0 次發(fā)布日期: 2023-12-30
- 語(yǔ)言: C/C++
- 標(biāo)簽:
資源簡(jiǎn)介
進(jìn)程管理
1.實(shí)驗(yàn)內(nèi)容
至少要有:創(chuàng)建新的進(jìn)程;查看運(yùn)行進(jìn)程;換出某個(gè)進(jìn)程;殺死運(yùn)行進(jìn)程以及進(jìn)程之間通信等功能。
2.實(shí)驗(yàn)提示
PCB結(jié)構(gòu)通常包括以下信息:進(jìn)程名,進(jìn)程優(yōu)先數(shù),輪轉(zhuǎn)時(shí)間片,進(jìn)程所占用的CPU時(shí)間,進(jìn)程的狀態(tài),當(dāng)前隊(duì)列指針等??筛鶕?jù)實(shí)驗(yàn)的不同,PCB結(jié)構(gòu)的內(nèi)容可以作適當(dāng)?shù)脑鰟h。
例:實(shí)驗(yàn)運(yùn)行結(jié)果
********************************************
* 進(jìn)程演示系統(tǒng) *
********************************************
1.創(chuàng)建新的進(jìn)程 2.查看運(yùn)行進(jìn)程
3.換出某個(gè)進(jìn)程 4.殺死運(yùn)行進(jìn)程
5.進(jìn)程之間通信 6.退出系統(tǒng)
********************************************
請(qǐng)選擇(1~6)
然后根據(jù)你選擇的不同,出現(xiàn)不同的結(jié)果。

代碼片段和文件信息
#include
#include
#include
#define?NULL?0?
int?shumu=0;
//進(jìn)程的內(nèi)容結(jié)構(gòu)體
struct?node
{
int?a;
char?ch;
};
//進(jìn)程PCB結(jié)構(gòu)體
struct?jincheng
{
int?pid;
int?youxian;
float?luntime;
float?zhantime;
char?zhuangtai;//a表示執(zhí)行,b表示動(dòng)態(tài)就緒
node?*neirong;
struct?jincheng?*next;
};
struct?jincheng?*neijin*neizhi*p*q;
//換出進(jìn)程函數(shù)
void?huanchu(int?a)
{
p=neijin;
while(p->pid!=a&&p!=NULL)
{
q=p;
p=p->next;
}
if(p==NULL)
{
printf(“該進(jìn)程不在內(nèi)存里!\n“);
return;
}
if(p==neijin)
{
neijin=neijin->next;
}
else
{
q->next=p->next;
}
}
//殺死正在運(yùn)行進(jìn)程函數(shù)
void?shasi()
{
????neizhi->next=NULL;
printf(“運(yùn)行的進(jìn)程已經(jīng)殺死!\n“);
return;
}
//創(chuàng)建新進(jìn)程后與正在運(yùn)行進(jìn)程比較優(yōu)先級(jí)并根據(jù)優(yōu)先級(jí)判斷誰(shuí)該占用處理機(jī)
int?bijiao()
{
int?ij;
p=neijin;
while(p!=NULL)
{
q=p;
p=p->next;
}
i=q->youxian;
j=neizhi->next->youxian;
if(i>j)
{
p=neijin;
if(p==q)
{
????neijin=neizhi->next;
p->neirong=(node*)malloc(sizeof(node));
p->neirong->a=9;
p->neirong->ch=‘c‘;
neizhi->next=p;
return?1;
}
else{
while(p->next!=q)
{
p=p->next;
}
p->next=neizhi->next;
????????????q->neirong=(node*)malloc(sizeof(node));
q->neirong->a=9;
q->neirong->ch=‘c‘;
neizhi->next=q;
neizhi->next->next=NULL;
return?1;
}
}
else
return?-1;
}
void?main()
{
int?zhixing();
void?shasi();
void?chakan();
void?tongxing(int);
neizhi=(jincheng*)malloc(sizeof(jincheng));
neizhi->next=NULL;
neijin=(jincheng*)malloc(sizeof(jincheng));?
neijin->next=NULL;
????neijin->pid=1;
neijin->youxian=6;
neijin->luntime=3.5;
neijin->zhantime=3;
????neijin->neirong=(node*)malloc(sizeof(node));
neijin->neirong=NULL;
neijin->zhuangtai=‘b‘;
shumu++;
p=(jincheng*)malloc(sizeof(jincheng));
p->next=neijin->next;
neijin->next=p;
????p->pid=2;
p->youxian=5;
p->luntime=3.5;
p->zhantime=3;
p->neirong=(node*)malloc(sizeof(node));
p->neirong=NULL;
p->zhuangtai=‘b‘;
shumu++;
????q=(jincheng*)malloc(sizeof(jincheng));
q->next=p->next;
p->next=q;
q->pid=3;
q->youxian=4;
q->luntime=3.5;
q->zhantime=3;
q->neirong=(node*)malloc(sizeof(node));
q->neirong=NULL;
q->zhuangtai=‘b‘;
shumu++;
int?in=1;
int?kjs;
j=zhixing();
int?creat();
while(n==1)
{
printf(“********************************************\n“);
printf(“*???????????????進(jìn)程演示系統(tǒng)???????????????*\n“);
printf(“********************************************\n“);
printf(“?????1.創(chuàng)建新的進(jìn)程??????2.查看運(yùn)行進(jìn)程?\n“);????
printf(“?????3.換出某個(gè)進(jìn)程??????4.殺死運(yùn)行進(jìn)程?\n“);????
printf(“?????5.進(jìn)程之間通信??????6.退出系統(tǒng)?\n“);????????
printf(“********************************************\n“);
printf(“請(qǐng)選擇(1~6)\n“);
????scanf(“%d“&i);
switch(i)
{
case?1:k=creat();
if(k==1)
printf(“進(jìn)程創(chuàng)建成功!\n“);
if(neijin->next==NULL)
{
printf(“由于只有一個(gè)進(jìn)程所以為它分配處理機(jī).\n“);
neizhi->next=neijin;
neijin->neirong=(node*)malloc(sizeof(node));
neijin->neirong->a=3;
nei
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????7530??2010-11-20?13:23??進(jìn)程管理c.cpp
-----------?---------??----------?-----??----
?????????????????7530????????????????????1
評(píng)論
共有 條評(píng)論