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

正文內(nèi)容

操作系統(tǒng)實(shí)驗(yàn)進(jìn)程的同步heu-資料下載頁

2025-07-07 14:06本頁面
  

【正文】 棧幀,綠色箭頭指向等待 Empty 信號(hào)量的代碼行,查看 Producer 函數(shù)中變量 i 的值為 14,表示生產(chǎn)者線程正在嘗試生產(chǎn) 14 號(hào)產(chǎn)品。 在“ 調(diào)用堆 ?!?窗口中 雙擊 PsWaitForSemaphore 函數(shù)的 堆棧 幀,查 看 Empty 信號(hào) 量計(jì) 數(shù)(SemaphoreCount)的值為1,所以會(huì)調(diào)用 PspWait 函數(shù)將生產(chǎn)者線程放入 Empty 信號(hào)量的等待隊(duì)列中進(jìn)行等待(讓出 CPU)。 激活虛擬機(jī)窗口查看輸出的結(jié)果。生產(chǎn)了從 0 到 13 的 14 個(gè)產(chǎn)品,但是只消費(fèi)了從 0 到 3 的 4 個(gè)產(chǎn)品,所以緩沖池中的 10 個(gè)緩沖區(qū)就都被占用了,這與之前調(diào)試的結(jié)果是一致的。 5)釋放信號(hào)量(喚醒)刪除所有斷點(diǎn)。 在 文件的 Consumer 函數(shù)中,釋放 Empty 信號(hào)量的代碼行(第 180 行) ReleaseSemaphore(EmptySemaphoreHandle, 1, NULL)。 添加一個(gè)斷點(diǎn)。 按 F5 繼續(xù)調(diào)試,到斷點(diǎn)處中斷。 查看 Consumer 函數(shù)中變量 i 的值為 4,說明已經(jīng)消費(fèi)了 4 號(hào)產(chǎn)品。 按照 中的方法使用 F10 和 F11 調(diào)試進(jìn)入 PsReleaseSemaphore 函數(shù)。 查看 PsReleaseSemaphore 函數(shù)中 Empty 信號(hào)量計(jì)數(shù)(SemaphoreCount)的值為1,和生產(chǎn)者線程被阻塞時(shí)的值是一致的。 按 F10 單步調(diào)試 PsReleaseSemaphore 函數(shù),直到在代碼行(第 132 行) PspWakeThread(amp。SemaphoreWaitListHead, STATUS_SUCCESS)。 處中斷。此時(shí) Empty 信號(hào)量計(jì)數(shù)的值已經(jīng)由1 增加為了 0,需要調(diào)用 PspWakeThread 函數(shù)喚醒阻塞在 Empty 信號(hào)量等待隊(duì)列中的生產(chǎn)者線程(放入就緒隊(duì)列中),然后調(diào)用 PspSchedule 函數(shù)執(zhí)行調(diào)度,這樣生產(chǎn)者線程就得以繼續(xù)執(zhí)行。6)驗(yàn)證生產(chǎn)者線程被喚醒后,是從之前被阻塞時(shí)的狀態(tài)繼續(xù)執(zhí)行的: 在 文件中 PsWaitForSemaphore 函數(shù)的最后一行(第 83 行)代碼處添加一個(gè)斷點(diǎn)。 按 F5 繼續(xù)調(diào)試,在斷點(diǎn)處中斷。 查看 PsWaitForSemaphore 函數(shù)中 Empty 信號(hào)量計(jì)數(shù)(SemaphoreCount)的值為 0,和生產(chǎn)者線程被喚醒時(shí)的值是一致的。 在“調(diào)用堆?!贝翱谥锌梢钥吹绞怯?Producer 函數(shù)進(jìn)入的。激活 Producer 函數(shù)的堆棧幀,查看Producer 函數(shù)中變量 i 的值為 14,表明之前被阻塞的、正在嘗試生產(chǎn) 14 號(hào)產(chǎn)品的生產(chǎn)者線程已經(jīng)從 PspWait 函數(shù)返回并繼續(xù)執(zhí)行了。 結(jié)束此次調(diào)試。 (4)修改 EOS 的信號(hào)量算法1)修改 PsWaitForSemaphore 函數(shù)2)修改 PsReleaseSemaphore 函數(shù)3)使用修改完畢的 EOS Kernel 項(xiàng)目生成完全版本的 SDK 文件夾,并覆蓋之前的生產(chǎn)者-消費(fèi)者應(yīng)用程序項(xiàng)目的 SDK 文件夾。 4)按 F5 調(diào)試執(zhí)行原有的生產(chǎn)者-消費(fèi)者應(yīng)用程序項(xiàng)目,結(jié)果必須仍然與圖 132 一致。如果有錯(cuò)誤,可以調(diào)試內(nèi)核代碼來查找錯(cuò)誤,然后在內(nèi)核項(xiàng)目中修改,并重復(fù)步驟 1。 5)將 Producer 函數(shù)中等待 Empty 信號(hào)量的代碼行 WaitForSingleObject(EmptySemaphoreHandle, INFINITE)。 替換為 while(WAIT_TIMEOUT == WaitForSingleObject(EmptySemaphoreHandle, 300)){ printf(Producer wait for empty semaphore timeout\n)。 } 6)將 Consumer 函數(shù)中等待 Full 信號(hào)量的代碼行 WaitForSingleObject(FullSemaphoreHandle, INFINITE)。 替換為 while(WAIT_TIMEOUT == WaitForSingleObject(FullSemaphoreHandle, 300)){ printf(Consumer wait for full semaphore timeout\n)。 } 7)啟動(dòng)調(diào)試新的生產(chǎn)者-消費(fèi)者項(xiàng)目,查看在虛擬機(jī)中輸出的結(jié)果,驗(yàn)證信號(hào)量超時(shí)等待功能是否能夠正常執(zhí)行。如果有錯(cuò)誤,可以調(diào)試內(nèi)核代碼來查找錯(cuò)誤,然后在內(nèi)核項(xiàng)目中修改,并重復(fù)步驟 1。 8)如果超時(shí)等待功能已經(jīng)能夠正常執(zhí)行,可以考慮將消費(fèi)者線程修改為一次消費(fèi)兩個(gè)產(chǎn)品,來測(cè)試ReleaseCount 參數(shù)是否能夠正常使用。使用實(shí)驗(yàn)文件夾中 文件中的 Consumer 函數(shù)替換原有的 Consumer 函數(shù)9)一次性消費(fèi)一個(gè)產(chǎn)品10)一次性消費(fèi)兩個(gè)產(chǎn)品四、實(shí)驗(yàn)體會(huì)這次實(shí)驗(yàn)里我增強(qiáng)了對(duì)于進(jìn)程同步算法的理解,對(duì)書上的消費(fèi)者生產(chǎn)者模型有了更深的認(rèn)識(shí),并且留下了新的印象。這次實(shí)驗(yàn)提高了我的編程能力和各方面動(dòng)手能力,讓我感受到進(jìn)程相關(guān)內(nèi)容編程的風(fēng)格和方法。
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1