實驗1-可變分區(qū)存儲管理-不要上傳壓縮文件_第1頁
實驗1-可變分區(qū)存儲管理-不要上傳壓縮文件_第2頁
實驗1-可變分區(qū)存儲管理-不要上傳壓縮文件_第3頁
實驗1-可變分區(qū)存儲管理-不要上傳壓縮文件_第4頁
實驗1-可變分區(qū)存儲管理-不要上傳壓縮文件_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、實驗一 可變分區(qū)存儲管理 請盡量到機(jī)房上機(jī) (一)實驗題目 編寫一個C程序,用char *malloc(unsigned size)函數(shù)向系統(tǒng)申請一次內(nèi)存空間(如size=1000,單位為字節(jié)),用首次適應(yīng)法 addr = (char *)fmalloc(unsigned size) 和 ffree(unsigned size,char * addr)(基本要求)或 循環(huán)首次適應(yīng)法(提高一步) addr = (char *)lmalloc(unsigned size) 和 lfree(unsigned size,char * addr) 模擬UNIX可變分區(qū)內(nèi)存管理,實現(xiàn)對該內(nèi)存區(qū)的分配和釋放

2、管理。(二)實驗?zāi)康?加深對可變分區(qū)的存儲管理的理解;2提高用C語言編制大型系統(tǒng)程序的能力,特別是掌握C語言編程的難點:指針及指針作為函數(shù)參數(shù)。(三)實驗要求 空閑存儲區(qū)表可采用結(jié)構(gòu)數(shù)組的形式,建議采用的數(shù)據(jù)結(jié)構(gòu)為: 結(jié)構(gòu)數(shù)組的形式: struct map unsigned m_size; char * m_addr; ; struct map coremapN; 分配函數(shù)的參數(shù)size和釋放函數(shù)的參數(shù)size、addr以鍵盤命令的形式輸入,每次分配和釋放后顯示自己的空閑存儲區(qū)表。整個系統(tǒng)的基本框架為: (四)實驗注意事項 鍵盤命令的簡單形式如: malloc 100 通過fmalloc函數(shù)申

3、請100字節(jié)的內(nèi)存空間。 free 100 2567890 通過ffree函數(shù)釋放起始地址為2567890的那個內(nèi)存區(qū),該地址先前通過fmalloc申請的有效存儲區(qū)地址。 為了避免輸入復(fù)雜的釋放地址,可采用輸入相對地址的方法,如:f 100 300(相對地址)調(diào)用ffree時再加上分配到的內(nèi)存始地址。命令輸入可用C函數(shù): scanf (“%c”, &cmdchar); cmdchar =getchar ( ) 或 scanf (“%s”, &cndstring)后跟 scanf (“%u”, &size) 或 scanf (“%u %u”, &size, &addr)。 如采用通用的命令串的形

4、式,還要調(diào)用一個串匹配函數(shù),以判斷是哪個命令。 可采用簡單的讀取單個命令字符的形式,由于getchar或scanf可能讀入的是前一個命令留在鍵盤輸入緩沖區(qū)內(nèi)的 ,t,n等空白字符,為了正確地讀入m,f等本次命令字符,需要預(yù)先濾去輸入緩沖區(qū)的空白字符: do c=getchar(); while(c=n|c=t|c= ) 程序輸入、調(diào)試和測試 可以在Linux的環(huán)境下進(jìn)行,也可在Windows turbo C等的環(huán)境中進(jìn)行,但Windows和turbo C環(huán)境不直接支持I/O轉(zhuǎn)向,故在完成此項工作時應(yīng)將編譯后產(chǎn)生的執(zhí)行文件如myproc.exe存入磁盤的某個目錄中,如是Windows,運行cmd

5、命令進(jìn)入命令行窗口,運行程序,用I/O轉(zhuǎn)向生成結(jié)果文件。如: myproc.exe result.txt 在Linux的環(huán)境下可直接運行: ./myproc resul(五) 測試要求程序調(diào)試基本通過后,應(yīng)進(jìn)行較為全面的測試,建議采用白盒法的路徑測試方法,測試路徑應(yīng)包含分配算法的“首次”或“循環(huán)首次”、,釋放算法的與鄰近空閑分區(qū)聯(lián)系的四種情況,還要包含一些必要的出錯處理路徑。 可在測試通過后,可用I/O轉(zhuǎn)向使屏幕的輸出結(jié)果轉(zhuǎn)至指定文件。注意,由于此時看不到提示字符串和空閑存儲區(qū)表的輸出內(nèi)容,欲釋放存儲地址較難正確輸入,可采用以下幾種方法: 測試通過后可用I/O轉(zhuǎn)向使屏幕的輸出結(jié)果轉(zhuǎn)至指定文件。

6、注意,由于此時看不到提示字符串和空閑存儲區(qū)表的輸出內(nèi)容,欲釋放存儲地址較難正確輸入,可采用以下幾種方法:1在不采用輸出轉(zhuǎn)向時先完整地運行一遍,并記下所有的命令和參數(shù),再用I/O轉(zhuǎn)向時“摸瞎”似地依次輸入各個命令和參數(shù),由于malloc所分配的存儲區(qū)地址時用戶程序的虛地址空間,故同一程序的兩次運行的結(jié)果應(yīng)當(dāng)是一樣的。為了使輸出結(jié)果文件也含有輸入的命令串,應(yīng)在輸入命令后,再將命令和參數(shù)輸出至標(biāo)準(zhǔn)輸出設(shè)備。2. 如fmalloc和ffree,是采用相對地址的管理方法(malloc所分配的地址+偏移地址),那么輸入ffree的釋放地址就容易得多。3輸入也可采用I/O轉(zhuǎn)向,將預(yù)先設(shè)計好的所有輸入次序(部

7、分?jǐn)?shù)據(jù)可在不采用I/O轉(zhuǎn)向運行時輸入)寫入輸入文件,再用: myprog.exe result.txt的形式執(zhí)行。4對于文件的I/O較熟悉的學(xué)生可采用每次在屏幕輸出后重復(fù)向文件輸出的方法,這樣上述的問題就很容易解決了。(六) 實驗數(shù)據(jù)和結(jié)果 學(xué)生最后應(yīng)當(dāng)將實驗報告、程序、輸出結(jié)果文件和輸入命令文件(如果有的話)合并成一個文件,如progres.txt。 如在cmd命令行窗口的合并方法是:copy myprog.c+input.txt+result.txt progres.txt 在Linux中的合并方法是:cat myprog.c input result progres.txt(七)實驗報告

8、要求實驗報告包含以下幾個方面: 1題目。 2算法思想和概要設(shè)計和重要模塊的詳細(xì)設(shè)計及功能和接口說明。 3重要數(shù)據(jù)結(jié)構(gòu)和變量的說明。 4源程序、注釋和結(jié)果。 5測試方法,對測試結(jié)果的分析,錯誤的分析。 6. 程序及測試的改進(jìn)、本次上機(jī)經(jīng)驗及體會。以上可以簡化。 7. 將以上內(nèi)容和前面程序、輸出/輸入的文件再合并成一個實驗報告word文件。實驗報告中一定還要有一到兩幅含有自己姓名(可以是漢語拼音)的運行情況和結(jié)果的截圖。8. 將實驗報告(1個文件,不要壓縮)發(fā)到作業(yè)系統(tǒng)中。9. 如實驗在機(jī)房中完成,經(jīng)老師檢查后,實驗報告可簡化。參考答案在操作系統(tǒng)習(xí)題與應(yīng)用解析中的13章(p67)有該題的參考答案,可以參考、簡化,但不要照抄。實驗環(huán)境可以是任何的C或C+虛擬機(jī),但要求編C程序,不要編C+程序。鼓勵編一個數(shù)組實現(xiàn)的循環(huán)首次適應(yīng)法的實驗程序,這只要在首次適應(yīng)法的基礎(chǔ)上略加修改。在機(jī)房Win7/Win10允許telnet客戶端登錄Linux服務(wù)器控制面板-程序-程序和功能(打開(啟用)或關(guān)閉windows功能)-勾選:Telnet客戶端-點擊確定服務(wù)器地址:10.12.111.24210.12.111.243用戶名 student

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論