第一篇:操作系統(tǒng)實(shí)驗(yàn)心得
每一次課程設(shè)計度讓我學(xué)到了在平時課堂不可能學(xué)到的東西。所以我對每一次課程設(shè)計的機(jī)會都非常珍惜。不一定我的課程設(shè)計能夠完成得有多么完美,但是我總是很投入的去研究去學(xué)習(xí)。所以在這兩周的課設(shè)中,熬了2個通宵,生物鐘也嚴(yán)重錯亂了。但是每完成一個任務(wù)我都興奮不已。一開始任務(wù)是任務(wù),到后面任務(wù)就成了自己的作品了。總體而言我的課設(shè)算是達(dá)到了老師的基本要求?偨Y(jié)一下有以下體會。
1、網(wǎng)絡(luò)真的很強(qiáng)大,用在學(xué)習(xí)上將是一個非常高效的助手。幾乎所有的資料都能夠在網(wǎng)上找到。從linux虛擬機(jī)的安裝,到linux的各種基本命令操作,再到gtk的圖形函數(shù),最后到文件系統(tǒng)的詳細(xì)解析。這些都能在網(wǎng)上找到。也因?yàn)檫@樣,整個課程設(shè)計下來,我瀏覽的相關(guān)網(wǎng)頁已經(jīng)超過了100個(不完全統(tǒng)計)。當(dāng)然網(wǎng)上的東西很亂很雜,自己要能夠?qū)W會篩選。不能決定對或錯的,有個很簡單的方法就是去嘗試。就拿第二個實(shí)驗(yàn)來說,編譯內(nèi)核有很多項(xiàng)小操作,這些小操作錯了一項(xiàng)就可能會導(dǎo)致編譯的失敗,而這又是非常要花時間的,我用的虛擬機(jī),編譯一次接近3小時。所以要非常的謹(jǐn)慎,盡量少出差錯,節(jié)省時間。多找個幾個參照資料,相互比較,慢慢研究,最后才能事半功倍。
2、同學(xué)間的討論,這是很重要的。老師畢竟比較忙。對于課程設(shè)計最大的討論伴侶應(yīng)該是同學(xué)了。能和學(xué)長學(xué)姐討論當(dāng)然再好不過了,沒有這個機(jī)會的話,和自己班上同學(xué)討論也是能夠受益匪淺的。大家都在研究同樣的問題,討論起來,更能夠把思路理清楚,相互幫助,可以大大提高效率。
3、敢于攻堅(jiān),越是難的問題,越是要有挑戰(zhàn)的心理。這樣就能夠達(dá)到廢寢忘食的境界。當(dāng)然這也是不提倡熬夜的,畢竟有了精力才能夠打持久戰(zhàn)。但是做課設(shè)一定要有狀態(tài),能夠在吃飯,睡覺,上廁所都想著要解決的問題,這樣你不成功都難。
4、最好在做課設(shè)的過程中能夠有記錄的習(xí)慣,這樣在寫實(shí)驗(yàn)報告時能夠比較完整的回憶起中間遇到的各種問題。比如當(dāng)時我遇到我以前從未遇到的段錯誤的問題,讓我都不知道從何下手。在經(jīng)過大量的資料查閱之后,我對段錯誤有了一定的了解,并且能夠用相應(yīng)的辦法來解決。
在編程中以下幾類做法容易導(dǎo)致段錯誤,基本是是錯誤地使用指針引起的
1)訪問系統(tǒng)數(shù)據(jù)區(qū),尤其是往系統(tǒng)保護(hù)的內(nèi)存地址寫數(shù)據(jù),最常見就是給一個指針以0地址
2)內(nèi)存越界(數(shù)組越界,變量類型不一致等) 訪問到不屬于你的內(nèi)存區(qū)域
3)其他
例如:
<1>定義了指針后記得初始化,在使用的時候記得判斷是否為null
<2>在使用數(shù)組的時候是否被初始化,數(shù)組下標(biāo)是否越界,數(shù)組元素是否存在等
<3>在變量處理的時候變量的格式控制是否合理等
解決方法
1.利用gdb逐步查找段錯誤:
2.分析core文件
3.段錯誤時啟動調(diào)試:
4.利用backtrace和objdump進(jìn)行分析:
總而言之,對待課設(shè)要像對待自己的作品一樣,不要當(dāng)作任務(wù)來完成。
第二篇:操作系統(tǒng)實(shí)驗(yàn)總結(jié)
操作系統(tǒng)實(shí)驗(yàn)總結(jié)
學(xué)號:
姓名:
班級:
在本學(xué)期的計算機(jī)操作系統(tǒng)這門課學(xué)習(xí)當(dāng)中,為了更好的了解操作系統(tǒng)相關(guān)知識,我們通過os lab平臺做了幾個實(shí)驗(yàn)。在實(shí)驗(yàn)室的過程中,我對課堂上學(xué)到的操作系統(tǒng)的一些知識有了新的認(rèn)識,同時還接觸到了操作系統(tǒng)的相關(guān)源代碼,而且通過實(shí)驗(yàn)的運(yùn)行效果了解了平時我們看不到的操作系統(tǒng)的一些狀況,收獲還是很大的。下面先簡要?dú)w納在實(shí)驗(yàn)課上我做的幾個實(shí)驗(yàn)的主要實(shí)驗(yàn)內(nèi)容和實(shí)驗(yàn)步驟:
實(shí)驗(yàn)一:實(shí)驗(yàn)環(huán)境的使用
實(shí)驗(yàn)步驟:
1.1啟動os lab
os lab每次啟動后都會首先彈出一個用于注冊用戶信息的對話框(可以選擇對話框標(biāo)題欄上的“幫助”按鈕獲得關(guān)于此對話框的幫助信息)。在此對話框中填入學(xué)號和姓名后,點(diǎn)擊“確定”按鈕完成本次注冊。觀察os lab主窗口的布局。os lab主要由下面的若干元素組成:菜單欄、工具欄以及?吭谧髠(cè)和底部的各種工具窗口,余下的區(qū)域用來放置編輯器窗口。
1.2 學(xué)習(xí)os lab的基本使用方法
練習(xí)使用os lab編寫一個www.taixiivf.com生成的loader程序loader.bin文件,記錄下此文件的大小1566字節(jié)。
2.2 調(diào)試eos操作系統(tǒng)的啟動過程
2.2.1 使用bochs做為遠(yuǎn)程目標(biāo)機(jī)
將調(diào)試時使用的遠(yuǎn)程目標(biāo)機(jī)修改為bochs
2.2.2 調(diào)試bios程序
按f5啟動調(diào)試, bochs在cpu要執(zhí)行的第一條指令(即bios的第一條指令)處中斷,從console窗口顯示的內(nèi)容中,我們可以獲得關(guān)于bios第一條指令的相關(guān)信息,然后查看cpu在沒有執(zhí)行任何指令之前主要寄存器中的數(shù)據(jù),以及內(nèi)存中的數(shù)據(jù)。
2.2.3 調(diào)試軟盤引導(dǎo)扇區(qū)程序
練習(xí)從0x7c00處調(diào)試軟盤引導(dǎo)扇區(qū)程序;查看boot.lst文件;調(diào)試過程——軟盤引導(dǎo)扇區(qū)程序的主要任務(wù)就是將軟盤中的loader.bin文件加載到物理內(nèi)存的0x1000處,然后跳轉(zhuǎn)到loader程序的第一條指令(物理地址0x1000處的指令)繼續(xù)執(zhí)行l(wèi)oader程序;
2.2.4 調(diào)試加載程序
調(diào)試過程——loader程序的主要任務(wù)是將操作系統(tǒng)內(nèi)核(kernel.dll文件)加載到內(nèi)存中,然后讓cpu進(jìn)入保護(hù)模式并且啟用分頁機(jī)制,最后進(jìn)入操作系統(tǒng)內(nèi)核開始執(zhí)行(跳轉(zhuǎn)到kernel.dll的入口點(diǎn)執(zhí)行);
2.2.5 調(diào)試內(nèi)核
2.2.6 eos啟動后的狀態(tài)和行為
查看eos的版本號;查看eos啟動后的進(jìn)程和線程的信息;查看有應(yīng)用程序運(yùn)行時進(jìn)程和線程的信息
實(shí)驗(yàn)三:進(jìn)程的創(chuàng)建
實(shí)驗(yàn)步驟:
3.1 準(zhǔn)備實(shí)驗(yàn)
啟動os lab;新建一個eos kernel項(xiàng)目;分別使用debug配置和release配置生成此項(xiàng)目,從而在該項(xiàng)目文件夾中生成完全版本的eos sdk文件夾;新建一個eos應(yīng)用程序項(xiàng)目;使用在第3步生成的sdk文件夾覆蓋eos應(yīng)用程序項(xiàng)目文件夾中的sdk文件夾
3.2 練習(xí)使用控制臺命令創(chuàng)建eos應(yīng)用程序的進(jìn)程
3.3 練習(xí)通過編程的方式讓應(yīng)用程序創(chuàng)建另一個應(yīng)用程序的進(jìn)程
使用os lab打開本實(shí)驗(yàn)文件夾中的newww.taixiivf.comthread函數(shù)第119行需要添加的代碼的流程可以是:首先調(diào)用list remove entry函數(shù)將線程從掛起線程隊(duì)列中移除, 然后調(diào)用pspreadythread函數(shù)將線程恢復(fù)為就緒狀態(tài),最后調(diào)用pspthreadschedule宏函數(shù)執(zhí)行線程調(diào)度,讓剛剛恢復(fù)的線程有機(jī)會執(zhí)行。
實(shí)驗(yàn)過程:
做實(shí)驗(yàn)時,最開始并不是很了解os lab平臺的使用,即使對著老師給的實(shí)驗(yàn)教程做還是不怎么會,于是請教會做的同學(xué),通過同學(xué)的講解我知道了怎樣在os lab平臺上建立項(xiàng)目,怎樣更改路徑并找到項(xiàng)目的源文件等等基本操作。
掌握對平臺的簡單應(yīng)用后,做后面的實(shí)驗(yàn)我是按照實(shí)驗(yàn)教程上的步驟一步步的實(shí)施,并且每次都認(rèn)真觀察相應(yīng)的運(yùn)行結(jié)果,每個實(shí)驗(yàn)都會建議我們學(xué)習(xí)實(shí)驗(yàn)教程前面的理論部分,我想如果對他的理論不熟悉,就算試驗(yàn)成功了我也不知道為什么,所以我一般在做實(shí)驗(yàn)前會對前面的理論部分進(jìn)行簡要的學(xué)習(xí)和熟悉。做實(shí)驗(yàn)的過程中,有時候按照實(shí)驗(yàn)教程上的步驟做平臺還是會出現(xiàn)一些錯誤,比如做實(shí)驗(yàn)三到調(diào)試createprocess函數(shù)時,出現(xiàn)的調(diào)試異常對話框中,本來是要點(diǎn)擊“是”的,但做到這里電腦總是會出現(xiàn)像死機(jī)一樣的狀況,關(guān)掉平臺重做到這里老是出現(xiàn)同樣的問題,最后換電腦也是這樣,然后我嘗試不按照實(shí)驗(yàn)步驟點(diǎn)擊“是”也不行,最后還是又還了電腦才做成功,問其他同學(xué)也有出現(xiàn)同樣的問題,我想可能是平臺和電腦上有什么地方有沖突吧。
之后做試驗(yàn)是遇到問題我還是選擇多問同學(xué),畢竟每個人擅長的是不同的,有些問題這個同學(xué)會解決,有些問題則是那個同學(xué)才懂解決,通過互相交流和學(xué)習(xí),我們通過實(shí)驗(yàn)不僅鞏固了課堂上學(xué)到的相關(guān)知識,也對操作系統(tǒng)有了更深的了解。
體會:
其實(shí)做完實(shí)驗(yàn)我還是不能保證我對os lab這個平臺有很好的全面的了解,但是對一些基本操作及其快捷鍵我算是大致掌握了,通過這個平臺我也是認(rèn)識到了“沒有做不到的,只有想不到的”,我覺得創(chuàng)建這個平臺的人們真的是很了不起,這個平臺讓我們便動手便了解了平時我們看不到的操作系統(tǒng)的相關(guān)知識。要做好實(shí)驗(yàn),得按照實(shí)驗(yàn)教程上面的內(nèi)容一步步落實(shí),要邊做變領(lǐng)悟相關(guān)原理及運(yùn)行結(jié)果的出現(xiàn)的原因,這樣我們才能在試驗(yàn)中學(xué)到更多、掌握更多。其次,也遇到問題我們自然是要先自己思考,通過不同的嘗試來解決,之后不能解決的我們要多向老師同學(xué)請教,通過互相交流得來的知識也是會讓我們難忘的。
第三篇:操作系統(tǒng)實(shí)驗(yàn)六
void * my_malloc(unsigned int size){
// int i;
// linker *p=first;
// for(i=size;i<=heap_size&&p==null;i++)
//p=p->next;
// if(i>heap_size)//空?間?不?足á?
//return null;
// if(i==heap_size){
////p=(l.n+a)->first;
//delete p;}
// else
// {//p=(l.n+i)->first;
//int j;
////www.taixiivf.com)高,操作系統(tǒng)也因此發(fā)展得越來越快,市面上不同目的、各種特色的操作系統(tǒng)也應(yīng)運(yùn)而生。
1.目的和要求
通過internet和/或圖書館館藏資源,讓學(xué)生從課堂以外,從感性上認(rèn)識操作系統(tǒng)這種系統(tǒng)軟件的功能,了解市場上常見的操作系統(tǒng),為后面進(jìn)一步的學(xué)習(xí)打下基礎(chǔ)。
2.實(shí)驗(yàn)內(nèi)容
搜索并歸納如下信息:
1什么是操作系統(tǒng)?你買回一臺新計算機(jī)后,○要裝的第一個軟件是什么?為什么必須在計算機(jī)上安裝操作系統(tǒng)?
2目前市場上常見的操作系統(tǒng)有哪些類型? ○
3請盡可能多地羅列出目前市場上已有的操作系統(tǒng)產(chǎn)品,○分別給出這些操作系統(tǒng)所取得的成就,采用的新技術(shù),以及這些操作系統(tǒng)的特點(diǎn)、特色和不足,指明它們的開發(fā)公司和開發(fā)年代。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。