網站首頁 個人文檔 個人總結 工作總結 述職報告 心得體會 演講稿 講話致辭 實用文 教學資源 企業文化 公文 論文

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

欄目: 專題心得體會 / 發佈於: / 人氣:1.16W

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

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

每一次課程設計度讓我學到了在平時課堂不可能學到的東西。所以我對每一次課程設計的機會都非常珍惜。不一定我的課程設計能夠完成得有多麼完美,但是我總是很投入的去研究去學習。所以在這兩週的課設中,熬了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請儘可能多地羅列出目前市場上已有的操作系統產品,○分別給出這些操作系統所取得的成就,採用的新技術,以及這些操作系統的特點、特色和不足,指明它們的開發公司和開發年代。