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

代碼片段和文件信息
#include
#include
#include
#define?NULL?0?
int?shumu=0;
//進程的內(nèi)容結構體
struct?node
{
int?a;
char?ch;
};
//進程PCB結構體
struct?jincheng
{
int?pid;
int?youxian;
float?luntime;
float?zhantime;
char?zhuangtai;//a表示執(zhí)行,b表示動態(tài)就緒
node?*neirong;
struct?jincheng?*next;
};
struct?jincheng?*neijin*neizhi*p*q;
//換出進程函數(shù)
void?huanchu(int?a)
{
p=neijin;
while(p->pid!=a&&p!=NULL)
{
q=p;
p=p->next;
}
if(p==NULL)
{
printf(“該進程不在內(nèi)存里!\n“);
return;
}
if(p==neijin)
{
neijin=neijin->next;
}
else
{
q->next=p->next;
}
}
//殺死正在運行進程函數(shù)
void?shasi()
{
????neizhi->next=NULL;
printf(“運行的進程已經(jīng)殺死!\n“);
return;
}
//創(chuàng)建新進程后與正在運行進程比較優(yōu)先級并根據(jù)優(yōu)先級判斷誰該占用處理機
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(“*???????????????進程演示系統(tǒng)???????????????*\n“);
printf(“********************************************\n“);
printf(“?????1.創(chuàng)建新的進程??????2.查看運行進程?\n“);????
printf(“?????3.換出某個進程??????4.殺死運行進程?\n“);????
printf(“?????5.進程之間通信??????6.退出系統(tǒng)?\n“);????????
printf(“********************************************\n“);
printf(“請選擇(1~6)\n“);
????scanf(“%d“&i);
switch(i)
{
case?1:k=creat();
if(k==1)
printf(“進程創(chuàng)建成功!\n“);
if(neijin->next==NULL)
{
printf(“由于只有一個進程所以為它分配處理機.\n“);
neizhi->next=neijin;
neijin->neirong=(node*)malloc(sizeof(node));
neijin->neirong->a=3;
nei
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????7530??2010-11-20?13:23??進程管理c.cpp
-----------?---------??----------?-----??----
?????????????????7530????????????????????1
- 上一篇:《測試驅動的嵌入式C語言開發(fā)》源碼
- 下一篇:純HTML5拓撲圖編輯器源代碼
評論
共有 條評論