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

  • 大小: 2.59MB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2023-11-17
  • 語言: 其他
  • 標簽: 廣州大學??

資源簡介

一、課程設計題目及內容
時間片輪轉法實現處理機調度的程序設計提示如下:
(1)假設系統有n個進程,每個進程用一個進程控制塊(PCB)來代表。進程控制塊的格式如下表所示,且參數意義也相同。

進程名
鏈接指針
到達時間
估計運行時間
進程狀態

(2)按照進程到達的先后順序排成一個循環隊列,設一個隊首指針指向第一個到達進程的首址。另外再設一個當前運行進程指針,指向當前正運行的進程。
(3)執行處理機調度時,首先選擇隊首的第一個進程運行。
(4)由于本題目是模擬實驗,所以對被選中的進程并不實際啟動運行,而只是執行如下操作:1)估計運行時間減1;
2)輸出當前運行進程的名字。
用這兩個操作來模擬進程的一次運行。
(5)進程運行一次后,以后的調度則將當前指針依次下移一個位置,指向下一個進程,即調整當前運行指針指向該進程的鏈接指針所指進程,以指示應運行進程,同時還應判斷該進程的剩余運行時間是否為0,若不為0,則等待下一輪的運行,若該進程的剩余運行時間為0,則將該進程的狀態置為完成狀態“C”,并退出循環隊列。
(6)若就緒隊列不為空,則重復上述的步驟(4)和(5)直到所有進程都運行完為止。
(7)在所設計的調度程序中,應包含顯示或打印語句,以便顯示或打印每次選中進程的名稱及運行一次后隊列的變化情況。

資源截圖

代碼片段和文件信息

#include
#include
#include
using?namespace?std;

typedef?struct?PNode???//PCB
{
struct?PNode?*next;??//定義指向下一個節點的指針
char?name[10];???????//定義進程名,并分配空間
int?laitime; ?????//定義到達時間
int?All_time;????????//定義總運行時間
int?Runed_Time;??????//定義已運行時間
char?state;??????????//定義進程狀態R?(就緒態)/C(完成態)/Y(運行態)/W(未到態)
}
*Proc;???????????????????//指向該PCB的指針
int?ProcNum; //總進程數

//初始化就緒隊列
void?lnitPCB(Proc?&H)
{
fstream?fin(“D:\\data1.txt“);?????//打開數據文件
fin?>>?ProcNum; //讀取進程數
int?Num?=?ProcNum;
H?=?(Proc)malloc(sizeof(PNode));???//建立頭結點
H->next?=?NULL;
Proc?p?=?H;????????????//定義一個指針
Proc?j;
cout?< cout?< while?(Num--)
{
j?=?(Proc)malloc(sizeof(PNode));
fin?>>?j->name?>>?j->laitime?>>?j->All_time?>>?j->Runed_Time;//讀取進程信息
if?(j->laitime?!=?0)?
j->state?=?‘W‘;?//進程未到達則狀態為W
else
j->state?=?‘R‘;?//進程到達則狀態為R
j->next?=?NULL;
while?(1)
{
if?(p->next?==?NULL)?//若下一個節點為空則直接插入
{
p->next?=?j;
break;
}
if?(j->laitime?next->laitime)?//前插
{
j->next?=?p->next;
p->next?=?j;
break;
}
else?p?=?p->next;
}
p?=?H;
}
while?(p->next?!=?NULL)?//將p指向最后一個節點
p?=?p->next;
p->next?=?H->next;?//將尾節點和頭節點連接變成循環隊列
}
//輸入運行中的進程信息
void?Displnfo(Proc?H)
{
Proc?p?=?H->next;
do
{
cout?<name?<All_time?<Runed_Time?<state?< p?=?p->next;
}?while?(p?!=?H->next);??//整個進程鏈條始終完整,只是狀態位有差異
}

//輸入初始狀態的進程信息
void?Displnfo1(Proc?H)
{
Proc?p?=?H->next;
do
{
cout?<name?<laitime?<All_time?<Runed_Time?<state?< p?=?p->next;
}?while?(p?!=?H->next);??//整個進程鏈條始終完整,只是狀態位有差異
}

void?Displnfo2(Proc?H)
{
Proc?p?=?H->next;
do
{
if?(p->state?==?‘R‘)?//輸出此時可執行隊列
{
cout?<name?<All_time?<Runed_Time?<state?< p?=?p->next;
}
else?break;
}?while?(p?!=?H->next);
}

//時間片輪轉法
void?SJP_Simulator(Proc?&H)
{
cout?< int?flag?=?ProcNum;?????//記錄剩余進程數
int?round?=?0;??????????//記錄輪轉數
Proc?p?=?H->next;
/*Proc?q?=?H->next;??*/????//存放頭節點
while?(p->All_time?>?p->Runed_Time)
{?
Proc?j;
j?=?p;???//記錄當前p指針
p?=?H->next;
while?(1)???//標記此時進程狀態
{
if?(p->laitime?<=?round)
{
p->state?=?‘R‘;
p?=?p->next;
}
else
{
p->state?=?‘W‘;
p?=?p->next;
}
if?(p->next?==?H->next)
break;
}
if?(H->next->state?==?‘W‘)
cout?< else
{
cout?< Displnfo2(H);
}
p?=?j;?//恢復p指針位置
if?(p->laitime?<=?round)
{
round++;
cout?<name?< p->state?=?‘Y‘;
p->Runed_Time++;??????????//更改正在運行的進程的

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????623104??2018-12-27?22:18??1606100068_陳家樂_操作系統課程設計實驗報告.doc
?????文件??????246450??2018-12-24?06:15??實驗一---處理器調度(設計一個按時間片輪轉法實現處理器調度的程序).doc
?????文件?????2031616??2018-12-21?15:54??操作系統課程設計2017.doc
?????文件????????3530??2018-12-26?14:07??時間法1.txt
?????文件????????3953??2018-12-26?15:07??時間法2(增加輸出可執行隊列).txt
?????文件???????21478??2018-12-27?21:12??時間片流轉法主要思想流程圖.pdf
?????文件???????70011??2018-12-27?16:27??時間片流轉法初始化流程圖.jpg
?????文件???????58587??2018-12-27?16:27??時間片流轉法初始化流程圖.pdf
?????目錄???????????0??2018-12-28?23:04??計機162_1606100068_陳家樂\
?????文件????????4501??2018-12-27?21:14??計機162_1606100068_陳家樂\源.cpp

評論

共有 條評論