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

正文內(nèi)容

操作系統(tǒng)課程設(shè)計報告-資料下載頁

2025-05-12 18:03本頁面

【導(dǎo)讀】讀者寫者問題可以這樣的描述:有一群寫者和一群讀者,寫者在寫同一本書,讀者。也就是說,讀者和寫者同時提出請求時,讀者優(yōu)先。作,另外需要有一個信號量S來確定當(dāng)前是否可操作。信號量機(jī)制是支持多道程序的并。制的一個經(jīng)典范例。限制,即最多允許RN個讀者同時讀。為此,又引入了一個信號量L,并賦予初值為RN,操作,使L的值減1。者要進(jìn)入讀時,必然會因wait操作失敗而堵塞。g_hReadSemaphore=CreateSemaphore;//創(chuàng)建信號燈,當(dāng)前可用的資源

  

【正文】 d,work[0],work[1],work[2])。 for(k=0。k5。k++) { result[k]=1。 } for(l=0。l5。l++) for(k=0。k5。k++) { if(result[k]==1amp。amp。need[k][0]=work[0]amp。amp。need[k][1]=work[1]amp。amp。need[k][2]=work[2]) { work[0]=work[0]+allocation[k][0]。 work[1]=work[1]+allocation[k][1]。 work[2]=work[2]+allocation[k][2]。 result[k]=l。c++。 printf(P%d,k+1)。 } } if(c==5) printf(\nIt is safe!\n)。 else printf(\nIt is dangerous.\n)。 } 五 、 內(nèi)在分配模擬實驗 動態(tài)分區(qū)是指系統(tǒng)不預(yù)先劃分固定分區(qū),而是在裝入程序的時候劃分內(nèi)存區(qū)域,使得為程序分配的分區(qū)大小恰好等 于該程序的需求量,且分區(qū)的個數(shù)是動態(tài)的。顯然動態(tài)分區(qū)有較大的靈活性,較之固定分區(qū)能獲得好的內(nèi)存利用率。 動態(tài)分區(qū)管理可以用兩種數(shù)據(jù)結(jié)構(gòu)實現(xiàn),一種是已分配區(qū)表和空閑區(qū)表,也就是用預(yù)先定義好的系統(tǒng)空間來存放空間分配信息。 另一種也是最常用的就是空閑鏈表,由于對分區(qū)的操作是動態(tài)的,所以很難估計數(shù)據(jù)結(jié)構(gòu)所占用的空間,而且空閑區(qū)表會占用寶貴的系統(tǒng)空間,所以提出了空閑鏈表的概念。其特點是用于管理分區(qū)的信息動態(tài)生成并和該分區(qū)在物理地址上相鄰。這樣由于可以簡單用兩個空閑塊之間的距離定位已分配空間,不僅節(jié)約了系統(tǒng)空間,而且不 必維持已分配空間的信息。本實驗是要做一個模擬程序,來模擬動態(tài)分區(qū)算法的分配和回收過程,并不是真正的去分配和回收內(nèi)存。基本的模擬方法有兩種: ( 1) 先從內(nèi)存中申請一塊存儲區(qū),對這塊存儲區(qū)進(jìn)行模擬的分配和回收活動。 ( 2) 不申請存儲區(qū),自己定義一塊虛擬的存儲區(qū),對這塊存儲區(qū)進(jìn)行模擬的分配和回收活動,分配和回收僅僅是對數(shù)據(jù)結(jié)構(gòu)的修改而已。 程序代碼: includeiostream using namespace std。 int FreePartition[100]。//空閑分區(qū)塊數(shù)組 int FirstPartition[100]。//首次適應(yīng)算法數(shù)組 int CycleFirstPartition[100]。//循環(huán)首次適應(yīng)算法數(shù)組 int BestPartition[100]。//最佳適應(yīng)算法數(shù)組 int WorstPartition[100]。//最壞適應(yīng)算法數(shù)組 int ProcessNeed[100]。//每個作業(yè)的大小 int PartitionNum,ProcessNum。//分區(qū)塊數(shù),作業(yè)數(shù) //首次適應(yīng)算法 void First() { int i,j。 char str。 for(i=0。iPartitionNum。i++) { FirstPartition[i]=FreePartition[i]。 } for(i=0。iProcessNum。i++)//找出第一塊滿足作業(yè)的分區(qū) for(j=0。jPartitionNum。j++) { if(ProcessNeed[i]FirstPartition[j]) continue。 else { FirstPartition[j]=ProcessNeed[i]。//找到后把分區(qū)大小減去作業(yè)的大小 ?? ? ? ? ? ? ? ?str=39。A39。+i。 cout作業(yè) str在第 j+1塊分區(qū)中 endl。 break。 } } coutendl。 cout分配之后剩余情況: endl。 ?? ?for(i=0。iPartitionNum。i++) coutFirstPartition[i] 。 coutendlendl。 } //循環(huán)首次適應(yīng)算法 void CycleFirst() { int i,j=1。 char str。 for(i=0。iPartitionNum。i++) { CycleFirstPartition[i]=FreePartition[i]。 } for(i=0。iProcessNum。i++) //for(j=0。jPartitionNum。j++) { j=j1。 while(jPartitionNum) { if(ProcessNeed[i]CycleFirstPartition[j]) //continue。 j++。 else { CycleFirstPartition[j]=ProcessNeed[i]。 str=39。A39。+i。 cout作業(yè) str在第 j+1塊分區(qū)中 endl。 break。 } //j++。 //coutj 。 if(j==PartitionNum amp。amp。 i!=ProcessNum) { i=1。 } } } coutendl。 cout分配之后剩余情況: endl。 for(i=0。iPartitionNum。i++) coutCycleFirstPartition[i] 。 coutendlendl。 } //最佳適應(yīng)算法 void Best() { int i,j,k。 char str。 ?? ?for(i=0。iPartitionNum。i++) { BestPartition[i]=FreePartition[i]。 } for(i=0。iProcessNum。i++) { k=0。 for(j=0。jPartitionNum。j++) { //coutBestPartition[j] ? ProcessNeed[i]endl。 if(BestPartition[j]=ProcessNeed[i]) { k=j。 break。 } } ?for(int n=0。nPartitionNum。n++) ?{ ? ? if(BestPartition[n]BestPartition[k] amp。amp。 BestPartition[n]=ProcessNeed[i])//找最佳的 ? ?k=n。 ?} BestPartition[k]=ProcessNeed[i]。 str=39。A39。+i。 cout作業(yè) str在第 j+1塊分區(qū)中 endl。 } coutendl。 cout分配之后剩余情況: endl。 for(i=0。iPartitionNum。i++) coutBestPartition[i] 。 coutendlendl。 } //最壞適應(yīng)算法 void Worst() { int i,j,k。 char str。 for(i=0。iPartitionNum。i++) { WorstPartition[i]=FreePartition[i]。 } for(i=0。iProcessNum。i++) { k=0。 for(j=0。jPartitionNum。j++) { if(WorstPartition[j]WorstPartition[k])//找到最大的分區(qū) ? k=j。 } WorstPartition[k]=ProcessNeed[i]。 str=39。A39。+i。 cout作業(yè) str在第 j+1塊分區(qū)中 endl。 } coutendl。 cout分配之后剩余情況: endl。 for(i=0。iPartitionNum。i++) coutWorstPartition[i] 。 coutendlendl。 } void main() { int i。 cout輸入分區(qū)塊數(shù): endl。 cinPartitionNum。 cout輸入每個分區(qū)的大小: endl。 for(i=0。iPartitionNum。i++) cinFreePartition[i]。 cout輸入作業(yè)數(shù): endl。 cinProcessNum。 cout輸入每個作業(yè)的大?。?endl。 for(i=0。iProcessNum。i++) cinProcessNeed[i]。 cout首次適應(yīng)算法 endl。 First()。 cout循環(huán)首次適應(yīng)算法 endl。 ?? ?CycleFirst()。 cout最佳適應(yīng)算法 endl。 Best()。 cout最壞適應(yīng)算法 endl。 Worst()。
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1