作業系統課程設計感受

baoLidanyang發表於2018-01-16

歷時兩週的課程設計結束了,我把所有的感受都記錄在這裡。

課程設計剛開始的幾天,我處在乙型流感和病毒性皰疹的折磨之中,這時候,躺在病床上無法下手敲程式碼,不過因禍得福,我靜下心來做計劃,使用軟體工程中學到的設計方法一點一點的設計程式,那個時候我把所有的想法都記在了課程設計的一個專用本上,大概寫了有六七頁,所有用到的函式,甚至每一個變數的名字,每一個控制元件的名字都記了下來,我大部分的創新點,程式的結構,都是在那個時候都設計好了,雖然哪些創新點現在看來只是程式中的基本功能,或者說已經與基本功能融合在一起了,現在想起那幾天,雖然很折磨人,但確實治好了我過去經常急於寫程式碼的毛病。

大病初癒,開啟電腦,第一件事不是建專案,而是開msdn,翻閱文件,那個時候我發現微軟的C#在某些方面確實做得沒有JAVA優秀,在這裡舉一例:訊號量(Semaphore)在兩種語言裡都已經封好了,但是我在使用的時候,有一個需求是,根據執行緒被阻塞的順序喚醒執行緒,也就是FIFO,但是我在C#中沒有找到相應的方法,在JAVA中倒是有公平模式。但是最後我還是使用了C#作為程式語言,原因是因為這門語言曾經系統的學習過。

文件看得差不多了,決定開始寫程式碼,因為這時候第一週已經幾乎結束了,同學們也都有所進展,而我還沒開始敲,不免有所慌張。我寫程式碼的速度有些超乎我的預料,兩天的時間就把基本功能和我想到的創新點都寫完了,我把它歸功於我所使用的軟體工程的方法。接下來,我開始修改已有的方法,能自己實現的就不用現成的,我覺得程式結束的方法不合理,於是我就寫了一個我認為合理的停止方法,這個方法幾乎是現實世界中工廠工作的完美對映,在這裡簡述:首先,暫停方法中,我使用了一個過時的方法,suspend(),因為這個方法恰好滿足我的需要,就好比工廠中,大家都在幹活,某些工人手裡正在上螺絲,老大喊一聲”停一下”,這時候,大家不是急著吧螺絲上完,然後完成一個車輪,而是放下螺絲刀,聽他講完,然後繼續幹。但是在停止時,強制停止未免有些不合邏輯,這裡說的是對所有執行緒使用Abort()方法,按道理來說,假設今天的工作結束了,工人應該至少把手裡的工作完成在退出,拿worker3舉例子,他可能在取完零件就停下,或者組裝完車子再停下,或者把車子送達後在停下,這都是合情合理的,但是如果讓他送車子到一半,就停下,是很不合理的。這個功能我想了好久,實現它也不是很輕鬆,大概用了整整一天的時間來設計吧,實現之後還是很開心的,畢竟我認為是比較好的處理方式。

之後,就是寫各種博人眼球的功能,想的是核心寫好了,外殼也要充實一點,畢竟我把老師那句“強核心,柔外殼”記得很牢固。到這裡,課程設計也就要結束了,收穫很大,很充實的兩週,感謝申老師以及穆老師的指導,有些憋在心裡的功能在假期裡會一一實現,爭取發現更多問題,學到更多知識。

相關文章