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

  • 大小: 4KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-02
  • 語言: C/C++
  • 標簽:

資源簡介

實驗內容: ① 由用戶指定要產生的進程及其類別,存入進入就緒隊列。    ② 調度程序從就緒隊列中提取一個就緒進程運行。如果申請的資源被阻塞則進入相應的等待隊列,調度程序調度就緒隊列中的下一個進程。進程運行結束時,會檢查對應的等待隊列,激活隊列中的進程進入就緒隊列。運行結束的進程進入over鏈表。重復這一過程直至就緒隊列為空。    ③ 程序詢問是否要繼續?如果要轉直①開始執行,否則退出程序。 實驗目的: 通過實驗模擬生產者與消費者之間的關系,了解并掌握他們之間的關系及其原理。由此增加對進程同步的問題的了解。 實驗要求: 每個進程有一個進程控制塊(PCB)表示。進程控制塊可以包含如下信息:進程類型標號、進程系統號、進程狀態、進程產品(字符)、進程鏈指針等等。 系統開辟了一個緩沖區,大小由buffersize指定。 程序中有三個鏈隊列,一個鏈表。一個就緒隊列(ready),兩個等待隊列:生產者等待隊列(producer);消費者等待隊列(consumer)。一個鏈表(over),用于收集已經運行結束的進程 本程序通過函數模擬信號量的原子操作。

資源截圖

代碼片段和文件信息

/*#include
#include
#include
#include
using?namespace?std;

#define?buffersize??10//緩沖區的長度
struct?PCB{
string?cls;//producer?and?consumer
int?number;
string?zhuangtai;
PCB?*next;
};
int?buffersum;//記錄緩沖區有多少已經填充
PCB?*ready?*prowait?*conwait?*over;
PCB?*P[20];
void?Init(){//初始化,將20個進程分為生產者與消費者
int?clas?i;
PCB?*p;

ready?=?new?PCB;
ready->next?=?NULL;
over?=?new?PCB;
over->next?=?NULL;
prowait?=?new?PCB;
prowait->next?=?NULL;
conwait?=?new?PCB;
conwait->next?=?NULL;//完成頭指針的初始化

p?=?ready;
srand((int)time(0));
clas=rand()?%?20+1;
for?(i?=?1;?i?<=?clas;?i++){
P[i?-?1]?=?new?PCB;
P[i?-?1]->next?=?NULL;
P[i?-?1]->cls?=?“producer“;
P[i?-?1]->number?=?i;
P[i?-?1]->zhuangtai?=?“ready“;
p->next?=?P[i?-?1];
p?=?p->next;
}
for?(i?=?clas?+?1;?i?<=?20;?i++){
P[i?-?1]?=?new?PCB;
P[i?-?1]->next?=?NULL;
P[i?-?1]->cls?=?“consumer“;
P[i?-?1]->number?=?i;
P[i?-?1]->zhuangtai?=?“ready“;
p->next?=?P[i?-?1];
p?=?p->next;
}
}
void?print(){
PCB?*p;
p?=?over->next;
cout?< while?(1){
if?(p?==?NULL)
break;
cout?<number?<cls?< p?=?p->next;
}
p?=?ready->next;
cout?< while?(1){
if?(p?==?NULL)
break;
cout?<number?<cls?< p?=?p->next;
}
p?=?prowait->next;
cout?< while?(1){
if?(p?==?NULL)
break;
cout?<number?<cls?< p?=?p->next;
}
p?=?conwait->next;
cout?< while?(1){
if?(p?==?NULL)
break;
cout?<number?<cls?< p?=?p->next;
}
}
void?jud

評論

共有 條評論

相關資源