第9次小課存儲管理_第1頁
第9次小課存儲管理_第2頁
第9次小課存儲管理_第3頁
第9次小課存儲管理_第4頁
第9次小課存儲管理_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

操作系統(tǒng)華軟軟件工程系

基礎(chǔ)課程第十次小課存儲管理華軟軟件工程系

主要章節(jié)內(nèi)存管理實驗課主要內(nèi)容本周大課內(nèi)容回顧理解操作系統(tǒng)對內(nèi)存的管理通過實驗掌握Linux系統(tǒng)中動態(tài)申請內(nèi)存的方法主要內(nèi)容第一部分本周大課內(nèi)容回顧

內(nèi)存管理動態(tài)申請內(nèi)存主要內(nèi)容大課內(nèi)容回顧空閑區(qū)的分配算法有哪三種?基本思想呢?計算機系統(tǒng)所能運行的程序其虛擬地址空間的大小受什么限制?字長16位CPU提供的16位地址寄存器其虛擬地址空間是多大?在存儲管理中,采用覆蓋與交換技術(shù)的目的是什么?實現(xiàn)虛擬內(nèi)存內(nèi)存管理相關(guān)系統(tǒng)調(diào)用void*malloc(intsize);動態(tài)申請內(nèi)存int*p,p1;p=(int*)malloc(sizeof(int));voidfree(void*block);釋放由malloc申請的內(nèi)存

free(p);externvoid*realloc(void*mem_address,unsignedintnewsize);重新申請內(nèi)存p1=(int*)realloc(p,sizeof(int)*10);void*alloca(intlen);半自動分配內(nèi)存p=(int*)alloca(sizeof(int)*10);內(nèi)存管理基本概念下面是C語言可執(zhí)行程序的基本情況代碼區(qū)靜態(tài)數(shù)據(jù)/全局初始化數(shù)據(jù)區(qū)未初始化數(shù)據(jù)區(qū)內(nèi)存管理基本概念(2)代碼區(qū)(textsegment):存放CPU執(zhí)行的機器指令,包括操作碼和操作數(shù),可共享、通常只讀。全局初始化數(shù)據(jù)區(qū)/靜態(tài)數(shù)據(jù)區(qū)(data):包含明確被初始化的全局變量、靜態(tài)變量和常量數(shù)據(jù)。只初始化一次。未初始化數(shù)據(jù)區(qū)(BSS):存入的是全局未初始化變量。在運行時改變其值。C程序的內(nèi)存布局可執(zhí)行代碼(代碼區(qū))已初始化全局變量、靜態(tài)變量和常量數(shù)據(jù)(數(shù)據(jù)區(qū))未初始化全局變量(BSS,用零初始化)堆區(qū)(向上增長)棧區(qū)(向下增長)低地址運行時的5個區(qū)域高地址用于動態(tài)分配內(nèi)存由編譯器自動分配,存放函數(shù)的參數(shù)值、局部變量的值。簡單示例inta=0;//a在全局已初始化數(shù)據(jù)區(qū)char*p1;//p1在BSS區(qū)(未初始化全局變量)main(){intb;//b在棧區(qū)chars[]=“abc”;//s為數(shù)組變量,在棧區(qū)//”abc”為字符串常量,在已初始化數(shù)據(jù)區(qū)char*p1,p2;//p1,p2在棧區(qū)staticintc=0;//c為全局靜態(tài)數(shù)據(jù),在已初始化數(shù)據(jù)區(qū)p1=(char*)malloc(10);//分配得來的10個字節(jié)在堆區(qū)p2=(char*)malloc(20);//分配得來的20個字節(jié)在堆區(qū)free(p1);free(p2);}Linux內(nèi)存查看命令free(補充)功能說明:顯示內(nèi)存狀態(tài)。

語法:free[-bkmotV][-s]

補充說明:free指令會顯示內(nèi)存的使用情況,包括實體內(nèi)存,虛擬的交換文件內(nèi)存,共享內(nèi)存區(qū)段,以及系統(tǒng)核心使用的緩沖區(qū)等。

參數(shù):

-b以Byte為單位顯示內(nèi)存使用情況。

-k以KB為單位顯示內(nèi)存使用情況。

-m以MB為單位顯示內(nèi)存使用情況。

-o不顯示緩沖區(qū)調(diào)節(jié)列。

-s持續(xù)觀察內(nèi)存使用狀況。

-t顯示內(nèi)存總和列。

-V顯示版本信息。也可以用vmstat命令查看內(nèi)存情況也可以用cat/proc/meminfo查看第二部分動態(tài)申請內(nèi)存實驗

內(nèi)存管理動態(tài)申請內(nèi)存主要內(nèi)容實驗11.某虛擬存儲器的用戶編程空間共4KB,分頁管理系統(tǒng)中的頁長度為1KB。假定該用戶頁表分配內(nèi)存后的頁面的頁號和物理塊號的對照表如下:頁號物理 塊號0 21 52 13 8則邏輯地址3500所對應的物理地址是什么?物理地址=塊起始地址+頁內(nèi)位移W實驗2在一個采用頁式虛擬存儲管理的系統(tǒng)中,若進程在內(nèi)存中占3塊(開始為空),它依次要訪問的頁面序列是:6、5、4、3、2、1、5、1、5、2、1、2、1、2、1、6、5,若按先進先出算法(FIFO)和最近最少使用調(diào)度算法(LRU)分別將產(chǎn)生多少次缺頁中斷?什么是缺頁中斷?

缺頁中斷就是要訪問的頁不在主存,需要操作系統(tǒng)將其調(diào)入主存后再進行訪問。實驗3申請、使用、釋放內(nèi)存申請一塊大小為10的內(nèi)存,存放”123456789”,輸出字符串及存放地址。改造:

1.調(diào)整內(nèi)存大小為20,存放”9876543210”,輸出字符串及存放地址。2.采用半自動方式分配內(nèi)存。

目的:理解內(nèi)存的申請、使用、調(diào)整內(nèi)存尺寸、釋放相關(guān)的系統(tǒng)調(diào)用申請一塊大小為10的內(nèi)存,存放”123456789”,輸出字符串及存放地址。調(diào)整內(nèi)存大小為20,存放”9876543210”,輸出字符串及存放地址采用半自動方式分配內(nèi)存課后作業(yè)設(shè)某時刻系統(tǒng)中有3個空閑區(qū),其大小和首地址分別為(35KB,100KB),(12KB,156KB),(28KB,200KB),作業(yè)序列及其內(nèi)存請求分別為(JOB1,20KB),(JOB2,15KB

溫馨提示

  • 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

提交評論