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

正文內(nèi)容

讀者寫者問題-操作系統(tǒng)實(shí)驗(yàn)報(bào)告-資料下載頁

2025-04-03 00:32本頁面
  

【正文】 N 寫者優(yōu)先喚醒 當(dāng)前有無讀者在讀 有無寫者等待 N 有無讀者等待 N 寫者出隊(duì)進(jìn)行寫操作直到寫者隊(duì)空 Y 進(jìn)行讀操作直到讀者隊(duì)列為空 Y N 返回 Y N 寫者隊(duì)列是否為空 Y 有讀者說明若有等待必為寫者 核心部分設(shè)計(jì)思路: 分別用兩個 隊(duì)列來存放等待的讀者進(jìn)程和寫者進(jìn)程,一個進(jìn)程結(jié)束后就要將因他阻塞的進(jìn)程喚醒,如果是讀者優(yōu)先,則先檢查讀者進(jìn)程,如果發(fā)現(xiàn)讀者進(jìn)程不為空,就進(jìn)行讀操作,直到讀者進(jìn)程為空,才進(jìn)行寫操作;同理,如果是寫者優(yōu)先,則先檢查寫進(jìn)程,如果發(fā)現(xiàn)寫者進(jìn)程不為空,就進(jìn)行寫操作,直到寫者進(jìn)程為空,才進(jìn)行讀操作。 讀寫互斥:只有當(dāng)互斥信號量 W = 1 并且當(dāng)前讀者數(shù)為 0 時(shí),才可以進(jìn)行寫操作,對于讀進(jìn)程, W = 1 且當(dāng)前讀者數(shù)為 0 時(shí),第一個讀進(jìn)程進(jìn)行讀操作,當(dāng)當(dāng)前讀者數(shù)大于 0 時(shí),不用判斷互斥信號量 W 而直接進(jìn)行讀操作。對緩沖區(qū)為空的情況, 如果緩沖區(qū)為空時(shí)進(jìn)行讀操作,則會設(shè)置一個信號量標(biāo)志緩沖區(qū)為空 SIGN = 0,不可以進(jìn)行讀操作,釋放出 CPU,調(diào)用喚醒函數(shù)喚醒寫進(jìn)程,此時(shí)會將此進(jìn)程放入讀者進(jìn)程等待隊(duì)列中等待寫者來寫數(shù)據(jù)再進(jìn)行讀操作,寫者寫完數(shù)據(jù),緩沖區(qū)不空時(shí),將標(biāo)志置為緩沖區(qū)不空 SIGN = 1。 編譯過程中遇到的問題: 1. 編譯過程中出現(xiàn)的一個很大的錯誤就是在構(gòu)造隊(duì)列的時(shí)候給變量INDEX賦值了,系統(tǒng)提示錯誤 解決:取消賦值,編寫了一個初始化函數(shù)進(jìn)行初始化,后來發(fā)現(xiàn)不初始化也沒用什么問題,就注釋掉了。 2. 剛開始還會出現(xiàn)一些括號不匹配的錯誤, 在后來的程序完善過程中,盡量給后括號做一個注釋進(jìn)行標(biāo)識。 運(yùn)行過程中遇到的問題: 1. 不能接受非法字符,如果輸入非法字符就會進(jìn)入死循環(huán),但是在 SWITCH外明明有檢查語句。 進(jìn)行寫操作直到寫者隊(duì)列為空 解決:通過單步跟蹤,發(fā)現(xiàn)檢查語句并沒有起到作用,于是調(diào)整了一下結(jié)構(gòu),將檢查語句放到 SWITCH 里,既起到了檢查的作用,同時(shí)也減少了代碼量。 2. 在讀者進(jìn)行讀取數(shù)據(jù)時(shí),總是會在讀取完寫者寫的內(nèi)容的后面出現(xiàn)一個小 A。 解決:也是通過單步跟蹤,發(fā)現(xiàn)是判空和輸出的順序問題,如果先輸出后判空的話,會多進(jìn)行一次循環(huán),導(dǎo)致輸出一個小 A,但是現(xiàn)在還是不太明白 為什么多輸出的是小 A。 3. 當(dāng)緩沖區(qū)為空的時(shí)候創(chuàng)建了 N1 個讀進(jìn)程,他們都在等待寫進(jìn)程寫數(shù)據(jù),然而等寫進(jìn)程寫完數(shù)據(jù)后,這些讀進(jìn)程并沒有進(jìn)行讀取,繼續(xù)創(chuàng)建讀進(jìn)程,就會發(fā)現(xiàn)是讀進(jìn)程 N 在進(jìn)行讀取。 解決:剛開始是以為參數(shù)設(shè)置問題,后來仔細(xì)一想,發(fā)現(xiàn)是沒有在調(diào)用喚醒函數(shù)前沒有將讀進(jìn)程放入讀者等待隊(duì)列中,于是在調(diào)用喚醒函數(shù)前,添加將讀者進(jìn)程放入等待隊(duì)列的語句。 4. 還出現(xiàn)了不少小錯誤,例如將 I,J 寫錯導(dǎo)致讀者每次都會讀 300 次用一個字母,沒有設(shè)置信號量 SIGN 導(dǎo)致在緩沖區(qū)為空的時(shí)候還沒有進(jìn)行讀操作就會有“讀者已經(jīng)讀完” 的錯誤提示等等。也有一些原則性錯誤比如在喚醒函數(shù)中,讀或者寫進(jìn)程結(jié)束后,將信號量置 1,但是在隊(duì)列中選擇進(jìn)程進(jìn)行操作的時(shí)候,沒有把信號量置 0,導(dǎo)致了執(zhí)行喚醒函數(shù)后進(jìn)程不互斥的問題。開始的程序中還設(shè)置了一些意義不大的變量,比較混亂,后來通過畫簡單的流程圖,將意義不大的變量取消,理清了思路,解決了問題。 運(yùn)行過程中的問題出現(xiàn)的問題比較多,但都不是特別大的問題,通過調(diào)試分析都得到了解決。 實(shí)驗(yàn)收獲與心得: 這次實(shí)驗(yàn)耗時(shí)比較多,預(yù)習(xí)的時(shí)候并沒有準(zhǔn)備特別充分,程序還有很多問題,功能也不沒有達(dá)到老師的要求。 實(shí)驗(yàn)過程中,一步一步由簡到繁,完善程序的同時(shí),問題也出現(xiàn)了不少,通過畫簡單的流 程圖,通過單步跟蹤,通過分析理解,都得到了解決。程序的缺點(diǎn)就是設(shè)置的變量過多,后來經(jīng)過分析和調(diào)試,發(fā)現(xiàn)很多都是沒有必要的,還讓程序更加混亂,條理不清楚,后來去掉了不少。這次實(shí)驗(yàn)讓我更加深刻的理解了進(jìn)程的信號量的概念和應(yīng)用,在不斷出現(xiàn)錯誤,發(fā)現(xiàn)錯誤,改正錯誤的過程中,對互斥信號量有了非常深刻的理解。雖然程序的功能還不是很完善,但是自己調(diào)試成功的程序就非常有成就感。下次實(shí)驗(yàn)我會提前做好充分的預(yù)習(xí),爭取做
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1