【正文】
\PROJECTS。用戶使用普通的文本編輯器,或它自帶的edit DOS下的編輯器編輯源程序。使用do命令運行。它顯示了所有進程的狀態(tài),“running”后面顯示的是正在執(zhí)行進程的進程號,“ready”后面顯示的是就緒進程的進程號,“blocked”后面顯示的是阻塞進程的進程號。Toyix庫函數(shù)主要分兩類:一類是與系統(tǒng)相關的庫函數(shù);另一類是c庫函數(shù),和一般c庫函數(shù)的使用基本相同。地址:。3 具體實現(xiàn)(完整代碼及分析)完整代碼如下:includedefine N 4semaphore mutex。semaphore empty。/*用3秒鐘生產(chǎn)一件產(chǎn)品*/ printf(%d Produce a product\n,get_pid())。empty)。mutex)。/*用5秒鐘將該產(chǎn)品放入緩沖區(qū)*/ printf(%d Put the product into buffer\n,get_pid())。mutex)。full)。full)。mutex)。/*用5秒鐘從緩沖區(qū)取走一件產(chǎn)品*/ printf(%d Fetch a product form buffer\n,get_pid())。mutex)。empty)。/*用3秒鐘消費該產(chǎn)品*/ printf(%d Consume the product\n,get_pid())。 printf(\n)。mutex,1)。full,0)。full=1~N:緩沖區(qū)有產(chǎn)品可取走; full=0:緩沖區(qū)無產(chǎn)品 */ set(amp。/*produce函數(shù)的信號量。測試各種情況。 printf(%d subprocess ready to run concurrently.\n,n)。 getch()。cobegin的子進程都會在主進程結束時被銷毀。1號進程為可執(zhí)行文件調入內(nèi)存所產(chǎn)生的進程,即主(父)進程。Cobegin中共7個函數(shù)(進程)并發(fā)執(zhí)行,進程號分別為2~8。圖7 進程的切換調度可見,34256都已經(jīng)執(zhí)行過至少一次,而且并發(fā)的7個進程的調度先后順序并無一定之規(guī)。接下來會發(fā)生什么?圖8 6號進程(第5個生產(chǎn)者)最后將產(chǎn)品放入了緩沖區(qū)這一結果回答了我們上面提到的問題。而其實現(xiàn)機制則是信號量和PV原語。這行代碼,以保證主進程等待所有子進程結束才結束?!边@就解釋了問題的由來。創(chuàng)新度從以往的語言上,提高到了平臺的選擇上。先生還特地為此開發(fā)了一個很簡明的網(wǎng)站,沒有一個字的廣告,很清爽。沒想到它給了我這么多知識,真好!這里避而不談本次課設的內(nèi)容,我們談一下中國的計算機教學環(huán)境。單憑相關知識庫網(wǎng)站的信息價值就可以看出這一點。我會進我的一份力,回報這樣一