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

  • 大小: 906KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-05
  • 語言: 其他
  • 標簽:

資源簡介

第二題[提示] (1) 假定系統有五個進程,每一個進程用一個進程控制塊PCB來代表。進程控制塊的格式為: 進程名 指針 要求運行時間 已運行時間 狀態 其中,進程名----作為進程的標識,假設五個進程的進程名分別是Q1,Q2,Q3,Q4,Q5。 指針----進程按順序排成循環隊列,用指針指出下一個進程的進程控制塊首地址,最后一個進程中的指針指出第一個進程的進程控制塊首地址。 要求運行時間----假設進程需要運行的單位時間數。 已運行時間----假設進程已經運行的單位時間數,初始值為“0”。 狀態----有兩種狀態,“就緒”狀態和“結束”狀態,初始狀態都為“就緒”,用“R”表示,當一個進程運行結束后,它的狀態變為“結束”,用“E”表示。 (2) 每次運行你所設計的處理器調度程序之前,為每個進程任意確定它的“要求運行時間”。 把五個進程按順序排成循環隊列,用指針指出隊列連接情況。另用一標志單元記錄輪到運行的進程。 (3) 處理器調度總是選擇標志單元指示的進程運行。由于本實驗是模擬處理器調度的功能,所以,對被選中的進程并不實際啟動運行,而是執行: 已運行時間+1 來模擬進程的一次運行,表示進程已經運行過一個單位的時間。 請注意:在實際的系統中,當一個進程被選中運行時,必須置上該進程可以運行的時間片值,以及恢復進程的現場,讓它占有處理器運行,直到出現等待事件或運行滿一個時間片。在這里省去了這些工作,僅用“已運行時間+1”來表示進程已經運行滿一個時間片。 (4) 進程運行一次后,應把該進程的進程控制塊中的指針值送到標志單元,以指示下一個輪到運行的進程。同時,應判斷該進程的要求運行時間與已運行時間,若該進程要求運行時間≠已運行時間,則表示它尚未執行結束,應待到下一輪時再運行。若該進程的要求運行時間=已運行時間,則表示它已經執行結束,應把它的狀態修改為“結束”(E)且退出隊列。此時,應把該進程的進程控制塊中的指針值送到前面一個進程的指針位置。 (5) 若“就緒”狀態的進程隊列不為空,則重復上面(4)和(5)的步驟,直到所有進程都成為“結束”狀態。 (6) 在所設計的稱序中應有顯示或打印語句,能顯示或打印每次被選中進程的進程名以及運行一次后進稱對列的變化。 (7) 為五個進程任意確定一組“要求運行時間”,啟動所設計的處理器調度程序,顯示或打印逐次被選中進程的進程名以及進程控制塊的動態變化過程。

資源截圖

代碼片段和文件信息

?#include?
#include?
#include?
#include?
using?namespace?std;
class?List;?
class?PCB//定義進程PCB
{
public:
friend?class?List;
private:
PCB?(char?p[]int?t){strcpy(pnamep);runnedtime=0;requesttime=t;status=‘R‘;next=NULL;}
char?pname[2];
int?runnedtime;
int?requesttime;
char?status;
PCB*?next;
};
class?List//鏈表類
{
public:
List(char?p[]=“Q1“int?t=0){list=new?PCB(pt);pc=list;time=0;}
int?print();
int?append(char?p[]int?t);
//void?insert(char?p[]int?t);
void?run();
//void?link();
//int?length();
private:
PCB?*list;
PCB?*end();
PCB?*pc;
int?time;
};
/*int?List::length()
{
int?cnt=0;
PCB?*pt=list;
for(;pt->next!=list;pt->nextcnt++)
;
return?cnt;
}*/
/*void?List::link()
{
if(list!=NULL)
(end())->next=list;
}*/
/*void?List::insert(char?p[]int?t)
{
PCB?*pt=new?PCB(pt);
pt->next=list;
list=pt;
}*/
int?List::append(char?p[]int?t)//添加結點
{
PCB?*pt=new?PCB(pt);
if(list==NULL)
??????list=pt;
else
{
????(end())->next=pt;
}
return?1;
}
PCB?*List::end()
{
PCB?*prv*pt;
for(prv=pt=list;pt;prv=ptpt=pt->next)
;
return?prv;
}
int?List?::?print()//顯示打印函數
{
time++;
if(list==0)
return?0;
PCB?*pt=list;
cout<<“\t\t進程名?已運行時間?要求運行時間??狀態“<while(pt)
{
cout<<“?“;
cout<<“\t\t“<pname[0]<pname[1]<<“?????????“;
cout<runnedtime<<“??????????“;
cout<requesttime<<“??????????“;
cout<status<<“??????“;?
cout<pt=pt->next;
}
getch();
return?1;
}
void?List::?run()//模擬調度的實現過程
{
????for(;pc;)
{
PCB?*pt=list;
cout<<“\t\t==================================“< cout<<“\t\t==================================“< cout<<“\t\t請選擇#退出,選擇*繼續“< char?u;
cin>>u;
if(u==‘#‘)
{
break;
}
if(u==‘*‘)
;
cout<<“\t\t??CPU運行時間:“< cout<<“\t\t??正在運行的進程為:“<pname< pc->runnedtime+=1;
?????if(pc->runnedtime==pc->requesttime)
{
pc->status=‘E‘;
cout<<“\t\t==================================“< cout<<“\t\t??進程--“<pname<<“運行時間已滿,置狀態為“E”,退出隊列!“<
if(pc==list)
{
list=list->next;
pc=pc->next;
}
????????else
{
for(;pt->next!=pc;pt=pt->next)
;
????????if(pc->next!=NULL)
{
???????????pt->next=pc->next;
???????????pc=pc->next;????
}
else
{
????????pt->next=NULL;
pc=list;
}
}
}
?????else?
{
if(pc->next!=NULL)
??????????pc=pc->next;
????????else
?pc=list;
}
?????print();?
}?
}
void?main()//MAIN()函數
{
int?S;
cout<cout<cout<<“\t\t**************************************“<cout<<“\t\t====模擬時間片輪轉法實現處理器調度====“<cout<<“\t\t輸入進程個數:“;
cin>>S;
char?name[10];
int?n;
cout<<“\t\t請輸入第1個進程的名字:“;
cin>>name;
cout<<“\t\t請輸入要運行的時間:“;
cin>>n;
List?list(namen);
for(int?i=2;i<=S;i++)
{
cout<<“\t\t請輸入第“<cin>>name;
cout<<“\t\t請輸入要運行的時間:“;
cin>>n;
list.append(namen);
}
cout<<“\t\t??初始化各進程狀態如下:“<list.pr

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件?????108544??2008-12-11?21:37??操作系統原理實驗題.doc

?????文件???????3181??2008-12-11?11:49??shijianp.cpp

?????文件?????557123??2008-12-11?21:41??shijianp\Debug\shijianp.exe

?????文件?????802520??2008-12-11?21:41??shijianp\Debug\shijianp.ilk

?????文件?????269516??2008-12-11?21:41??shijianp\Debug\shijianp.obj

????I.A....???2001556??2008-12-11?21:41??shijianp\Debug\shijianp.pch

?????文件????1115136??2008-12-11?21:41??shijianp\Debug\shijianp.pdb

?????文件??????74752??2008-12-11?21:41??shijianp\Debug\vc60.idb

?????文件?????110592??2008-12-11?21:41??shijianp\Debug\vc60.pdb

?????目錄??????????0??2008-12-11?21:41??shijianp\Debug

?????文件???????3181??2008-12-11?11:49??shijianp\shijianp.cpp

?????文件???????3425??2008-12-11?21:41??shijianp\shijianp.dsp

?????文件????????522??2008-12-11?21:42??shijianp\shijianp.dsw

?????文件??????33792??2008-12-11?21:42??shijianp\shijianp.ncb

?????文件??????48640??2008-12-11?21:42??shijianp\shijianp.opt

?????文件???????1279??2008-12-11?21:41??shijianp\shijianp.plg

?????目錄??????????0??2008-12-11?21:42??shijianp

-----------?---------??----------?-----??----

??????????????5133759????????????????????17


評論

共有 條評論