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