HEAP_SIZE)//空?間?不?" />

久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

操作系統實驗六

時間:2019-05-15 14:33:04下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《操作系統實驗六》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《操作系統實驗六》。

第一篇:操作系統實驗六

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;jtag=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;

}

l.insert(w,j);}

第二篇:操作系統實驗

操作系統實驗

實驗一

Linux常用命令實驗

一.目的和要求

本實驗的目的是熟悉Linux操作系統的命令接口、圖形接口和程序接口;了解Linux操作系統的啟動過程;了解Linux操作系統的目錄結構;用vi編輯器編寫簡單的C語言程序,并用gcc編譯器編譯、運行。

二.實驗內容

1、實現開機、登錄、退出與關機:

(1)如果以root用戶登錄,則命令窗口的提示符為#;如果以普通用戶登錄,則命令窗口的提示符為$;登陸用戶名:user 密碼:123456(2)修改口令(修改口令操作不做):成功進入系統后,在命令提示符后輸入“passwd”并鍵入回車鍵

(3)退出帳號:命令方式下:logout(4)關機或重啟:

命令方式下:halt或reboot 窗口方式下:“桌面”->“注銷”

2、掌握的基本常用命令列表

(1)關于目錄的操作命令:cd、ls、mkdir、rmdir、pwd等;

(2)關于文件的操作命令:cat、find、man/help、vi/vim、cp、rm、mv、dd、du、df、chmod、ln等;

(3)關于進程管理的操作命令:ps、kill、top、free 等;

(4)關于系統管理的操作命令:whoami、passwd、adduser/useradd、addgroup、userdel、groupdel、su、who、Ctrl+Alt+Fn(n=1、2、3、4、5、6)(在X-Window界面下切換到字符界面,重新登錄,Ctrl+Alt+F7返回圖形界面)、Alt+Fn(n=1、2、3、4、5、6)(在6個虛擬終端之間切換)等;

(5)安裝和卸載文件系統:mount、umount等;

(6)顯示有關計算機系統信息的命令:uname(顯示操作系統的名稱)、uname –n(顯示系統域名)、uname –p(顯示系統的CPU名稱)

(7)其它命令:time、date、cal 等。

3、閱讀/etc/inittab 文本文件,思考問題:如果要求啟動Linux系統之后進入字符 1

操作系統實驗

界面,應如何修改/etc/inittab文件?用戶應具有什么權限?

4、切換到不同的虛擬終端,登錄到Linux系統

5、vi 編輯器的使用(1)進入和退出vi(2)利用文本插入方式建立一個文件(3)在新建的文本文件上移動光標。

(4)對文本文件執行刪除、復原、修改、替換操作。

6、熟悉gcc編譯環境:編寫一個C語言程序myfile1.c,求1~100中偶數的和,編譯并運行。

(1)編譯 gcc myfile1.c 運行./a.out(2)編譯 gcc –o myfile1 myfile1.c

運行./myfile1

7、編寫一個C語言程序myfile2.c,顯示字符串“Hello, Linux!”,并將其反向輸出。

8、熟悉Linux系統的目錄結構,使用命令或者編寫C語言程序報告Linux內核的行為。

報告以下內容: ? ? CPU類型和型號 ? ? 內核版本

? ? 從系統最后一次啟動以來經歷了多長時間?形式為dd:hh:mm:ss ? ? 當前配置的內存數量 ? ? 當前可用內存數量

? ? 自系統啟動以來,發生的所有的中斷的次數 ? ? 從系統啟動開始創建的進程數 ? ? 內核執行的上下文轉換的次數

三.實驗提示

1、Linux安裝

(1)安裝前的準備工作 <1>.基本的硬件配置

由于安裝涉及到各種硬件的設置,所以在安裝前必須了解機器各種硬件的型號,硬盤的使用情況,內存的大小,鼠標的類型及接口,聲卡,網卡,顯卡,顯示器的型號。

操作系統實驗

<2>.有關網絡的信息

IP地址,掩碼,網關IP地址,域名服務器IP地址,域名,宿主機名。<3>.安裝方式的選擇

?從CD-ROM安裝 ?從FTP站點安裝 ?從NFS服務器安裝 ?從硬盤安裝 硬盤分區

硬盤空間必須和計算機上安裝的其他操作系統所使用的硬盤空間分開。特別要注意,如果硬盤空間很大,切忌不能將Linux裝在8G以后。安裝Red Hat Linux至少需要兩個硬盤分區:一個或多個“Linux native”類型的分區,一個“Linux swap”類型的分區

分區命名設計Linux 通過字母和數字的組合來表示硬盤分區。

? 前兩個字母-----分區名的前兩個字母表明分區所在設備的類型。hd指IDE硬盤,sd指SCSI硬盤。

? 下一個字母-----分區在哪個設備。例如,/dev/hda(第一個IDE硬盤),/dev/sdb(第二個SCSI硬盤)。

? 數字-----代表分區。前四個分區(主分區或擴展分區)用數字1到4表示。邏輯分區從5開始。例如,? 若IDE硬盤在安裝Linux前安裝了Windows系統并劃分了C盤和邏輯分區D盤,那么D盤就是/dev/hda5, /dev/hda5表示第一個硬盤的第一個邏輯分區。

對于Linux初學者來說,為Linux分兩個區(根分區和交換分區)是比較簡單方便的。

一個交換分區:用來支持虛擬內存。一個根分區:根分區是/(根目錄)的所在地,其中包含啟動系統所需的文件和系統配置文件。這個分區要足夠大。

一個/usr分區: /usr是Linux系統許多軟件所在的地方。一個/home分區:這是用戶的主目錄所在地。(2)開始安裝

注意點:我們一般選擇的是圖形化的安裝方式。它的主要部分是相同的。

? 可能會在安裝完成后第一次啟動時才進行網卡的檢測。

操作系統實驗

? 在選擇圖形化界面時,有兩種方式gnome和kde;它們各有優缺點。? 系統會讓你選擇啟動時是圖形化方式,還是字符方式。請大家選擇字符方式。

? 在選擇防火墻的時候,在安裝時請先不用防火墻。

? 圖形化安裝方式下,不能選擇啟動時的開啟服務。可在系統安裝完成后用setup命令進行修改。

2、進入Linux(1)登錄

第一次登錄系統,必須作為“root”登錄。這個帳號對系統的一切都有完全的訪問權限。

在login:提示符處輸入root。按[Enter](或[Return]鍵).會出現Password提示。輸入口令,應該看到類似以下的信息:

[root@localhost /root] #(2)退出

輸入[Ctrl]-[D](3)帳號和口令 <1>.帳號

創建新的帳號有幾種方法,最基本的方法:useradd命令.[root @ localhost / root] # useradd

Tom

[root @ localhost / root] # <2>.口令

passwd 命令可以用來: ? 為新創建的用戶分配口令。? 修改已存在的用戶的口令。? 修改登錄的用戶的口令。此時必須以root登錄。如:

[root @ localhost / root]# passwd Tom

New UNIX password:

Retype new UNIX password:

passwd:all authentication tokens updated successfully 4

操作系統實驗

[root @ localhost / root]#

用新帳戶登錄:

Red Hat Linux release 7.1(Manhattan)

Kernel 2.0.34 on an i586

login: Tom

Password:

[Tom@ localhost Tom] $ <3>.su 命令

用su,當前的登錄段能變成root(或其他用戶)的登錄段。如:

[Tom@ localhost Tom] $ su

Password:

[root@ localhost Tom] # 也可以用su變成其他用戶。這時,必須作為root運行su,給出用戶名。<4>.關閉系統

關閉系統時,必須告訴所有的進程結束運行,使用shutdown命令。且只能由root 運行,格式是:

shutdown

-h-------在關閉完成后(Halt)停止系統。

-r--------在關閉完成后重啟動(Reboot)系統。

3、vi 編輯器的使用(1)進入和退出vi <1>進入vi 在系統提示符($)下輸入命令vi和想要編輯(建立)的文件名(如example),便可進入vi。

<2>退出vi 在命令方式下可有幾種方法退出vi編輯器:

:wq 把編輯緩沖區的內容寫到正在編輯的文件中,退出編輯器,回到Linux shell下。

:ZZ 僅當作過修改時才將緩沖區內容寫到文件上。

操作系統實驗

:x 與 :ZZ 相同。

:q!強行退出vi。感嘆號(!)告訴vi,無條件退出,丟棄緩沖區內容。這樣,先前對該文件所做的修改或輸入都被拋棄。(2)新建文件

<1>在Linux提示符$之后,輸入命令 :vi myfile,然后按〈Enter〉鍵。<2>輸入插入命令i(屏幕上看不到字符i)。<3>然后,輸入以下文本行: To the only book tht I, For mang year you have been my favourite book <4>發現這兩行有錯,進行改正: 按〈Esc〉鍵,從插入方式回到命令方式。按光標上移鍵,使光標移到第一行。

按光標左移鍵,使光標移到“tht”的第二個“t”處。

輸入i(這是插入命令),然后輸入a。該行變成如下形式: To the only book that I, 按光標右移鍵,使光標移到“I”上。

我們想在“I”之后輸入一個空格和單詞“like”。為此,輸入附加命令“a”。結果屏幕顯示為:

To the only book that a I,沒有出現預期的效果......原來是:我們先前使用了插入命令i,至今并未用〈Esc〉鍵返回命令方式。所以,輸入的所有字符都作為輸入文本予以顯示。<5>按〈Esc〉鍵,返回命令方式。

利用x命令刪除錯誤字符。然后,進入插入方式,輸入正確字符。<6>最后輸入如下所示的文本: To the only book that I like, For many year you have been my favourite book I liveeyou all the time and could not have picked much better.<7>將編輯的文本文件存盤。(利用“:wq”命令,或者“:x”命令)<8>重新進入vi編輯程序,編輯上面的文件。(如:$ vi myfile)

操作系統實驗

<9>在屏幕上見到myfile文件的內容。在屏幕底邊一行顯示出該文件的名稱、行數和字符個數:“myfile”4 lines,130 characters 它仍然有錯,需進一步修改。

<10>將光標移到第二行的year的r處。輸入a命令,添加字符s。

<11>按〈Esc〉,回到命令方式。輸入命令10〈Space〉,光標移至何處?---光標右移10個字符位置。

<12>利用取代命令r將liveeyou改為live you。

<13>將光標移至第三行。輸入新行命令O(大寫字母),屏幕上有什么變化?---光標移至上一行(新加空行)的開頭。<14>輸入新行的內容: We've been through much together 此時,vi處于哪種工作方式? <15>按〈Esc〉,回到命令方式。將光標移到第四行的live的v字母處。利用替換命令s將v改為k。

<16>在第四行的you之后添加單詞very much。<17>修改后的文本是以下內容: To the only book that I like, For many years you have been my favourite book We've been through much together I like you very much all the the time and could not have picked much better.將該文件存盤,退出vi。

<18>重新編輯該文件。并將光標移到最后一行的have的v字母處,使用d$命令將v至行尾的字符都刪除。

<19>現在想恢復17步的原狀,怎么辦?(使用復原命令u)

<20>使用dd命令刪除第一行;將光標移至through的u字母處,使用C(大寫字母)命令進行修改,隨便輸入一串字符。將光標移到下一行的開頭,執行5x命令;然后執行重復命令(.)。

<21>屏幕內容亂了!現在想恢復17步的原狀,怎么辦?(不寫盤,強行退出vi)

4、Linux內核

操作系統實驗

Linux 內核源程序目錄結構(/usr/src/redhat/SOURCES)如下: /document :保存幫助文檔

/arch

:包含多個子目錄,每個存放與特定體系結構相關的代碼。如arch/i386(intel 386 體系結構),arch/sparc,arch/alpha等。每個子目錄下至少又包含三個子目錄:

? kernel(存放支持該體系結構特有的諸如信號處理和SMP之類特征的實現);

? ? lib(存放該體系結構特有的諸如Strlen和memcpy之類的高效率函數); mm(存放該體系結構特有的諸如內存管理程序的實現)

/drivers :該目錄占內核代碼一半以上,包括顯卡、網卡、SCSI適配器、軟驅、PCI設備和其他外設的軟件驅動程序。/fs:包含linux支持的文件系統。

/include :包含源程序中大部分包含(.h)文件。/init: 包含main.c,保存大部分協調內核初始化的代碼。/ipc:實現了SYSTEM V的進程間通訊IPC。

/kernel:包含了linux最重要的部分:實現平臺獨立的基本功能,包括Sched.c、fork.c、exit.c。

/lib :存放字符串和內存操作函數。

/mm:包含與體系結構無關的內存管理代碼。/net:包含了linux應用的網絡協議代碼。/script :包含用來配置內核的腳本。

5、報告Linux狀態(/proc 中的信息)

在終端窗口提示符下,可以使用cat命令顯示相關文件的內容,如: cat /proc/cpuinfo 通過編寫程序,顯示相關文件內容:應用文件操作,將相關 /proc中的文件讀入到緩沖區中,可用fgets()函數按行取文件中數據,通過strstr()檢驗包含所需數據字符串。如存在,用printf()函數輸出。(1)CPU類型和型號

/proc/cpuinfo文件提供了有關CPU的多種信息,這些信息是從內核里對CPU的測試代碼中得到的。文件列出了CPU個數:processor;CPU制造商:vendor_id;CPU架構:model;CPU名稱:model name;CPU時鐘頻率:cpu MHz;CPU緩存大小: 8

操作系統實驗

cache size;CPU包含的指令集:flags。文件還包含了以bogomips表示的處理機速度,而且如果檢測到CPU的多種特性或bug,文件還會包含相應的標志。該文件的格式為:文件由多行構成,每行包括一個域名稱、一個冒號和一個值。

通過fopen()函數打開包含CPU類型和型號的文件cpuinfo,把內容讀入字符數組char_all,然后通過strstr()函數查找CPU類型和型號所在的位置,用strncpy()函數拷貝到字符數組中,通過printf()標準輸出函數輸出。(2)存儲器信息

/proc/meminfo 文件給出了內存狀態的信息。它顯示出系統中物理內存的總量:MenTotal;未使用的物理內存的總量:MemFree;用做文件緩沖的物理內存的總量:buffers;用做緩沖的物理內存的總量:Cached;活躍的內存大小:Active;不活躍的內存大小:Inactive;交換分區的總量:SwapTotal;交換分區未使用的總量:SwapFree等信息。(3)內核版本

文件/proc/version顯示了正在運行的內核版本、編譯此內核的gcc版本以及該內核的編譯時間。

(4)從系統最后一次啟動以來的時間,形式為dd:hh:mm:ss uptime讀出的時間是以秒計的,所以根據要求要轉換為天:小時:分鐘:秒。1天為86400秒,1小時為3600秒,1分鐘為60秒。通過兩個運算符就可以很好的轉換:“/”做除法取整運算,“%”做除法取余運算。舉例:86800秒,(86800/86400)=1(天),(86800%86400)=400(余400秒);400秒,(400/3600)=0小時,(400%3600)=400(余400秒);400秒,(400/60)=6分鐘,(400%60)=40(余40秒)。所以最后結果為:1:0:6:40。(5)其他信息的讀取 從/proc/stat中讀取信息

? CPU花費在用戶態、系統態和空閑態的時間——cpu ? 自系統啟動以來,發生的所有的中斷的次數——intr ? 內核執行的上下文轉換的次數----ctxt ? 系統最后啟動的時間----btime ? 從系統啟動開始創建的進程數----processes

6、Linux的目錄結構

操作系統實驗

對于Linux來講它的樹型結構與Windows不同,Windows可以有多個分區,每個分區都有根,但Linux 只有一個根,其他的所有文件、目錄或硬盤分區、軟盤、光盤、U 盤都必須mount(掛載)到Linux 根下的一個目錄中才能被訪問和使用。下面列出根目錄下的常見系統目錄及其用途。

/bin

bin是binary的縮寫。這個目錄沿襲了UNIX系統的結構,存放著使用者最經常使用的命令。例如cp、ls、cat,等等。

/boot

這里存放的是啟動Linux時使用的一些核心文件。

/dev

dev是device(設備)的縮寫。這個目錄下是所有Linux的外部設備,其功能類似DOS下的.sys和Win下的.vxd。在Linux中設備和文件是用同種方法訪問的。例如:/dev/hda代表第一個物理IDE硬盤。

/etc

這個目錄用來存放系統管理所需要的配置文件(例如配置文件inittab)和子目錄。

/home

用戶的主目錄,比如說有個用戶叫wang,那他的主目錄就是/home/wang,也可以用~wang表示。

/lib

這個目錄里存放著系統最基本的動態鏈接共享庫,其作用類似于Windows里的.dll文件。幾乎所有的應用程序都需要用到這些共享庫。

/lost+found

這個目錄平時是空的,當系統不正常關機后,這里就成了一些無家可歸的文件的避難所,有點類似于DOS下的.chk文件。

/media

用來掛載光盤、U盤等文件系統的目錄。/misc

用來掛載NFS 共享目錄。

/mnt

用于掛載其他硬盤分區系統的目錄(如掛載xp分區)。

/opt

某些第三方軟件商軟件的安裝地點,如國產紅旗office就存放于此。/proc

這個目錄是一個虛擬的目錄,它是系統內存的映射,可以通過直接訪問這個目錄來獲取系統信息。也就是說,這個目錄的內容不在硬盤上而是在內存里。

/root

系統管理員(也叫超級用戶)的主目錄。作為系統的擁有者,總要有些特權,比如單獨擁有一個目錄。

/sbin

s就是Super User的意思,也就是說這里存放的是系統管理員使用的管理程序。

/tmp

這個目錄是用來存放一些臨時文件的地方。

/usr

這是最龐大的目錄,要用到的應用程序和文件幾乎都存放在這個目錄 10

操作系統實驗

下。其中包含以下子目錄:

/usr/X11R6

存放X-Window的目錄; /usr/bin

存放著許多應用程序;

/usr/sbin

給超級用戶使用的一些管理程序就放在這里;

/usr/include

Linux下開發和編譯應用程序需要的頭文件,在這里查找; /usr/lib

存放一些常用的動態鏈接共享庫和靜態檔案庫;

/usr/local

這是提供給一般用戶的/usr目錄,在這里安裝軟件最適合; /usr/src

Linux開放的源代碼就存在這個目錄。

/var

這個目錄中存放著那些不斷在擴充著的東西,為了保持usr的相對穩定,那些經常被修改的目錄可以放在這個目錄下,實際上許多系統管理員都是這樣做的。另外,系統的日志文件就在/var/log目錄中。

我們一般日常能經常訪問的目錄有/home 目錄、/mnt目錄、/media 目錄、/usr 目錄。

第三篇:操作系統實驗體會

操作系統實驗體會

操作系統 2010-04-04 14:38:15 閱讀814 評論0 字號:大中小 訂閱

每一次課程設計度讓我學到了在平時課堂不可能學到的東西。所以我對每一次課程設計的機會都非常珍惜。不一定我的課程設計能夠完成得有多么完美,但是我總是很投入的去研究去學習。所以在這兩周的課設中,熬了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文件夾中的boot.asm和loader.asm兩個匯編文件,按F7生成項目,生成完成后,使用Windows資源管理器打開項目文件夾中的Debug文件夾。找到由boot.asm生成的軟盤引導扇區程序boot.bin文件,找到由loader.asm生成的loader程序loader.bin文件,記錄下此文件的大小1566字節。

2.2 調試EOS操作系統的啟動過程

2.2.1 使用Bochs做為遠程目標機

將調試時使用的遠程目標機修改為Bochs

2.2.2 調試BIOS程序

按F5啟動調試,Bochs在CPU要執行的第一條指令(即BIOS的第一條指令)處中斷,從Console窗口顯示的內容中,我們可以獲得關于BIOS第一條指令的相關信息,然后查看CPU在沒有執行任何指令之前主要寄存器中的數據,以及內存中的數據。

2.2.3 調試軟盤引導扇區程序

練習從0x7c00處調試軟盤引導扇區程序;查看boot.lst文件;調試過程——軟盤引導扇區程序的主要任務就是將軟盤中的loader.bin文件加載到物理內存的0x1000處,然后跳轉到loader程序的第一條指令(物理地址0x1000處的指令)繼續執行loader程序;

2.2.4 調試加載程序

調試過程——Loader程序的主要任務是將操作系統內核(kernel.dll文件)加載到內存中,然后讓CPU進入保護模式并且啟用分頁機制,最后進入操作系統內核開始執行(跳轉到kernel.dll的入口點執行);

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

第五篇:《操作系統》實驗指導書

《操作系統》實驗指導書

(適用于計科、網絡工程、軟件工程、信計專業)

計算機科學與技術學院

2010-5

目錄

前言..................................................................................................................................................3 實驗

一、進程管理與進程同步.......................................................................................................4 實驗

二、存儲器管理.......................................................................................................................6 實驗

三、磁盤調度算法的設計.......................................................................................................7 實驗

四、文件系統原理與模擬實現...............................................................................................8

前言

本課程將系統學習操作系統的基本概念和常用算法以及其發展情況和應用情況。通過本課程的學習,學生應達到如下要求:

1、加深理解操作系統原理。

2、熟悉操作系統的常用算法并完成算法的程序設計。

3、理解當前操作系統的應用前景和新的進展。

本課程主要講解操作系統的實現原理,如進程管理、進程同步、存儲器管理、設備管理和文件系統等。要求學生理解操作系統的基本原理并完成其中多種典型的操作系統的算法的模擬序設計。

學生可以采用任何一種自己熟悉的編程語言完成算法的程序設計,如C/C++、Delphi、VB、VC、C#等。

實驗

一、進程管理

實驗目的:

理解和掌握進程管理中死鎖處理和進程同步的方法。

實驗內容:

實現銀行家算法、進程調度過程的模擬、讀者-寫者問題的寫者優先算法。

實驗步驟:

? 理解安全性算法和銀行家算法的核心機制:

針對3類資源、5個進程的情況,設計相應的數據結構,分別表示每個進程占用各類資源的情況;

編程實現安全性算法函數,編制主函數,動態輸入資源的占用情況,進程的資源申請,調用安全性函數,實現銀行家算法;

測試:輸入可分配和不可分配的請求,測試系統的正確性。

? 理解進程的三狀態調度過程,及各狀態間的轉換關系;

模擬若干個進程的運行過程,將其存入進程文件中。如:進程1:運行5秒后有3秒的I/O操作,之后有10秒的運行,結束。可以寫成:”p1:r5,io3,r3 e;” ;

編程實現調度算法函數,定義時間片大小和并發進程個數,不斷從進程文件中讀出進程信息,模擬進程的運行及調度過程;

測試:針對進程文件里面的數據為正常、缺項、格式不正確等各種情況,檢測程序的執行結果。

? 設計讀者--寫者問題的寫者優先算法;

學習Windows平臺下信號量的API函數的使用;編制讀寫進程的模擬信息文件,里面包含多個讀寫進程的運行描述:編制讀者--寫者問題的寫者優先算法,從進程模擬信息文件中取出進程信息,按要求啟動對應的進程模擬程序,決定出讀者/寫者進程的運行次序。

實驗結果:

銀行家算法程序提供一個用戶界面,可以在上邊發出資源申請命令,系統應能給出是否可以接受申請,并且有結論輸出;

進程調度模擬程序根據一個進程調度文件,模擬進程的各種調度過程,用適合的表達方式表示出來。

寫者優先同步控制程序根據一個讀寫進程模擬信息文件,按照寫者優先同步控制過程,用適合的表達方式表示出各讀寫進程的執行次序。

實驗

二、存儲器管理

實驗目的:

理解各類置換算法的原理和虛擬存儲器管理的方法。

實驗內容:

編程實現LRU算法或CLOCK/改進算法等置換算法(二選一),模擬實現虛擬存儲器的地址變換過程。

實驗步驟:

? 理解LRU或CLOCK改進算法等置換算法;

設計與算法相關的數據結構,如:LRU的堆棧或CLOCK改進算法中的循環結構;

按照最多5塊的內存分配情況,編程實現所選算法,動態輸入訪問內存的塊號序列,輸出置換結果;

測試:輸入合法、非法的訪問序列數據,檢查程序的正確性和健壯性。

? 理解虛擬存儲器的地址變換過程;

設計用于模擬快表、頁表、地址變換所用的寄存器的數據結構; 編制頁表的初始信息文件,舉例說明文件中具有的信息:共有5塊,每塊的狀態、在內存和外存的起始地址等。

編程實現虛擬存儲器地址變換算法程序,動態輸入所要訪問的邏輯地址,變換過程文字描述以及變換后的物理地址;

測試:輸入有效、無效地址,測試程序的正確性和錯誤處理能力。

實驗結果:

置換算法程序提供內存訪問序列的輸入界面,輸出正確的置換過程描述和置換結果;

虛擬地址變換程序提供邏輯地址輸入界面,形象地表示出變換成物理地址的過程與最后變換成的物理地址。

實驗

三、磁盤調度算法的設計

實驗目的:

通過對磁盤調度算法的設計,深入理解提高磁盤訪問速度的原理。

實驗內容:

模擬實現磁盤調度算法:最短尋道時間優先(SSTF)和掃描(SCAN)算法。

要求:

可以對給出的任意的磁盤請求序列、計算平均尋道長度; 要求可定制磁盤請求序列長度、磁頭起始位置、磁頭移動方向。

測試:假設磁盤訪問序列:98,183,37,122,14,124,65,67;讀寫頭起始位置:53,方向:磁道增加的方向。

實驗

四、文件系統原理與模擬實現

實驗目的:

了解操作系統中文件系統的結構和管理過程,掌握經典的算法:混合索引與成組鏈接法等方法。

實驗內容:

編程模擬實現混合索引和成組鏈接法算法;

實驗步驟:

? 模擬混合索引的原理;

假設每個盤塊16字節大小,每個盤塊號占2字節:

設計支持混合索引算法的索引節點的數據結構;編程模擬實現混合索引算法。

測試:輸入一個文件的長度,給出模擬分配占用的磁盤塊的情況;輸入一個需要訪問的地址,計算該地址所在的盤塊號。

? 模擬成組鏈接法的原理;

設系統具有7個可用磁盤塊,每組3塊。

編程模擬實現成組鏈接法。輸入請求的磁盤塊數,模擬成組鏈接分配;輸入回收的磁盤塊號,模擬成組鏈接回收。

測試:輸入請求的磁盤塊數,給出分配后的鏈接情況。輸入回收的磁盤塊號,給出回收后的鏈接情況。

下載操作系統實驗六word格式文檔
下載操作系統實驗六.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    操作系統實驗十

    試驗十文件系統設計 數計學院教師實驗教案 (實驗十) 實驗項目名稱:文件系統設計 教師評分: 一、實驗項目名稱: 文件系統設計 二、實驗目的和要求: 目的:通過一個簡單多用戶文件系統......

    山大操作系統實驗35篇

    進程調度算法實驗 張咪 軟件四班 一、實驗要求 設有兩個并發執行的父子進程,不斷循環輸出各自進程號、優先數和調度策略。進程初始調度策略均為系統默認策略和默認優先級。當......

    操作系統實驗教學大綱(新)

    《操作系統》課程實驗教學大綱 英文名稱:Operating System 課程編號:0007021046-1 學時數:48+S16 課程性質:必修 先修課程:C語言程序設計、數據結構、計算機組成原理、匯編語言程......

    操作系統本科實驗任務

    實驗一 一、實驗名稱 進程調度的設計與實現 二、實驗目的 1、 綜合應用下列知識點設計并實現操作系統的進程調度:鄰接表,布爾 數組,非阻塞輸入,圖形用戶界面GUI,進程控制塊,進程狀......

    網絡操作系統實驗教案

    網絡操作系統實驗指導書 2006.3 網絡操作系統實驗教案 孫梅 一、實驗名稱: 實驗一、網絡操作系統的安裝(2學時) 二、儀器、設備: 計算機、網絡互聯設備路由器或交換機 三、參考......

    實驗六

    實驗報告課程名稱:SQLServer數據庫基礎任課教師:池宗琳實驗名稱:視圖、規則和索引的使用年級、專業:2018級電子信息工程學號:20181060199姓名:茍誠日期:2019年11月13日云南大學信息......

    操作系統存儲管理實驗介紹

    河南師范大學計算機與信息技術學院實驗報告 實驗五 存儲管理 一、實驗目的 1 、加深對操作系統存儲管理的理解 2 、能過模似頁面調試算法,加深理解操作系統對內存的高度管理......

    操作系統進程調度實驗五篇范文

    一. 實驗目的及實驗環境 1.實驗目的 通過觀察、分析實驗現象,深入理解進程及進程在調度執行和內存空間等方面的特點,掌握在POSIX 規范中fork和kill系統調用的功能和使用。 2.......

主站蜘蛛池模板: 国产精品无码av片在线观看播| 国产白丝无码免费视频| 男男啪啪激烈高潮cc漫画免费| 色先锋av资源中文字幕| 丝袜自慰一区二区三区| 日韩欧美一区二区三区免费观看| 欧美人与禽z0zo牲伦交| 欧美亚洲综合另类色妞网| 国产三级做爰在线播放| 业余 自由 性别 成熟视频 视频| 国精品无码一区二区三区在线| 国产亚洲中文日本不卡二区| 国产无套内射又大又猛又粗又爽| 137肉体摄影日本裸交| 麻豆精品人妻一区二区三区蜜桃| 人妻少妇乱子伦精品无码专区电影| 国产日本精品视频在线观看| 四虎国产精品一区二区| 国产精品白浆无码流出| 国产啪精品视频网站免费| 116美女极品a级毛片| 久99久热只有精品国产女同| 色猫咪免费人成网站在线观看| 香港三级日本三级a视频| 成人做爰www网站视频| 久久亚洲精品无码gv| 蜜臀av在线播放| 国产精品亚洲欧美大片在线观看| 亚洲老熟女与小伙bbwtv| 国产精品久久久久久无码五月| 无人区一码二码三码四码区| 国产午夜精品理论片久久影院| 国产麻豆剧果冻传媒星空视频| 亚洲国产精品无码久久一区二区| 精品久久久bbbb人妻| 精品日产一卡二卡| 一区二区国产高清视频在线| 久久天天躁夜夜躁狠狠 ds005.com| 92国产精品午夜免费福利视频| 色屁屁www影院免费观看入口| 久久www成人看片免费不卡|