靈感範文站

作業系統實驗心得(精選多篇)

第一篇:作業系統實驗心得

作業系統實驗心得(精選多篇)

每一次課程設計度讓我學到了在平時課堂不可能學到的東西。所以我對每一次課程設計的機會都非常珍惜。不一定我的課程設計能夠完成得有多麼完美,但是我總是很投入的去研究去學習。所以在這兩週的課設中,熬了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進行分析:

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

第二篇:作業系統實驗總結

作業系統實驗總結

學號:

姓名:

班級:

在本學期的計算機作業系統這門課學習當中,為了更好的瞭解作業系統相關知識,我們通過os lab平臺做了幾個實驗。在實驗室的過程中,我對課堂上學到的作業系統的一些知識有了新的認識,同時還接觸到了作業系統的相關原始碼,而且通過實驗的執行效果瞭解了平時我們看不到的作業系統的一些狀況,收穫還是很大的。下面先簡要歸納在實驗課上我做的幾個實驗的主要實驗內容和實驗步驟:

實驗一:實驗環境的使用

實驗步驟:

1.1啟動os lab

os lab每次啟動後都會首先彈出一個用於註冊使用者資訊的對話方塊(可以選擇對話方塊標題欄上的“幫助”按鈕獲得關於此對話方塊的幫助資訊)。在此對話方塊中填入學號和姓名後,點選“確定”按鈕完成本次註冊。觀察os lab主視窗的佈局。os lab主要由下面的若干元素組成:選單欄、工具欄以及停靠在左側和底部的各種工具視窗,餘下的區域用來放置編輯器視窗。

1.2 學習os lab的基本使用方法

練習使用os lab編寫一個windows控制檯應用程式,熟悉os lab的基本使用方法(主要包括新建專案、生成專案、除錯專案等)。

實驗二:作業系統的啟動

實驗步驟:

2.1 準備實驗

啟動os lab,新建一個eos kernel專案,在“專案管理器”視窗中開啟boot資料夾中的和兩個彙編檔案,按f7生成專案,生成完成後,使用windows資源管理器開啟專案資料夾中的debug資料夾。找到由生成的軟盤引導扇區程式檔案,找到由生成的loader程式檔案,記錄下此檔案的大小1566位元組。

2.2 除錯eos作業系統的啟動過程

2.2.1 使用bochs做為遠端目標機

將除錯時使用的遠端目標機修改為bochs

2.2.2 除錯bios程式

按f5啟動除錯, bochs在cpu要執行的第一條指令(即bios的第一條指令)處中斷,從console視窗顯示的內容中,我們可以獲得關於bios第一條指令的相關資訊,然後檢視cpu在沒有執行任何指令之前主要暫存器中的資料,以及記憶體中的資料。

2.2.3 除錯軟盤引導扇區程式

練習從0x7c00處除錯軟盤引導扇區程式;檢視檔案;除錯過程——軟盤引導扇區程式的主要任務就是將軟盤中的檔案載入到實體記憶體的0x1000處,然後跳轉到loader程式的第一條指令(實體地址0x1000處的指令)繼續執行loader程式;

2.2.4 除錯載入程式

除錯過程——loader程式的主要任務是將作業系統核心(檔案)載入到記憶體中,然後讓cpu進入保護模式並且啟用分頁機制,最後進入作業系統核心開始執行(跳轉到的入口點執行);

2.2.5 除錯核心

2.2.6 eos啟動後的狀態和行為

檢視eos的版本號;檢視eos啟動後的程序和執行緒的資訊;檢視有應用程式執行時程序和執行緒的資訊

實驗三:程序的建立

實驗步驟:

3.1 準備實驗

啟動os lab;新建一個eos kernel專案;分別使用debug配置和release配置生成此專案,從而在該專案資料夾中生成完全版本的eos sdk資料夾;新建一個eos應用程式專案;使用在第3步生成的sdk資料夾覆蓋eos應用程式專案資料夾中的sdk資料夾

3.2 練習使用控制檯命令建立eos應用程式的程序

3.3 練習通過程式設計的方式讓應用程式建立另一個應用程式的程序

使用os lab開啟本實驗資料夾中的newproc.c檔案;檢視應用程式建立另一個應用程式的程序的執行結果。

3.4 除錯createprocess函式

除錯createprocess函式建立程序的過程;分別驗證應用程式和作業系統核心在程序的4g虛擬地址空間中所處的位置;

3.5 除錯pscreateprocess函式

除錯pspcreateprocessenvironment函式;除錯程序控制塊的建立過程;除錯初始化程序控制塊中各個成員變數的過程。

3.6 練習通過程式設計的方式建立應用程式的多個程序

使用os lab開啟本實驗資料夾中的參考原始碼檔案newtwoproc.c,仔細閱讀此檔案中的原始碼。使用newtwoproc.c檔案中的原始碼替換eos應用程式專案中eosapp.c檔案內的原始碼,生成後啟動除錯,檢視多個程序併發執行的結果。

實驗四:執行緒的狀態和轉換

實驗步驟:

4.1 準備實驗

啟動os lab,新建一個eos kernel專案

4.2 除錯執行緒狀態的轉換過程

檢視一下loop命令執行的效果;除錯執行緒狀態轉換的過程;對斷點進行一些調整。

4.2.1 執行緒由阻塞狀態進入就緒狀態:

將執行緒從等待佇列中移除;將執行緒的狀態由waiting修改為zero;將執行緒插入其優先順序對應的就緒佇列的隊尾;將執行緒的狀態由zero修改為ready。

4.2.2 執行緒由執行狀態進入就緒狀態:

執行緒中斷執行,將執行緒中斷執行時的上下文儲存到執行緒控制塊中;如果處於執行狀態的執行緒被更高優先順序的執行緒搶先,就需要將該執行緒插入其優先順序對應的就緒佇列的隊首。(注意,如果處於執行狀態的執行緒主動讓出處理器,例如時間片用完,就需要將程插入其優先順序對應的就緒佇列的隊尾);將執行緒的狀態由running修改為ready

4.2.3 執行緒由就緒狀態進入執行狀態:

將執行緒從其優先順序對應的就緒佇列中移除;將執行緒的狀態由ready修改為zero;將執行緒的狀態由zero修改為running;將執行緒的上下文從執行緒控制塊(tcb)複製到處理器的各個暫存器中,讓執行緒從上次停止執行的位置繼續執行。

4.2.4 執行緒由執行狀態進入阻塞狀態:

將執行緒插入等待佇列的隊尾;將執行緒的狀態由running修改為waiting;將執行緒中斷執行,並將處理器上下文儲存到該執行緒的執行緒控制塊中。

4.3 為執行緒增加掛起狀態

觀察loop執行緒被掛起的情況:刪除之前新增的所有斷點;按f5啟動除錯;待eos啟動完

畢,在eos控制檯中輸入命令“loop”後按回車。此時可以看到loop執行緒的執行計數在不停增長,說明loop執行緒正在執行,記錄下loop執行緒的id;按ctrl+f2切換到控制檯2,輸入命令“suspend 31”(如果loop執行緒的id是31)後按回車;按ctrl+1切換回控制檯1,可以看到由於loop執行緒已經成功被掛起,其執行計數已經停止增長了。

在psresumthread函式第119行需要新增的程式碼的流程可以是:首先呼叫list remove entry函式將執行緒從掛起執行緒佇列中移除, 然後呼叫pspreadythread函式將執行緒恢復為就緒狀態,最後呼叫pspthreadschedule巨集函式執行執行緒排程,讓剛剛恢復的執行緒有機會執行。

實驗過程:

做實驗時,最開始並不是很瞭解os lab平臺的使用,即使對著老師給的實驗教程做還是不怎麼會,於是請教會做的同學,通過同學的講解我知道了怎樣在os lab平臺上建立專案,怎樣更改路徑並找到專案的原始檔等等基本操作。

掌握對平臺的簡單應用後,做後面的實驗我是按照實驗教程上的步驟一步步的實施,並且每次都認真觀察相應的執行結果,每個實驗都會建議我們學習實驗教程前面的理論部分,我想如果對他的理論不熟悉,就算試驗成功了我也不知道為什麼,所以我一般在做實驗前會對前面的理論部分進行簡要的學習和熟悉。做實驗的過程中,有時候按照實驗教程上的步驟做平臺還是會出現一些錯誤,比如做實驗三到除錯createprocess函式時,出現的除錯異常對話方塊中,本來是要點選“是”的,但做到這裡電腦總是會出現像宕機一樣的狀況,關掉平臺重做到這裡老是出現同樣的問題,最後換電腦也是這樣,然後我嘗試不按照實驗步驟點選“是”也不行,最後還是又還了電腦才做成功,問其他同學也有出現同樣的問題,我想可能是平臺和電腦上有什麼地方有衝突吧。

之後做試驗是遇到問題我還是選擇多問同學,畢竟每個人擅長的是不同的,有些問題這個同學會解決,有些問題則是那個同學才懂解決,通過互相交流和學習,我們通過實驗不僅鞏固了課堂上學到的相關知識,也對作業系統有了更深的瞭解。

體會:

其實做完實驗我還是不能保證我對os lab這個平臺有很好的全面的瞭解,但是對一些基本操作及其快捷鍵我算是大致掌握了,通過這個平臺我也是認識到了“沒有做不到的,只有想不到的”,我覺得建立這個平臺的人們真的是很了不起,這個平臺讓我們便動手便了解了平時我們看不到的作業系統的相關知識。要做好實驗,得按照實驗教程上面的內容一步步落實,要邊做變領悟相關原理及執行結果的出現的原因,這樣我們才能在試驗中學到更多、掌握更多。其次,也遇到問題我們自然是要先自己思考,通過不同的嘗試來解決,之後不能解決的我們要多向老師同學請教,通過互相交流得來的知識也是會讓我們難忘的。

第三篇:作業系統實驗六

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;

////word *w;

//int temp;

//for(j=heap_size;j<i;j++){temp=pow(2,j);w=p+temp; t(p,i);}p->tag=1;p->kval=a;return p;

//return null;

if(size>first->size)

return null;

else

{

static linker* p=(struct linker *)&heap[heap_size-(first->size)];p->size=size;

linker* tem=first;

while(tem!=null)

tem=tem->next;

tem=p;

first->size=(first->size)-size;

return tem;

}

}

void my_free(void * addr){

linker* p,*tem;

p=first;

while((linker*) addr->size!=p->next->size)

p=p->next;

tem=p->next;

p->next=tem->next;

first->size=first->size+tem->size;

delete tem;

}

rt(w,j);}

第四篇:西工大作業系統實驗2

實驗二 freebsd的應用軟體安裝

問題:

目前實驗室安裝的是一個執行在windows xp虛擬機器上的freebsd作業系統,是視覺化桌面環境的命令列介面,上邊只有最基本的unix作業系統,沒有任何應用軟體。

現在如果想安裝一些常用軟體,像編寫java程式必須的jdk虛擬機器,作為伺服器常用的smtp郵件伺服器端軟體,可以遠端登入freebsd的ssh開啟方式… 這次實驗主要的問題就是:

請問如何使用freebsd安裝應用軟體?

要求:

1、請查閱資料,瞭解freebsd 安裝軟體的主要方式,每種方式的具體步驟、操作指南;

2、學習使用freebsd安裝方法的一種進行安裝簡單的ssh。

3、詳細記錄探索學習的內容和實驗的整個過程,包括資料的查詢、資料的來源(資料名稱、網址等)、所做的各種嘗試、以及最終的結果(包含截圖);

4、對整個實驗過程進行分析總結,給出詳細步驟;

5、將記錄和分析總結整理成實驗報告以word檔案格式提交到ftp上;

6、實驗報告檔案按“實驗二_班級_學號_姓名”格式命名;

7、實驗報告提交的最後期限為下週。

提示:

1、首先可以學習使用虛擬機器vmware掛載u盤,讀取u盤內容的方式,這樣可以使用命令使虛擬機器中的freebsd可以獲得u盤的內容。

2、其次可以研究使用虛擬機器掛載虛擬光碟機並載入freebsd映像,這樣可以使用命令讀取光碟的內容。

第五篇:實驗1:認識常見的作業系統

實驗一、認識常見的作業系統

計算機系統由硬體系統和軟體系統兩部分組成。硬體系統是使用者可以直接看見的部分,是完成使用者各種任務的物質基礎,而軟體系統是對硬體功能的擴充,是人類編制出來,為方便人們使用計算機硬體或為完成某一特定任務和目標而編制的計算機程式。軟體因作用不同又可分為系統軟體和應用軟體。作業系統是最重要的一種系統軟體,是對硬體系統的第一次擴充。

自從第一代作業系統問世以來,隨著計算機應用的發展,人們對計算機資源共享、通訊、和計算機效率等諸方面的要求越來越(在好範 文 網搜尋更多的文章:)高,作業系統也因此發展得越來越快,市面上不同目的、各種特色的作業系統也應運而生。

1.目的和要求

通過internet和/或圖書館館藏資源,讓學生從課堂以外,從感性上認識作業系統這種系統軟體的功能,瞭解市場上常見的作業系統,為後面進一步的學習打下基礎。

2.實驗內容

搜尋並歸納如下資訊:

1什麼是作業系統?你買回一臺新計算機後,○要裝的第一個軟體是什麼?為什麼必須在計算機上安裝作業系統?

2目前市場上常見的作業系統有哪些型別? ○

3請儘可能多地羅列出目前市場上已有的作業系統產品,○分別給出這些作業系統所取得的成就,採用的新技術,以及這些作業系統的特點、特色和不足,指明它們的開發公司和開發年代。