作業系統實驗心得

每一次課程設計度讓我學到了在平時課堂不可能學到的東西。所以我對每一次課程設計的機會都非常珍惜。不一定我的課程設計能夠完成得有多麼完美,但是我總是很投入的去研究去學習。所以在這兩週的課設中,熬了2個通宵,生物鐘也嚴重錯亂了。但是每完成一個任務我都興奮不已。一開始任務是任務,到後面任務就成了自己的作品了。總體而言我的課設算是達到了老師的基本要求。總結一下有以下體會。

作業系統實驗心得

1、網路真的很強大,用在學習上將是一個非常高效的助手。幾乎所有的資料都能夠在網上找到。從linux虛擬機器的安裝,到linux的各種基本命令操作,再到gtk的圖形函式,最後到檔案系統的詳細解析。這些都能在網上找到。也因為這樣,整個課程設計下來,我瀏覽的相關網頁已經超過了100個(不完全統計)。當然網上的東西很亂很雜,自己要能夠學會篩選。不能決定對或錯的,有個很簡單的方法就是去嘗試。就拿第二個實驗來說,編譯核心有很多項小操作,這些小操作錯了一項就可能會導致編譯的失敗,而這又是非常要花時間的,我用的虛擬機器,編譯一次接近3小時。所以要非常的謹慎,儘量少出差錯,節省時間。多找個幾個參照資料,相互比較,慢慢研究,最後才能事半功倍。

2、同學間的討論,這是很重要的。老師畢竟比較忙。對於課程設計最大的討論伴侶應該是同學了。能和學長學姐討論當然再好不過了,沒有這個機會的話,和自己班上同學討論也是能夠受益匪淺的。大家都在研究同樣的問題,討論起來,更能夠把思路理清楚,相互幫助,可以大大提高效率。

3、敢於攻堅,越是難的問題,越是要有挑戰的心理。這樣就能夠達到廢寢忘食的境界。當然這也是不提倡熬夜的,畢竟有了精力才能夠打持久戰。但是做課設一定要有狀態,能夠在吃飯,睡覺,上廁所都想著要解決的問題,這樣你不成功都難。

4、最好在做課設的過程中能夠有記錄的習慣,這樣在寫實驗報告時能夠比較完整的回憶起中間遇到的各種問題。比如當時我遇到我以前從未遇到的段錯誤的問題,讓我都不知道從何下手。在經過大量的資料查閱之後,我對段錯誤有了一定的瞭解,並且能夠用相應的辦法來解決。

在程式設計中以下幾類做法容易導致段錯誤,基本是是錯誤地使用指標引起的

1)訪問系統資料區,尤其是往系統保護的記憶體地址寫資料,最常見就是給一個指標以0地址

2)記憶體越界(陣列越界,變數型別不一致等) 訪問到不屬於你的記憶體區域

3)其他

例如:

<1>定義了指標後記得初始化,在使用的時候記得判斷是否為null

<2>在使用陣列的時候是否被初始化,陣列下標是否越界,陣列元素是否存在等

<3>在變數處理的時候變數的格式控制是否合理等

解決方法

1.利用gdb逐步查詢段錯誤:

2.分析core檔案

3.段錯誤時啟動除錯:

4.利用backtrace和objdump進行分析:

總而言之,對待課設要像對待自己的作品一樣,不要當作任務來完成。