操作系統(tǒng)實驗報告心得體會
每一次課程設(shè)計度讓我學(xué)到了在平時課堂不可能學(xué)到的東西。所以我對每一次課程設(shè)計的機會都非常珍惜。不一定我的課程設(shè)計能夠完成得有多么完美,但是我總是很投入的去研究去學(xué)習(xí)。所以在這兩周的課設(shè)中,熬了2個通宵,生物鐘也嚴重錯亂了。但是每完成一個任務(wù)我都興奮不已。一開始任務(wù)是任務(wù),到后面任務(wù)就成了自己的作品了。總體而言我的課設(shè)算是達到了老師的基本要求。總結(jié)一下有以下體會。
1、網(wǎng)絡(luò)真的很強大,用在學(xué)習(xí)上將是一個非常高效的助手。幾乎所有的資料都能夠在網(wǎng)上找到。從linux虛擬機的安裝,到linux的各種基本命令操作,再到gtk的圖形函數(shù),最后到文件系統(tǒng)的詳細解析。這些都能在網(wǎng)上找到。也因為這樣,整個課程設(shè)計下來,我瀏覽的相關(guān)網(wǎng)頁已經(jīng)超過了100個(不完全統(tǒng)計)。當然網(wǎng)上的東西很亂很雜,自己要能夠?qū)W會篩選。
不能決定對或錯的,有個很簡單的方法就是去嘗試。就拿第二個實驗來說,編譯內(nèi)核有很多項小操作,這些小操作錯了一項就可能會導(dǎo)致編譯的失敗,而這又是非常要花時間的,我用的虛擬機,編譯一次接近3小時。所以要非常的謹慎,盡量少出差錯,節(jié)省時間。多找個幾個參照資料,相互比較,慢慢研究,最后才能事半功倍。
2、同學(xué)間的討論,這是很重要的。老師畢竟比較忙。對于課程設(shè)計最大的討論伴侶應(yīng)該是同學(xué)了。能和學(xué)長學(xué)姐討論當然再好不過了,沒有這個機會的話,和自己班上同學(xué)討論也是能夠受益匪淺的。大家都在研究同樣的問題,討論起來,更能夠把思路理清楚,相互幫助,可以大大提高效率。liuxue86.com
3、敢于攻堅,越是難的問題,越是要有挑戰(zhàn)的心理。這樣就能夠達到廢寢忘食的境界。當然這也是不提倡熬夜的,畢竟有了精力才能夠打持久戰(zhàn)。但是做課設(shè)一定要有狀態(tài),能夠在吃飯,睡覺,上廁所都想著要解決的問題,這樣你不成功都難。
4、最好在做課設(shè)的過程中能夠有記錄的習(xí)慣,這樣在寫實驗報告時能夠比較完整的回憶起中間遇到的各種問題。比如當時我遇到我以前從未遇到的段錯誤的問題,讓我都不知道從何下手。在經(jīng)過大量的資料查閱之后,我對段錯誤有了一定的了解,并且能夠用相應(yīng)的辦法來解決。
在編程中以下幾類做法容易導(dǎo)致段錯誤,基本是是錯誤地使用指針引起的
1)訪問系統(tǒng)數(shù)據(jù)區(qū),尤其是往系統(tǒng)保護的內(nèi)存地址寫數(shù)據(jù),最常見就是給一個指針以0地址
2)內(nèi)存越界(數(shù)組越界,變量類型不一致等) 訪問到不屬于你的內(nèi)存區(qū)域
3)其他
例如:
< 1>定義了指針后記得初始化,在使用的時候記得判斷是否為null
< 2>在使用數(shù)組的時候是否被初始化,數(shù)組下標是否越界,數(shù)組元素是否存在等
< 3>在變量處理的時候變量的格式控制是否合理等
解決方法
1.利用gdb逐步查找段錯誤:
2.分析core文件
3.段錯誤時啟動調(diào)試:
4.利用backtrace和objdump進行分析:
總而言之,對待課設(shè)要像對待自己的作品一樣,不要當作任務(wù)來完成。