物理存儲器與進程邏輯地址空間的管理_第1頁
物理存儲器與進程邏輯地址空間的管理_第2頁
物理存儲器與進程邏輯地址空間的管理_第3頁
物理存儲器與進程邏輯地址空間的管理_第4頁
物理存儲器與進程邏輯地址空間的管理_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGE1操作系統(tǒng)實驗報告課程名稱操作系統(tǒng)實驗課程編號0906553實驗項目名稱物理存儲器與進程邏輯地址空間的管理學號年級姓名專業(yè)學生所在學院指導教師實驗室名稱地點哈爾濱工程大學計算機科學與技術學院

第五次物理存儲器與進程邏輯地址空間的管理一、實驗概述1.實驗名稱物理存儲器與進程邏輯地址空間的管理2.實驗目的通過查看物理存儲器的使用情況,并練習分配和回收物理內(nèi)存,從而掌握物理存儲器的管理方法。通過查看進程邏輯地址空間的使用情況,并練習分配和回收虛擬內(nèi)存,從而掌握進程邏輯地址空間的管理方法。3.實驗類型驗證+設計4.實驗內(nèi)容準備實驗閱讀控制臺命令“pm”相關的源代碼,并查看其執(zhí)行的結(jié)果分配物理頁和釋放物理頁閱讀控制臺命令“vm”相關的源代碼,并查看其執(zhí)行的結(jié)果在系統(tǒng)進程中分配虛擬頁和釋放虛擬頁在應用程序進程中分配虛擬頁和釋放虛擬頁二、實驗環(huán)境EOS操作系統(tǒng)和OSLab集成實驗環(huán)境,主要運用了C語言。三、實驗過程1.設計思路和流程圖else{printf("\n");printf("realeaseerror");}printf("\n");printf("\nEndlessloop!");while(1){};/*進入死循環(huán),這樣應用程序就不會結(jié)束。*/ }else{printf("Error!\n");return0;}printf("Success!\n");return1;}4.程序運行時的初值和運行結(jié)果4.1準備實驗啟動OSLab。新建一個EOSKernel項目。4.2閱讀控制臺命令“pm”相關的源代碼,并查看其執(zhí)行的結(jié)果按照下面的步驟執(zhí)行控制臺命令“pm”,查看物理存儲器的信息:1.按F7生成在本實驗3.1中創(chuàng)建的EOSKernel項目。2.按F5啟動調(diào)試。3.待EOS啟動完畢,在EOS控制臺中輸入命令“pm”后按回車。4.3分配物理頁和釋放物理頁接下來,在pm命令函數(shù)中添加分配物理頁和釋放物理頁的代碼,單步調(diào)試管理物理頁的方法。1.使用OSLab打開本實驗文件夾中的pm.c文件。2.使用pm.c文件中ConsoleCmdPhysicalMemory函數(shù)的函數(shù)體替換ke/sysproc.c文件中ConsoleCmdPhysicalMemory函數(shù)的函數(shù)體。3.按F7生成修改后的EOSKernel項目。4.按F5啟動調(diào)試。5.待EOS啟動完畢,在EOS控制臺中輸入命令“pm”后按回車。按照下面的步驟調(diào)試分配物理頁和釋放物理頁的過程:1.結(jié)束之前的調(diào)試。2.在ke/sysproc.c文件的ConsoleCmdPhysicalMemory函數(shù)中,在調(diào)用MiAllocateAnyPages函數(shù)的代碼行添加一個斷點,在調(diào)用MiFreePages函數(shù)的代碼行添加一個斷點。3.按F5啟動調(diào)試。4.待EOS啟動完畢,在EOS控制臺中輸入命令“pm”后按回車。5.pm命令開始執(zhí)行后,會在調(diào)用MiAllocateAnyPages函數(shù)的代碼行處中斷,按F11調(diào)試進入MiAllocateAnyPages函數(shù)。6.按F10單步調(diào)試MiAllocateAnyPages函數(shù)的執(zhí)行過程。繼續(xù)調(diào)試釋放物理頁的過程:1.按F5繼續(xù)執(zhí)行,會在調(diào)用MiFreePages函數(shù)的代碼行處中斷,按F11調(diào)試進入MiFreePages函數(shù)。2.按F10單步調(diào)試MiFreePages函數(shù)的執(zhí)行過程。結(jié)束此次調(diào)試。4.4閱讀控制臺命令“vm”相關的源代碼,并查看其執(zhí)行的結(jié)果按照下面的步驟執(zhí)行控制臺命令“vm”,查看系統(tǒng)進程的虛擬地址描述符信息:1.按F5啟動調(diào)試。2.待EOS啟動完畢,在EOS控制臺中輸入命令“pt”后按回車?!皃t”命令可以輸出當前系統(tǒng)中的進程列表,其中系統(tǒng)進程的ID為1。3.在EOS控制臺中輸入命令“vm1”后按回車。可以按照下面的步驟執(zhí)行控制臺命令“vm”,查看當創(chuàng)建了一個應用程序進程后,系統(tǒng)進程和應用程序進程中虛擬地址描述符的信息:1.在“項目管理器”窗口中雙擊Floppy.img文件使用FloppyImageEditor工具打開此軟盤鏡像。2.將本實驗文件夾中的LoopApp.exe文件添加到軟盤鏡像的根目錄中。3.點擊FloppyImageEditor工具欄上的保存按鈕,關閉該工具。4.按F5啟動調(diào)試。5.待EOS啟動完畢,在EOS控制臺中輸入命令“A:\LoopApp.exe”后按回車。此時就使用EOS應用程序文件LoopApp.exe創(chuàng)建了一個應用程序進程,由于此進程執(zhí)行了一個死循環(huán),所以此進程不會結(jié)束執(zhí)行,除非關閉虛擬機。6.此時按Ctrl+F2切換到“Console-2”,然后輸入命令“pt”后按回車。輸出的信息如圖所示。其中ID為31的進程就是應用程序進程,ID為33的線程就是應用程序進程的主線程。7.輸入命令“vm1”后按回車,可以查看系統(tǒng)進程中虛擬地址描述符的信息。8.輸入命令“vm31”后按回車,可查看應用程序進程中虛擬地址描述符的信息。為了加深對進程邏輯地址空間的理解,可以在控制臺1至控制臺7中都執(zhí)行命令“A:\LoopApp.exe”,從而讓應用程序創(chuàng)建7個進程,然后在控制臺8中執(zhí)行“pt”、“vm”等命令,查看系統(tǒng)進程和應用程序進程的虛擬地址描述符。4.5在系統(tǒng)進程中分配虛擬頁和釋放虛擬頁首先,按照下面的步驟修改vm命令的源代碼:1.使用OSLab打開本實驗文件夾中的vm.c文件。2.使用vm.c文件中ConsoleCmdVM函數(shù)的函數(shù)體替換ke/sysproc.c文件中ConsoleCmdVM函數(shù)的函數(shù)體。3.按F7生成修改后的EOSKernel項目。4.按F5啟動調(diào)試。5.待EOS啟動完畢,在EOS控制臺中輸入命令“vm1”后按回車。命令執(zhí)行的結(jié)果會同時轉(zhuǎn)儲在“輸出”窗口中,內(nèi)容如圖所示。1.在ke/sysproc.c文件的ConsoleCmdVM函數(shù)中,在調(diào)用MmAllocateVirtualMemory函數(shù)的代碼行添加一個斷點,在調(diào)用MmFreeVirtualMemory函數(shù)的代碼行添加一個斷點。2.按F5啟動調(diào)試。3.待EOS啟動完畢,在EOS控制臺中輸入命令“vm1”后按回車。4.vm命令開始執(zhí)行后,會在調(diào)用MmAllocateVirtualMemory函數(shù)的代碼行處中斷。此時要注意參數(shù)BaseAddress和RegionSize初始化的值。按F11調(diào)試進入MmAllocateVirtualMemory函數(shù)。5.按F10單步調(diào)試MmAllocateVirtualMemory函數(shù)的執(zhí)行過程,嘗試回答下面的問題:繼續(xù)調(diào)試釋放虛擬頁的過程:1.按F5繼續(xù)執(zhí)行,會在調(diào)用MmFreeVirtualMemory函數(shù)的代碼行處中斷。此時要注意參數(shù)BaseAddress和RegionSize初始化的值。按F11調(diào)試進入MmFreeVirtualMemory函數(shù)。2.按F10單步調(diào)試MmFreeVirtualMemory函數(shù)的執(zhí)行過程,嘗試回答下面的問題:1.嘗試在調(diào)用MmAllocateVirtualMemory函數(shù)時將RegionSize參數(shù)的設置為PAGE_SIZE+1。2.在調(diào)用MmAllocateVirtualMemory函數(shù)時將BaseAddress參數(shù)的值設置為已經(jīng)被占用的虛擬內(nèi)存0xA0000000,觀察“輸出”窗口中轉(zhuǎn)儲的信息。3.嘗試在調(diào)用MmAllocateVirtualMemory函數(shù)時將RegionSize參數(shù)的值設置為PAGE_SIZE*2,將BaseAddress參數(shù)的值設置為0xA0017004,觀察“輸出”窗口中轉(zhuǎn)儲的信息。4.6在應用程序進程中分配虛擬頁和釋放虛擬頁4.6.1要求創(chuàng)建一個EOS應用程序,并編寫代碼完成下列功能:1.調(diào)用API函數(shù)VirtualAlloc,分配一個整型變量所需的空間,并使用一個整型變量的指針指向這個空間。2.修改整型變量的值為0xFFFFFFFF。在修改前輸出整型變量的值,在修改后再輸出整型變量的值。3.調(diào)用API函數(shù)Sleep,等待10秒鐘。4.調(diào)用API函數(shù)VirtualFree,釋放之前分配的整型變量的空間。5.進入死循環(huán),這樣應用程序就不會結(jié)束。4.6.2測試方法1.代碼修改完畢后,按F7生成EOS應用

溫馨提示

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

評論

0/150

提交評論