【正文】
完美WORD格式 實(shí)驗(yàn)四 存儲(chǔ)器管理目的與要求 本實(shí)驗(yàn)的目的是讓學(xué)生熟悉存儲(chǔ)器管理的方法,加深對(duì)所學(xué)各種存儲(chǔ)器管理方案的了解;要求采用一些常用的存儲(chǔ)器分配算法,設(shè)計(jì)一個(gè)存儲(chǔ)器管理模擬系統(tǒng),模擬內(nèi)存空間的分配和釋放。實(shí)驗(yàn)內(nèi)容①設(shè)計(jì)一個(gè)存放空閑塊的自由鏈和一個(gè)內(nèi)存作業(yè)分配表,存放內(nèi)存中已經(jīng)存在的作業(yè)。②編制一個(gè)按照首次適應(yīng)法分配內(nèi)存的算法,進(jìn)行內(nèi)存分配。③同時(shí)設(shè)計(jì)內(nèi)存的回收以及內(nèi)存清理(如果要分配的作業(yè)塊大于任何一個(gè)空閑塊,但小于總的空閑分區(qū),則需要進(jìn)行內(nèi)存的清理,空出大塊的空閑分區(qū))的算法。3.實(shí)驗(yàn)環(huán)境①PC兼容機(jī)②Windows、DOS系統(tǒng)、Turbo c ③C語(yǔ)言4.實(shí)驗(yàn)提示一、數(shù)據(jù)結(jié)構(gòu)自由鏈內(nèi)存空區(qū)采用自由鏈結(jié)構(gòu),鏈?zhǔn)子芍羔榝reep指向,鏈中各空區(qū)按地址遞增次序排列。初啟動(dòng)時(shí)整個(gè)用戶內(nèi)存區(qū)為一個(gè)大空區(qū),每個(gè)空區(qū)首部設(shè)置一個(gè)區(qū)頭(freearea)結(jié)構(gòu),區(qū)頭信息包括:Size 空區(qū)大小Next 前向指針,指向下一個(gè)空區(qū)Back 反向指針,指向上一個(gè)空區(qū)Adderss 本空區(qū)首地址內(nèi)存分配表JOBMAT系統(tǒng)設(shè)置一個(gè)MAT,每個(gè)運(yùn)行的作業(yè)都在MAT中占有一個(gè)表目,回收分區(qū)時(shí)清除相應(yīng)表目,表目信息包括:Name 用戶作業(yè)名Length 作業(yè)區(qū)大小Addr 作業(yè)區(qū)首地址二、算法存儲(chǔ)分配算法采用首次適應(yīng)法,根據(jù)指針freep查找自由鏈,當(dāng)找到第一塊可滿足分配請(qǐng)求的空區(qū)便分配,當(dāng)某空區(qū)被分配后的剩余空閑空間大于所規(guī)定的碎片最小量mini時(shí),則形成一個(gè)較小的空區(qū)留在自由鏈中?;厥諘r(shí),根據(jù)MAT將制定分區(qū)鏈入自由鏈,若該分區(qū)有前鄰或后鄰分區(qū),則將他們拼成一個(gè)較大的空區(qū)。當(dāng)某個(gè)分配請(qǐng)求不能被滿足,但此時(shí)系統(tǒng)中所有碎片總?cè)萘繚M足分配請(qǐng)求的容量時(shí),系統(tǒng)立即進(jìn)行內(nèi)存搬家,消除碎片。即將各作業(yè)占用區(qū)集中下移到用戶內(nèi)存區(qū)的下部(高地址部分),形成一片連續(xù)的作業(yè)區(qū),而在用戶內(nèi)存區(qū)的上部形成一塊較大的空閑,然后再進(jìn)行分配。本系統(tǒng)的主要程序模塊包括:分配模塊ffallocation,回收模塊ffcollection,搬家模塊coalesce及命令處理模塊menu,menu用以模擬系統(tǒng)的輸入,通過(guò)鍵盤(pán)命令選擇進(jìn)行分配模塊、回收模塊、內(nèi)存查詢以及退出的操作。程序運(yùn)行的流程如下圖:5.實(shí)驗(yàn)運(yùn)行情況****************MENU***************You can select one of the following:(1)Require to be allocate. 請(qǐng)分配內(nèi)存(2)Require to collecte the size. 將分配的內(nèi)存回收(3)Check the memory. 檢查當(dāng)前的內(nèi)存情況(4)Quit. 退出***********************************1Enter your job name:JOB1Enter your job length:1000name length(b) addreJOB1 1000 2000The total left is 4000 bytes6.實(shí)驗(yàn)程序include include include include include include define TOTALSPACE 5000