freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

實(shí)現(xiàn)生產(chǎn)者消費(fèi)者問題操作系統(tǒng)課程設(shè)計(jì)報(bào)告(編輯修改稿)

2025-04-21 13:02 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 要長(zhǎng)大!data = %s!\n, i, thing[data])。 //等待存放空間 P(g_semBuffer)。 //有地方,先鎖住緩沖區(qū)g_buf P(g_mutex)。 //記錄消費(fèi)的物品 ptr = 。 //再移動(dòng)緩沖區(qū)指針 = (+1)%BUFFER_NUM。 //讓其他消費(fèi)者或生產(chǎn)者使用 g_buf V(g_mutex)。 printf(小草%03d:長(zhǎng)大了!buf[%d] = %s\n, i, ptr, thing[data])。 [ptr] = data。 Sleep(rate/2*rand()%10+1800)。 //放好了完畢,釋放一個(gè)產(chǎn)品 printf(小草%03d: buf[%d]=%s 小白兔快來!\n,i, ptr,thing[[ptr]])。 V(g_semProduct)。 } return 0。 } int main(int argc, char *argv[]) { //線程技術(shù),前面為消費(fèi)者線程,后面為生產(chǎn)者線程 HANDLE hThread[CONSUMER_NUM+PRODUCER_NUM]。 //線程計(jì)數(shù) //srand(time())。 DWORD tid。 int i=0。 //初始化信號(hào)量 g_mutex=CreateSemaphore(NULL,BUFFER_NUM,BUFFER_NUM,mutexOfConsumerAndProducer)。 g_semBuffer=CreateSemaphore(NULL,BUFFER_NUM,BUFFER_NUM,BufferSemaphone)。 g_semProduct= CreateSemaphore(NULL, 0, BUFFER_NUM, ProductSemaphone)。 if (!g_semBuffer||!g_semProduct||!g_mutex) { printf(Create Semaphone Error!\n)。 return 1。 } Int totalThreads = CONSUMER_NUM+PRODUCER_NUM。 // 開啟消費(fèi)者線程 printf(先請(qǐng)小白兔就位!\n)。 for (i=0。 iCONSUMER_NUM。 i++) { hThread[i] = CreateThread(NULL, 0, Consumer, amp。i, 0, amp。tid)。 if ( hThread[i] ) WaitForSingleObject(hThread[i], 10)。 } printf(請(qǐng)小草就位!\n)。 for (。itotalThreads。 i++) { hThread[i] = CreateThread(NULL, 0, Producer, amp。i, 0, amp。tid)。 if ( hThread[i] ) WaitForSingleObject(hThread[i], 10)。 } //生產(chǎn)者和消費(fèi)者的執(zhí)行 WaitForMultipleObjects(totalThreads, hThread, TRUE, INFINITE)。 return 0。 }第二部分:實(shí)現(xiàn)銀行家算法一、題目:實(shí)現(xiàn)銀行家算法課程設(shè)計(jì)目的: l 了解多道程序系統(tǒng)中,多個(gè)進(jìn)程并發(fā)執(zhí)行的資源分配。 l 掌握死鎖的產(chǎn)生的原因、產(chǎn)生死鎖的必要條件和處理死鎖的基本方法。 l 掌握預(yù)防死鎖的方法,系統(tǒng)安全狀態(tài)的基本概念。 l 掌握銀行家算法,了解資源在進(jìn)程并發(fā)執(zhí)行中的資源分配策略。 l 理解死鎖避免在當(dāng)前計(jì)算機(jī)系統(tǒng)不常使用的原因二:設(shè)計(jì)內(nèi)容管理員可以把一定數(shù)量的作業(yè)供多個(gè)用戶周轉(zhuǎn)使用,為保證作業(yè)的安全管理員規(guī)定: 1)、當(dāng)一個(gè)用戶對(duì)作業(yè)的最大需求量不超過管理員現(xiàn)有的資金就要接納該用戶; 2)、用戶可以分期貸款,但垡的總數(shù)不能超過最大需求量;3)、當(dāng)管理員現(xiàn)有的作業(yè)不能滿足用戶的沿需數(shù)時(shí),對(duì)用戶的請(qǐng)求可推遲支付,但總能使用戶在有限的時(shí)間里得到請(qǐng)求; 4)、當(dāng)用戶得到所需的全部作業(yè)后,一定能在有限的時(shí)間里歸還所有的作業(yè)。假設(shè)共有3類資源A B C,分別為10,5,7個(gè) 三、開發(fā)環(huán)境此程序的設(shè)計(jì)在Windows XP操作系統(tǒng)下,基于Microsoft Visual C++。用C++語言實(shí)現(xiàn)編程。四、分析設(shè)計(jì)預(yù)備知識(shí)1)、死鎖概念:在多道程序系統(tǒng)中,雖可借助于多個(gè)進(jìn)程的并發(fā)執(zhí)行,來改善系統(tǒng)的資源利用率,提高系統(tǒng)的吞吐量,但可能發(fā)生一種危險(xiǎn)━━死鎖。所謂死鎖(Deadlock),是指多個(gè)進(jìn)程在運(yùn)行中因爭(zhēng)奪資源而造成的一種僵局(Deadly_Embrace),當(dāng)進(jìn)程處于這種僵持狀態(tài)時(shí),若無外力作用,它們都將無法再向前推進(jìn)。一組進(jìn)程中,每個(gè)進(jìn)程都無限等待被該組進(jìn)程中另一進(jìn)程所占有的資源,因而永遠(yuǎn)無法得到的資源,這種現(xiàn)象稱為進(jìn)程死鎖,這一組進(jìn)程就稱為死鎖進(jìn)程。2)、關(guān)于死鎖的一些結(jié)論: 216。參與死鎖的進(jìn)程最少是兩個(gè)(兩個(gè)以上進(jìn)程才會(huì)出現(xiàn)死鎖) 216。參與死鎖的進(jìn)程至少有兩個(gè)已經(jīng)占有資源 216。參與死鎖的所有進(jìn)程都在等待資源 216。參與死鎖的進(jìn)程是當(dāng)前系統(tǒng)中所有進(jìn)程的子集 注:如果死鎖發(fā)生,會(huì)浪費(fèi)大量系統(tǒng)資源,甚至導(dǎo)致系統(tǒng)崩潰。 3)、資源分類: 永久性資源:可以被多個(gè)進(jìn)程多次使用(可再用資源) l 可搶占資源 l 不可搶占資源 臨時(shí)性資源:只可使用一次的資源;如信號(hào)量,中斷信號(hào),同步信號(hào)等(可消耗性資源) “申請(qǐng)分配使用釋放”模式 4)、產(chǎn)生死鎖的四個(gè)必要條件:①互斥使用(資源獨(dú)占):指進(jìn)程對(duì)所分配到的資源進(jìn)進(jìn)行排它性使用,即在一段時(shí)間內(nèi)某資源只有一個(gè)進(jìn)程使用。如果此時(shí)還有其他進(jìn)程請(qǐng)求資源,則請(qǐng)求者只能等待,直至占有該資源的進(jìn)程用畢釋放②不可強(qiáng)占(不可剝奪):資源申請(qǐng)者不能強(qiáng)行的從資源占有者手中奪取資源,資源只能由占有者自愿釋放 。指進(jìn)程已經(jīng)保持了至少一個(gè)資源,但又提出了新的資源請(qǐng)求,而該資源又被其他進(jìn)程占有,此時(shí)請(qǐng)求進(jìn)程阻塞,但又對(duì)自己獲得的其他資源保持不放③請(qǐng)求和保持(部分分配,占有申請(qǐng)):一個(gè)進(jìn)程在申請(qǐng)新的資源的同時(shí)保持對(duì)原有資源的占有(只有這樣才是動(dòng)態(tài)申請(qǐng),動(dòng)態(tài)分配) 。指進(jìn)程已獲得的資源,在未使用完以前,不能被剝奪,只能在使用完時(shí)由自己釋放。④循環(huán)等待:只發(fā)生死鎖時(shí),必然存在一個(gè)進(jìn)程資源的環(huán)形鏈,即進(jìn)程集合{P1 , P2 , … , Pn}, 其中P1等待P2占有的資源,P2等待P3占有的資源,…,Pn等待P1占有的資源,形成一個(gè)進(jìn)程等待環(huán)路 5)、死鎖的解決方案 產(chǎn)生死鎖的例子 申請(qǐng)不同類型資源產(chǎn)生死鎖 P1: … 申請(qǐng)打印機(jī) 申請(qǐng)掃描儀 使用 釋放打印機(jī) 釋放掃描儀 … P2: … 申請(qǐng)掃描儀 申請(qǐng)打印機(jī) 使用 釋放打印機(jī) 釋放掃描儀 … 申請(qǐng)同類資源產(chǎn)生死鎖(如內(nèi)存) 設(shè)有資源R,R有m個(gè)分配單位,由n個(gè)進(jìn)程P1,P2,…,Pn(n m)共享。假設(shè)每個(gè)進(jìn)程對(duì)R的申請(qǐng)和釋放符合下列原則: * 一次只能申請(qǐng)一個(gè)單位 * 滿足總申請(qǐng)后才能使用 * 使用完后一次性釋放 m=2,n=3 資源分配不當(dāng)導(dǎo)致死鎖產(chǎn)生6)、死鎖預(yù)防: 定義:在系統(tǒng)設(shè)計(jì)時(shí)確定資源分配算法,保證不發(fā)生死鎖。①破壞“不可剝奪”條件:在允許進(jìn)程動(dòng)態(tài)申請(qǐng)資源前提下規(guī)定,一個(gè)進(jìn)程在申請(qǐng)新的資源不能立即得到滿足而變?yōu)榈却隣顟B(tài)之前,必須釋放已占有的全部資源,若需要再重新申請(qǐng) ②破壞“請(qǐng)求和保持”條件:要求每個(gè)進(jìn)程在運(yùn)行前必須一次性申請(qǐng)它所要求的所有資源,且僅當(dāng)該進(jìn)程所要資源均可滿足時(shí)才給予一次性分配 ③破壞“循環(huán)等待”條件:采用資源有序分配法:把系統(tǒng)中所有資源編號(hào),進(jìn)程在申請(qǐng)資源時(shí)必須嚴(yán)格按資源編號(hào)的遞增次序進(jìn)行,否則操作系統(tǒng)不予分配。安全狀態(tài)與不安全狀態(tài) 處理死鎖的基本方法:為保證系統(tǒng)中諸進(jìn)程的正常運(yùn)行,應(yīng)事先采取必要的措施,來預(yù)防發(fā)生死鎖。在系統(tǒng)中已經(jīng)出現(xiàn)死鎖后,則應(yīng)及時(shí)檢測(cè)到死鎖的發(fā)生,并采取適當(dāng)措施來解除死鎖。目前,處理死鎖的方法可以歸結(jié)為以下四種:①預(yù)防死鎖。這是一種較簡(jiǎn)單和直觀的事先預(yù)防的方法。該方法是通過設(shè)置某些限制條件,去破壞產(chǎn)生死鎖的四個(gè)必要條件中的一個(gè)或是幾個(gè)條件,來預(yù)防發(fā)生死鎖。預(yù)防死鎖是一種較易實(shí)現(xiàn)的方法,已被廣泛使用。但由于所施加的限制條件往往太嚴(yán)格,可能會(huì)導(dǎo)致系統(tǒng)資源利用率和系統(tǒng)吞吐量降低。②避免死鎖。該方法同樣是屬于事先預(yù)防的策略,但它并不須事先采取限制措施去破壞產(chǎn)生死鎖的四個(gè)必要條件,而是在資源的動(dòng)態(tài)分配過程中,用某中方法去防止系統(tǒng)進(jìn)入不安全狀態(tài),從而避免發(fā)生死鎖。這種方法只需要先加以較弱的限制條件,便可獲得較高的資源利用率和系統(tǒng)吞吐量,但在實(shí)現(xiàn)上有一定的難度。目前在較完善的系統(tǒng)中,常用此方法避免發(fā)生死鎖。③檢測(cè)死鎖。這種方法并不須實(shí)現(xiàn)采取任何
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1