久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

處理機(jī)調(diào)度與死鎖小結(jié)

時(shí)間:2019-05-13 18:48:00下載本文作者:會(huì)員上傳
簡(jiǎn)介:寫寫幫文庫小編為你整理了多篇相關(guān)的《處理機(jī)調(diào)度與死鎖小結(jié)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《處理機(jī)調(diào)度與死鎖小結(jié)》。

第一篇:處理機(jī)調(diào)度與死鎖小結(jié)

第三章 處理機(jī)調(diào)度與死鎖

重點(diǎn)與難點(diǎn)小結(jié)

1.高優(yōu)先權(quán)調(diào)度和基于時(shí)間片的輪轉(zhuǎn)調(diào)度算法

1)高優(yōu)先權(quán)優(yōu)先調(diào)度

2)高響應(yīng)比優(yōu)先調(diào)度

3)時(shí)間片輪轉(zhuǎn)調(diào)度

4)多級(jí)反饋隊(duì)列調(diào)度

2.常用的幾種實(shí)時(shí)調(diào)度算法

1)最早截止時(shí)間優(yōu)先(EDF)算法

2)最低松弛度優(yōu)先(LLF)算法

3.多處理機(jī)環(huán)境下的進(jìn)程(線程)調(diào)度方式

1)自調(diào)度方式

2)成組調(diào)度方式

3)專用處理器分配方式

4.死鎖的基本概念

1)產(chǎn)生死鎖的原因

2)產(chǎn)生死鎖的必要條件

5.預(yù)防死鎖的方法

1)摒棄互斥條件

2)摒棄請(qǐng)求保持條件

3)摒棄不剝奪條件

4)摒棄環(huán)路等待條件

5)各種方式的比較

6.死鎖的避免

熟練掌握銀行家算法和安全性檢測(cè)算法,并能利用這兩個(gè)算法求解具體問題

第二篇:第三章 處理機(jī)調(diào)度與死鎖小結(jié)

第三章 處理機(jī)調(diào)度與死鎖

重點(diǎn)與難點(diǎn)小結(jié)

1.高優(yōu)先權(quán)調(diào)度和基于時(shí)間片的輪轉(zhuǎn)調(diào)度算法

1)

2)

3)時(shí)間片輪轉(zhuǎn)調(diào)度

4)多級(jí)反饋隊(duì)列調(diào)度

2.常用的幾種實(shí)時(shí)調(diào)度算法

1)最早截止時(shí)間優(yōu)先(EDF)算法

2)最低松弛度優(yōu)先(LLF)算法

3.死鎖的基本概念

1)2)4.預(yù)防死鎖的方法

1)摒棄互斥條件

2)摒棄請(qǐng)求保持條件

3)摒棄不剝奪條件

4)摒棄環(huán)路等待條件

5)各種方式的比較

5.死鎖的避免 熟練掌握銀行家算法和安全性檢測(cè)算法,并能利用這兩個(gè)算法求解具體問題

6.死鎖定理

第三篇:操作系統(tǒng)-課程設(shè)計(jì)報(bào)告-處理機(jī)調(diào)度程序

操作系統(tǒng)

課程設(shè)計(jì)報(bào)告

學(xué)校:廣州大學(xué)

學(xué)院:計(jì)算機(jī)科學(xué)與教育軟件學(xué)院 班級(jí):計(jì)算機(jī)127班 課題:處理機(jī)調(diào)度程序

任課老師:陶文正、陳文彬

姓名:黃俊鵬

學(xué)號(hào):1200002111 班內(nèi)序號(hào):27 成績(jī):

日期:2015年1月6日

一、設(shè)計(jì)目的

在多道程序和多任務(wù)系統(tǒng)中,系統(tǒng)內(nèi)同時(shí)處于就緒狀態(tài)的進(jìn)程可能有若干個(gè)。也就是說能運(yùn)行的進(jìn)程數(shù)大于處理機(jī)個(gè)數(shù)。為了使系統(tǒng)中的進(jìn)程能有條不紊地工作,必須選用某種調(diào)度策略,選擇一進(jìn)程占用處理機(jī)。要求學(xué)生設(shè)計(jì)一個(gè)模擬處理機(jī)調(diào)度算法,以鞏固和加深處理機(jī)調(diào)度的概念。

二、設(shè)計(jì)要求

1)進(jìn)程調(diào)度算法包括:時(shí)間片輪轉(zhuǎn)法,短作業(yè)優(yōu)先算法,動(dòng)態(tài)優(yōu)先級(jí)算法。2)可選擇進(jìn)程數(shù)量

3)本程序包括三種算法,用C語言實(shí)現(xiàn),執(zhí)行時(shí)在主界面選擇算法(可用函數(shù)實(shí)現(xiàn))(進(jìn)程數(shù),運(yùn)行時(shí)間,優(yōu)先數(shù)由隨機(jī)函數(shù)產(chǎn)生)執(zhí)行,顯示結(jié)果。

三、設(shè)計(jì)思路及算法思想

1.界面菜單選項(xiàng)

一級(jí)菜單提供2個(gè)選項(xiàng): ① 自動(dòng)生成進(jìn)程數(shù)量 ② 手動(dòng)輸入所需進(jìn)程數(shù)量

一級(jí)菜單選擇完畢后進(jìn)入二級(jí)菜單: ① 重新生成進(jìn)程 ② 時(shí)間片輪轉(zhuǎn)法 ③ 短作業(yè)優(yōu)先算法 ④ 動(dòng)態(tài)優(yōu)先級(jí)算法 ⑤ 退出程序

2.調(diào)度算法

程序所用PCB結(jié)構(gòu)體

需要用到的進(jìn)程結(jié)構(gòu)體如上圖所示

1)時(shí)間片輪轉(zhuǎn)法

主要是設(shè)置一個(gè)當(dāng)前時(shí)間變量,curTime和時(shí)間片roundTime。

遍歷進(jìn)程組的時(shí)候,每運(yùn)行一個(gè)進(jìn)程,就把curTime += roundTime。進(jìn)程已運(yùn)行時(shí)間加roundTime

2)短作業(yè)優(yōu)先算法

遍歷進(jìn)程組,找到未運(yùn)行完成并且運(yùn)行時(shí)間最短的進(jìn)程,讓它一次運(yùn)行完成,如此往復(fù),直到所有進(jìn)程都運(yùn)行完成為止。

3)動(dòng)態(tài)優(yōu)先級(jí)算法

做法跟短作業(yè)優(yōu)先算法類似,此處主要是比較進(jìn)程的優(yōu)先數(shù),優(yōu)先級(jí)高者,先執(zhí)行。直到全部執(zhí)行完畢。當(dāng)一個(gè)進(jìn)程運(yùn)行完畢后,適當(dāng)增減其余進(jìn)程的優(yōu)先數(shù),以達(dá)到動(dòng)態(tài)調(diào)成優(yōu)先級(jí)的效果。

3.程序流程圖

四、運(yùn)行截圖

1)啟動(dòng)后輸入5,生成5個(gè)進(jìn)程

2)輸入1,選擇時(shí)間片輪轉(zhuǎn)法。

自動(dòng)輸出結(jié)果,分別是時(shí)間片為1和4的結(jié)果

3)輸入2,選擇短作業(yè)優(yōu)先算法

4)輸入3,選擇動(dòng)態(tài)優(yōu)先級(jí)算法

5)輸入0,重新生成進(jìn)程,再輸入3,生成3個(gè)進(jìn)程,選擇2.短作業(yè)優(yōu)先算法

6)輸入q,退出

五、心得體會(huì)

通過這次實(shí)驗(yàn),讓我對(duì)操作系統(tǒng)的進(jìn)程調(diào)度有了更進(jìn)一步的了解。這個(gè)實(shí)驗(yàn)的模擬程度跟真實(shí)系統(tǒng)相比只是冰山一角,由此可見操作系統(tǒng)是何其復(fù)雜的軟件產(chǎn)品,僅進(jìn)程調(diào)度就有那么豐富和內(nèi)涵的知識(shí)需要掌握。

但是再復(fù)雜的系統(tǒng),都是由小部件構(gòu)成的。古語云:不積跬步,無以至千里。不積小流,無以成江海。掌握這些基礎(chǔ)的知識(shí),可以為以后打下扎實(shí)的基礎(chǔ)。

六、附錄(源代碼)

//

// main.c

// ProcessDispatch //

// Created by Jeans on 1/5/15.// Copyright(c)2015 Jeans.All rights reserved.//

#include #include

//最小進(jìn)程數(shù)

#define MIN_PROCESS //最大進(jìn)程數(shù)

#define MAX_PROCESS

//最小優(yōu)先數(shù)

#define MIN_PRIORITY

0 //最大優(yōu)先數(shù)

#define MAX_PRIORITY

//最小運(yùn)行時(shí)間

#define MIN_RUNNING_TIME

//最大運(yùn)行時(shí)間

#define MAX_RUNNING_TIME

typedef struct PCB{

char name;

//進(jìn)程名

int priority;

//優(yōu)先數(shù)

int runningTime;

//運(yùn)行時(shí)間

int arriveTime;

//到達(dá)時(shí)間

int beginTime;

//開始時(shí)間

int finishTime;

//完成時(shí)間

int cyclingTime;

//周轉(zhuǎn)時(shí)間

double weigthCyclingTime;//帶權(quán)周轉(zhuǎn)時(shí)間

int hadRunTime;

//已經(jīng)運(yùn)行時(shí)間

int finish;

//是否完成 }PCB;//獲取隨機(jī)數(shù)

int GetRandomNumber(int min,int max){

return arc4random()%(max-min)+ min;}

//初始化PCB組

void InitPCBGroup(PCB p[],int num){

char name = 'A';

for(int i = 0;i < num;i++){

p[i].name = name;

p[i].priority = GetRandomNumber(MIN_PRIORITY, MAX_PRIORITY);

p[i].runningTime = GetRandomNumber(MIN_RUNNING_TIME,MAX_RUNNING_TIME);

name++;

} }

void PrintResult(PCB p[],int num){

double avgCycTime = 0,avgWeiCycTime = 0;

printf(“|進(jìn)程名

到達(dá)時(shí)間

運(yùn)行時(shí)間

開始時(shí)間

完成時(shí)間

周轉(zhuǎn)時(shí)間

帶權(quán)周轉(zhuǎn)時(shí)間

優(yōu)先數(shù)

|n”);

for(int i = 0;i < num;i++){

printf(“|%3c

%-4d

%-4d

%-4d

%-4d

%-4d

%-6.2f

%-4d|n”,p[i].name,p[i].arriveTime,p[i].runningTime,p[i].beginTime,p[i].finishTime,p[i].cyclingTime,p[i].weigthCyclingTime,p[i].priority);

avgCycTime += p[i].cyclingTime;

avgWeiCycTime += p[i].weigthCyclingTime;

//還原

p[i].arriveTime = 0;

p[i].beginTime = 0;

p[i].finishTime = 0;

p[i].cyclingTime = 0;

p[i].weigthCyclingTime = 0;

p[i].hadRunTime = 0;

p[i].finish = 0;

}

avgWeiCycTime /= num;

avgCycTime /= num;

printf(“平均周轉(zhuǎn)時(shí)間:%.2f

平均帶權(quán)周轉(zhuǎn)時(shí)間:%.2fn”,avgCycTime,avgWeiCycTime);} //時(shí)間片輪轉(zhuǎn)法

void RealRoundRobin(PCB p[],int num,int roundTime){

printf(“nn-----------------------------時(shí)間片:%d------n”,roundTime);

int finishNum = 0;

int curTime = 0;

while(finishNum!= num){

for(int i = 0;i < num;i++){

if(p[i].finish)continue;

//開始時(shí)間

if(p[i].beginTime == 0 && i!= 0){

p[i].beginTime = curTime;

}

//已經(jīng)完成

if(p[i].hadRunTime + roundTime >= p[i].runningTime){

p[i].finishTime = curTime + p[i].runningTimep[i].arriveTime;

p[i].weigthCyclingTime = p[i].cyclingTime/(double)p[i].runningTime;

p[i].finish = 1;

finishNum ++;

curTime += p[i].runningTimep[min].arriveTime;

p[min].weigthCyclingTime = p[min].cyclingTime/(double)p[min].runningTime;

p[min].finish = 1;

finishNum++;

curTime = p[min].finishTime;

}

PrintResult(p, num);}

//動(dòng)態(tài)優(yōu)先級(jí)算法

void DynamicPriorityFirst(PCB p[],int num){

printf(“nn-----------------------------動(dòng)態(tài)優(yōu)先級(jí)算法--n”);

int finishNum = 0;

int curTime = 0;

while(finishNum!= num){

int min = 0;

//查找優(yōu)先級(jí)最高下標(biāo)

for(int i = 1;i < num;i++){

if(p[i].finish == 0 && p[min].priority >= p[i].priority)

min = i;

else if(p[i].finish == 0 && p[min].finish == 1)

min = i;

}

p[min].beginTime = curTime;

p[min].hadRunTime = p[min].runningTime;

p[min].finishTime = p[min].beginTime + p[min].runningTime;

p[min].cyclingTime = p[min].finishTime-p[min].arriveTime;

p[min].weigthCyclingTime = p[min].cyclingTime/(double)p[min].runningTime;

p[min].finish = 1;

finishNum++;

curTime = p[min].finishTime;

}

PrintResult(p, num);}

int main(int argc, const char * argv[]){

PCB pcbGroup[30];

//pcb數(shù)組

int processNum = 0;//進(jìn)程數(shù)

while(1){

//選擇進(jìn)程數(shù)量

while(1){

if(processNum!= 0)

break;

printf(“n----------n”);

printf(“當(dāng)前默認(rèn)進(jìn)程數(shù)范圍%d--%dn”,MIN_PROCESS,MAX_PROCESS);

printf(“1)輸入0可隨機(jī)生成進(jìn)程數(shù)目n2)輸入%d-%d范圍內(nèi)數(shù)字,回車,可生成指定數(shù)目進(jìn)程n>>>>>>”,MIN_PROCESS,MAX_PROCESS);

int num = 0;

scanf(“%d”,&num);

if(num == 0){

processNum = GetRandomNumber(MIN_PROCESS, MAX_PROCESS);

break;

}else{

if((num >= MIN_PROCESS)&&(num <= MAX_PROCESS)){

processNum = num;

InitPCBGroup(pcbGroup,processNum);

break;

}else

printf(“n輸入有誤,請(qǐng)重新輸入.n”);

}

}

//選擇算法

printf(“n-----------------------------請(qǐng)輸入對(duì)應(yīng)選項(xiàng)序號(hào)-----------------------------n”);

printf(“0.重新生成進(jìn)程 | 1.時(shí)間片輪轉(zhuǎn)法 | 2.短作業(yè)優(yōu)先算法 | 3.動(dòng)態(tài)優(yōu)先級(jí)算法 | q.退出n>>>>>>”);

char ch;

while((ch = getchar())== 'n');

switch(ch){

case '0'://0 重新生成進(jìn)程

processNum = 0;break;

case '1'://1 時(shí)間片輪轉(zhuǎn)法

RoundRobin(pcbGroup, processNum);break;

case '2'://2 短作業(yè)優(yōu)先算法

ShortestJobFirst(pcbGroup, processNum);break;

case '3'://3 動(dòng)態(tài)優(yōu)先級(jí)算法

DynamicPriorityFirst(pcbGroup,processNum);break;

case 'q'://q 退出

exit(0);

default:

break;

}

}

return 0;}

第四篇:操作系統(tǒng) 單處理機(jī)系統(tǒng)的進(jìn)程調(diào)度

一.實(shí)驗(yàn)內(nèi)容描述

1.目的

(1)了解Windows內(nèi)存管理器(2)理解Windows的地址過程 2.內(nèi)容

任意給出一個(gè)虛擬地址,通過WinDbg觀察相關(guān)數(shù)據(jù)并找到其物理地址

二.理論分析

Windows采用頁式虛擬存儲(chǔ)管理技術(shù)管理內(nèi)存,頁面是硬件級(jí)別上的最小保護(hù)單位 1.Windows內(nèi)存管理器

Windows的內(nèi)存管理主要由Windows執(zhí)行體中的虛存管理程序負(fù)責(zé),并由環(huán)境子系統(tǒng)負(fù)責(zé),并由環(huán)境子系統(tǒng)負(fù)責(zé)與具體API相關(guān)的一些用戶態(tài)特性的實(shí)現(xiàn)。虛存管理程序是Windows中負(fù)責(zé)內(nèi)存管理的那些子程序和數(shù)據(jù)結(jié)構(gòu)的集合 內(nèi)存管理器的主要任務(wù)是:

地址變換:將一個(gè)進(jìn)程的虛擬地址空間轉(zhuǎn)譯為物理內(nèi)存地址

交換:當(dāng)內(nèi)存不足時(shí),將內(nèi)存中的有些內(nèi)容轉(zhuǎn)移到磁盤上,并且以后還要再次將這些內(nèi)容讀回

2.Windows內(nèi)存管理策略

Windows采用頁式虛擬存儲(chǔ)管理技術(shù)管理內(nèi)存,頁面是硬件級(jí)別上最小的保護(hù)單位。根據(jù)硬件的體系結(jié)構(gòu)不同,頁面尺寸被分為兩種,大頁面和小頁面。X86系統(tǒng)下小頁面為4KB,大頁面為4MB。大頁面的優(yōu)點(diǎn)是:當(dāng)引用同一頁面內(nèi)其他數(shù)據(jù)時(shí),地址轉(zhuǎn)移的速度會(huì)很快。不過使用大頁面通常要較大的內(nèi)存空間,而且必須用一個(gè)單獨(dú)的保護(hù)項(xiàng)來映射,因此可能會(huì)造成出現(xiàn)錯(cuò)誤而不引發(fā)內(nèi)存訪問違例的情況。通常PC機(jī)都為小頁面 3.Windows虛擬地址空間布局 x86結(jié)構(gòu)下的布局方式:

默認(rèn)情況下,32位Windows系統(tǒng)中每個(gè)用戶進(jìn)程可以占有2GB的私有地址空間。操作系統(tǒng)占有另外的2GB 2GB用戶的進(jìn)程地址空間布局如表:

2GB的系統(tǒng)地址空間布局如同:

3.虛擬地址轉(zhuǎn)譯

地址轉(zhuǎn)譯是指將進(jìn)程的虛擬地址空間映射到實(shí)際物理頁面的過程。x86系統(tǒng)中地址轉(zhuǎn)譯過程如圖:

關(guān)鍵數(shù)據(jù)結(jié)構(gòu)如下: 頁目錄:每個(gè)進(jìn)程都有一個(gè)頁目錄,它是內(nèi)存管理器為了映射進(jìn)程中所有的頁表位置而創(chuàng)建的一個(gè)頁面。進(jìn)程也目錄的地址被保存在內(nèi)核進(jìn)程快KPROCESS中,在x86系統(tǒng)上,它被映射到虛擬地址0xC0300000,當(dāng)一個(gè)進(jìn)程正在執(zhí)行時(shí),CPU可以通過寄存器CR3知道該進(jìn)程頁目錄的位置。頁目錄由目錄項(xiàng)(PDE)構(gòu)成,每個(gè)PDE長(zhǎng)4字節(jié),描述了該進(jìn)程中所有可能的頁表的狀態(tài)和位置。其格式和PTE類似。x86系統(tǒng)上,要描述完整的4GB虛擬地址空間,需要1024個(gè)頁表。因此映射這些頁表的進(jìn)程頁目錄需包含1024個(gè)PDE,恰好占用一個(gè)頁面。

頁表:進(jìn)程的頁目錄項(xiàng)指向頁表。每個(gè)頁表占用一個(gè)頁面,由1024項(xiàng)PTE組成。一個(gè)有效的PTE大小為4字節(jié),包含兩個(gè)主域:數(shù)據(jù)所在的物理頁面的頁面幀編號(hào)(PNF)或者內(nèi)存中一個(gè)頁面的物理地址的PFN;一些描述該頁面狀態(tài)和保護(hù)屬性的標(biāo)志。

虛擬地質(zhì)結(jié)構(gòu):x86系統(tǒng)上,一個(gè)32位虛擬地址被解釋為三個(gè)單獨(dú)的部分,頁目錄索引、頁表索引和字節(jié)索引。由于頁目錄項(xiàng)有1024個(gè),因此頁目錄索引為10位;一個(gè)也表中含有1024個(gè)PTE。因此頁表索引也為10位,字節(jié)索引為12位,正好表示一頁(4KB)內(nèi)容

三.實(shí)驗(yàn)步驟及結(jié)果

1.查找頁目錄首地址

以程序WG.exe作為觀測(cè)對(duì)象。

啟動(dòng)WinDbg到內(nèi)核調(diào)試模式,運(yùn)行程序WG.exe。終斷目標(biāo)機(jī)運(yùn)行,輸入命令:kd>!process

發(fā)現(xiàn)WG.exe進(jìn)程正處于運(yùn)行狀態(tài) 輸入命令:

在KPROCESS中名為DirectoryTableBase的域,對(duì)應(yīng)值為0x9fa6000,即WG.exe進(jìn)程頁目錄的物理地址 查看CR3寄存其中的內(nèi)容,輸入命令:

CR3寄存其中的值和KPROCESS中記錄的頁目錄基址相同。這是因?yàn)樵贑PU切換執(zhí)行任務(wù)時(shí),其內(nèi)容要更新為當(dāng)前進(jìn)程的頁目錄基址。2.地址轉(zhuǎn)譯過程

假設(shè)給定的虛擬地址為0x401001 輸入命令:

可以看到:

PDE的虛擬地址為C0300004.PTE的虛擬地址為C0001004 最后一行信息“pfn 9e4a---DA--UWEV”表示PDE中的具體內(nèi)容,9e4a是給定虛擬地址所在頁表在內(nèi)存中對(duì)應(yīng)的物理頁號(hào),“---DA—UWEV”是標(biāo)志信息,“pfn a173----A--UREV”表示PTE中的具體內(nèi)容,a173是數(shù)據(jù)頁裝入內(nèi)存的物理頁號(hào)。

將數(shù)據(jù)頁對(duì)應(yīng)的物理頁號(hào)a173加上業(yè)內(nèi)索引(0x1)即可得到虛擬地址0x401001的物理地址

3.觀察系統(tǒng)頁表

給定觀測(cè)虛擬地址為0x80001001 輸入命令:

當(dāng)前正在執(zhí)行的進(jìn)程是:WG.exe 輸入命令:

得到PDE為C0300800,其對(duì)應(yīng)的物理頁號(hào)為3b 繼續(xù)讓目標(biāo)機(jī)運(yùn)行,啟動(dòng)A.exe,然后中斷目標(biāo)機(jī)運(yùn)行。輸入命令:

當(dāng)前正在執(zhí)行的進(jìn)程為A.exe 輸入命令:

PDE信息和對(duì)應(yīng)的物理頁號(hào)與前面觀測(cè)到的相同

四.結(jié)論

1.數(shù)據(jù)頁對(duì)應(yīng)的物理頁號(hào)加上相應(yīng)業(yè)內(nèi)索引即可得到虛擬地址的物理地址 2.不同的進(jìn)程頁目錄都指向了相同的系統(tǒng)表頁

五.心得體會(huì)

在這次上機(jī)實(shí)驗(yàn),通過對(duì)WinDbg和VPc的調(diào)試運(yùn)用,我熟悉了Windows內(nèi)存管理器的結(jié)構(gòu),也認(rèn)知到Windows如何進(jìn)行地址轉(zhuǎn)譯和轉(zhuǎn)換。對(duì)相關(guān)的知識(shí)也進(jìn)行了溫習(xí),更牢的掌握了相關(guān)知識(shí)。當(dāng)然這些還遠(yuǎn)遠(yuǎn)不夠,我以后還要繼續(xù)不斷努力,去學(xué)習(xí)了解掌握操作系統(tǒng)的各方面知識(shí)。

附錄:

1.A.exe代碼

#include #include

#define N 1

HANDLE mutexSemaphore;HANDLE synchSemaphore_1;HANDLE synchSemaphore_2;

HANDLE mutexDisplay;

void Display(char*str,int delayTime){ if(WaitForSingleObject(mutexDisplay,INFINITE)==WAIT_OBJECT_0){ printf(“%snn”,str);ReleaseMutex(mutexDisplay);Sleep(delayTime);} }

void useTime(double limit){ for(double i=0;i<=limit;i+=0.001);}

void CreateProduct(){ Display(“Creating a production...”,0);useTime(200000);Display(“Creating finished.”,100);}

void PutProduct(){ Display(“Putting a production...”,0);useTime(150000);Display(“Putting finished”,100);}

void GetProduct(){ Display(“Getting a production...”,0);useTime(100000);Display(“Getting finished.”,100);}

void ConsumeProduct(){ Display(“Cosuming a production...”,0);useTime(100000);Display(“Cosuming finished.”,100);}

void Producer(){ while(true){ CreateProduct();

if(WaitForSingleObject(synchSemaphore_1,INFINITE)==WAIT_OBJECT_0){

if(WaitForSingleObject(mutexSemaphore,INFINITE)==WAIT_OBJECT_0){ PutProduct();ReleaseSemaphore(mutexSemaphore,1,NULL);} ReleaseSemaphore(synchSemaphore_2,1,NULL);} } }

void Consumer(){ while(true){

if(WaitForSingleObject(synchSemaphore_2,INFINITE)==WAIT_OBJECT_0){

if(WaitForSingleObject(mutexSemaphore,INFINITE)==WAIT_OBJECT_0){ GetProduct();ReleaseSemaphore(mutexSemaphore,1,NULL);} ReleaseSemaphore(synchSemaphore_1,1,NULL);} ConsumeProduct();} }

int main(){ HANDLE thread[2];DWORD threadID[2];

synchSemaphore_1=CreateSemaphore(NULL,N,N,NULL);synchSemaphore_2=CreateSemaphore(NULL,0,N,NULL);mutexSemaphore=CreateSemaphore(NULL,1,1,NULL);

mutexDisplay=CreateMutex(NULL,FALSE,NULL);

printf(“Program start.Please use WinDbg to observe main thread.nPress any key to continue...n”);getchar();

thread[0]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)(Producer),NULL,CREATE_SUSPENDED,&threadID[0]);printf(“A producer was created.Please use WinDbg to observe producer thread.nPress any key to continue...n”);getchar();

thread[1]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)(Consumer),NULL,CREATE_SUSPENDED,&threadID[1]);printf(“A Consumer was created.Please use WinDbg to observe Consumer thread.nPress any key to continue...n”);getchar();

printf(“Please select:n[1]Make producer thread runn[2]Make Consumer thread runn”);bool flag=true;bool flag_1=true,flag_2=true;int count=0;while(flag){ if(getchar()=='1'&&flag_1){ ResumeThread(thread[0]);count++;flag_1=false;} else if(getchar()=='2'&&flag_2){ ResumeThread(thread[1]);count++;flag_2=false;} if(count==2)flag=false;} WaitForMultipleObjects(1,thread,TRUE,INFINITE);

return 0;}

2.WG.exe代碼: #include

int main(){ int a=0;printf(“I'm Wangn”);while(true){a++;} }

第五篇:生產(chǎn)調(diào)度小結(jié)

作為計(jì)劃調(diào)度,時(shí)刻都要按計(jì)劃要求注意產(chǎn)品的流動(dòng)狀態(tài)。鑄造作為產(chǎn)品的始端,是否能夠按計(jì)劃完成客戶訂單起著極其重要的地位。因此每天要到鑄造車間巡視3—4次,監(jiān)督重力和低壓是否按計(jì)劃進(jìn)行生產(chǎn),對(duì)于即將發(fā)貨的型號(hào)要及時(shí)督促完成,以免影響發(fā)貨。在查看鑄造型號(hào)時(shí),有的鑄件型號(hào)刻于零件的外圈,有的位于內(nèi)邊緣。還可以從輪轂的輻條上得到型號(hào)(模具號(hào)+規(guī)格)。

機(jī)加作為對(duì)毛坯的處理階段,要關(guān)注每天所加工的型號(hào)是否按計(jì)劃正常進(jìn)行,對(duì)于發(fā)現(xiàn)的問題要及時(shí)告知,若有不改者及時(shí)通知其部門負(fù)責(zé)人。在機(jī)加車間巡視時(shí)不僅要關(guān)注即將發(fā)貨的型號(hào),還要注意已加工完成還未及時(shí)轉(zhuǎn)入下個(gè)工序的產(chǎn)品。若出現(xiàn)這類情況告知有關(guān)人員并及時(shí)清理。一旦出現(xiàn)問題機(jī)加責(zé)任重大,自身疏忽監(jiān)督也難辭其咎,所以,要全面的,認(rèn)真對(duì)待自己的工作,不得有半點(diǎn)馬虎。在機(jī)加巡視時(shí),留心學(xué)習(xí)各個(gè)車輪型號(hào),要達(dá)到當(dāng)看見輪子時(shí)就能知道它屬于什么模具類型和尺寸大小

做事要有主次,有輕重,有責(zé)任,每天要有一個(gè)清醒的任務(wù),今天要完成什么,或者什么該加緊完成,對(duì)于即將出貨的訂單型號(hào)要及時(shí)去鑄造、機(jī)加、涂裝巡視產(chǎn)品歸于何處并告知相關(guān)人員及時(shí)將此類型號(hào)的產(chǎn)品抓緊完成。

下載處理機(jī)調(diào)度與死鎖小結(jié)word格式文檔
下載處理機(jī)調(diào)度與死鎖小結(jié).doc
將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
點(diǎn)此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)范文推薦

    工程機(jī)械調(diào)度管理工作小結(jié)

    工程機(jī)械調(diào)度管理工作小結(jié) 隨著我國(guó)經(jīng)濟(jì)的迅速發(fā)展和科學(xué)技術(shù)的進(jìn)步,國(guó)家對(duì)基礎(chǔ)工程設(shè)施建設(shè)的高度重視和強(qiáng)有力的投入,新設(shè)備,新材料,新工藝,新技術(shù)不斷出現(xiàn)并被廣泛利用,使得我......

    調(diào)度所年度個(gè)人小結(jié)

    調(diào)度所年度個(gè)人小結(jié) 調(diào)度所年度個(gè)人小結(jié)2007-02-06 09:48:56四季輪回。不知不覺,本人已在調(diào)度這個(gè)新的工作崗位上度過了平凡但卻充實(shí)的第一年。年二月末,本人從昌化操作站至調(diào)......

    電網(wǎng)調(diào)度學(xué)習(xí)小結(jié)

    電力學(xué)習(xí)總結(jié) 基層是企業(yè)穩(wěn)步發(fā)展的基礎(chǔ),基層安全生產(chǎn)更是有著舉足輕重的地位,100-1=0是無數(shù)血的教訓(xùn),這就要求一線員工高度重視安全生產(chǎn)。師傅的言傳身教感染著我,讓我對(duì)自身的......

    水庫調(diào)度個(gè)人小結(jié)

    ****年個(gè)人小結(jié) 日歷又翻過了****年,回望自己留下的那串腳印,深深淺淺,有不足,有收獲,雖沒轟轟烈烈,倒也踏踏實(shí)實(shí)。 做為****的職工,既感到光榮,也感到責(zé)任重大。年初我*動(dòng)員全廠干......

    生產(chǎn)計(jì)劃與調(diào)度管理制度

    生產(chǎn)計(jì)劃與調(diào)度管理制度 1.目的: 提高生產(chǎn)效率,實(shí)現(xiàn)準(zhǔn)時(shí)化生產(chǎn),確保市場(chǎng)需要得到有效的反應(yīng),銷售訂單得到有效的執(zhí)行,生產(chǎn)過程得到有效的控制,用戶需求得到有效的滿足。 2.......

    電力調(diào)度所某年度個(gè)人小結(jié)

    四季輪回。不知不覺,本人已在調(diào)度這個(gè)新的工作崗位上度過了平凡但卻充實(shí)的第一年。XX年二月末,本人從昌化操作站至調(diào)度所,從事調(diào)度與監(jiān)控工作。這是領(lǐng)導(dǎo)對(duì)本人的信任與培養(yǎng)。我......

    XX年度電力調(diào)度所個(gè)人小結(jié)(精選5篇)

    四季輪回。不知不覺,本人已在調(diào)度這個(gè)新的工作崗位上度過了平凡但卻充實(shí)的第一年。XX年二月末,本人從昌化操作站至調(diào)度所,從事調(diào)度與監(jiān)控工作。這是領(lǐng)導(dǎo)對(duì)本人的信任與培養(yǎng)。我......

    生產(chǎn)計(jì)劃與調(diào)度搜集資料

    JIT生產(chǎn)模式: JIT生產(chǎn)是日本豐田汽車公司根據(jù)自身的特點(diǎn),逐步創(chuàng)立的一種獨(dú)特的多品種、小批量、高質(zhì)量和低消耗制造模式的生產(chǎn)方式。JIT生產(chǎn)的基本原理來源于超級(jí)市場(chǎng)以需定供......

主站蜘蛛池模板: 国产精品福利一区二区久久| 无码午夜福利片在线观看| 午夜自产精品一区二区三区| 久久永久免费人妻精品下载| 中文字幕乱码在线播放| 成人av久久一区二区三区| 特级无码毛片免费视频播放▽| 国产精品无码免费专区午夜| 中文字幕亚洲欧美日韩在线不卡| 日本另类αv欧美另类aⅴ| 亚洲成av人影片在线观看| 亚洲 中文字幕 日韩 无码| 精品国产乱码久久久久夜深人妻| 荫蒂添的好舒服视频囗交| 国产午夜影视大全免费观看| 无码A片| 国产精品无码久久久久久| 久久婷婷五月综合色中文字幕| 国产农村妇女精品一二区| 99热这里有精品| 国产国语在线播放视频| 亚洲中文字幕久久精品无码喷水| 国产精品一国产精品| 久久久久亚洲精品男人的天堂| 国产免费一区二区三区在线观看| 无码帝国www无码专区色综合| 欧美精品无码久久久久久| 大乳丰满人妻中文字幕日本| 波多野结衣一区二区三区av高清| 国产精品一区二区久久| 亚洲综合色噜噜狠狠网站超清| 亚洲精品成人网线在线播放va| 日韩免费无码专区精品观看| 成人午夜福利免费专区无码| 天堂av男人在线播放| 又黄又爽又猛1000部a片| 亚洲偷自拍拍综合网| 在线日本国产成人免费不卡| 久9re热视频这里只有精品| 四虎国产精品永久在线| 日韩av片无码一区二区三区不卡|