freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

操作系統(tǒng)課程設(shè)計(jì)報(bào)告內(nèi)存管理算法模擬-在線瀏覽

2025-01-19 16:04本頁(yè)面
  

【正文】 T FIT)、 快速適應(yīng)算法(QUICK FIT)和最壞適應(yīng)算法 (WORST FIT)。算法要求空閑分區(qū)鏈以地址遞增的次序鏈接。 若 從鏈?zhǔn)字敝伶溛捕疾荒苷业揭粋€(gè)滿足要求的分區(qū),則此次分區(qū)失敗,返回。 設(shè)計(jì)目的比較明確,主要有以下幾個(gè): ; ; ; ; 。 一些 部分要有 較 詳細(xì)的分析說(shuō)明。 對(duì)程序進(jìn)行 測(cè)試 。 。 算法思路: 先 我們以空閑分區(qū)鏈為例來(lái)說(shuō)明采用首次適應(yīng)算法的分配情況。在分配內(nèi)存過(guò)程中,從鏈?zhǔn)组_(kāi)始順序查找,直到找到一個(gè)大小能滿足要求的空閑分區(qū)為止;然后再按照作業(yè)的大小,從該分區(qū)中劃出一塊內(nèi)存空間分配給請(qǐng)求者,余下的空閑分區(qū)仍留在空閑鏈中。該算法 傾向于優(yōu)先利用內(nèi)存中低址部分的空閑分區(qū),從而保留了高址部分的大空閑分區(qū)。在分配空間給作業(yè)時(shí)首先判斷是否有空閑區(qū),有的話用首次適應(yīng)算法分配 找到所需大小分區(qū)。否則,從該分區(qū)中按 請(qǐng)求劃出一塊內(nèi)存空間分配出去,余下的部分仍然留在空閑分區(qū)表中。 用到的主要數(shù)據(jù)結(jié)構(gòu): 空閑節(jié)點(diǎn)結(jié)構(gòu) typedef struct kxjied 作業(yè)節(jié)點(diǎn)結(jié)構(gòu) typedef struct yyjied 作業(yè)分區(qū)表 usedtable 空閑分區(qū)表 freetable 空閑分區(qū)表首地址 freetableaddress = 0。 算法: (1)作業(yè)發(fā)出請(qǐng)求申請(qǐng)空間 : 作業(yè)名 jobname,作業(yè)大小 jobsize。從頭開(kāi)始檢索表,若 從鏈?zhǔn)字敝伶溛捕疾荒苷业揭粋€(gè)滿足要求的分區(qū),則此次分區(qū)失敗,返回。否則,從該分區(qū)中按請(qǐng)求劃出一塊內(nèi)存空間分配出去,余下的部分仍然留在空閑分區(qū)表中。剩余部分 plength = jobsize,此時(shí)分區(qū)表首地址 paddress +=jobsize。 4.: 回收作業(yè)空間 (1) 如果沒(méi)有作業(yè)則返回。 (3) 對(duì)分區(qū)進(jìn)行合并 。 當(dāng)程序運(yùn)行完畢釋放內(nèi)存時(shí),系統(tǒng)根據(jù)回收區(qū)的首地址,從空閑區(qū)表中找到相應(yīng)的插入點(diǎn),此時(shí)可能出現(xiàn)以下幾種情況: (1) 回收區(qū)與插入點(diǎn)的前一個(gè)分區(qū)相鄰接。 (2) 回收區(qū)與插入點(diǎn)的后一個(gè)分區(qū)相鄰接。 (3) 回收區(qū)與插入點(diǎn)的 前、 后 兩 個(gè)分區(qū)相鄰接。 (4) 回收區(qū)與前后都不鄰接。 根據(jù)程序結(jié)構(gòu)分析 本程序整 體流程圖如圖 21 所示 : 4 圖 21 程序 整體 流程圖 內(nèi)存分配流程圖 如圖 22 所示: Main() Init() 空閑分區(qū)表初始化 jobcallback() 作業(yè)回收 jobrequest() 作業(yè)請(qǐng)求 statePrint() allot( ) 作業(yè)分配函數(shù) 回收作業(yè)空間 callback() 狀態(tài)顯示 5 圖 21 程序整體流程圖 從頭 開(kāi)始 查表 plengthjobsie N Y 從該分區(qū)中劃出 jobsize N Y 返回 檢索完否 ? 返回 Y N 繼續(xù) plengthjobsizesize? 修改有關(guān)數(shù)據(jù)結(jié)構(gòu) 修改有關(guān)數(shù)據(jù)結(jié)構(gòu) 6 3系統(tǒng)實(shí)現(xiàn) 程序使用的 變量: int choice。 //循環(huán)條件與退出標(biāo)識(shí) long address。 //作業(yè)區(qū)鏈表長(zhǎng)度 int flag。 //為 p 申請(qǐng) 空閑分區(qū)表 utable x = new uarea。 //作業(yè)請(qǐng)求函數(shù) 函數(shù) 代碼如下: void jobrequest() { int jobname。 cout請(qǐng)輸入進(jìn)程名 : 。 cout請(qǐng)輸入進(jìn)程長(zhǎng)度 : 。 if( allot( jobname , jobsize ) == 4 ) printf(該進(jìn)程已成功獲得所要求內(nèi)存空間 \n)。 } int allot( jobname , jobsize ) //分配空間給作業(yè) 函數(shù)代碼如下: int allot( int jobname , double jobsize ) 7 { //判斷是否 有空閑區(qū) if( freetable == NULL ) return 1。 ftable q = p。amp。 p = pnext。 utable x = new uarea。 xlength = jobsize。 xnext = NULL。 paddress += (long)jobsize。 else qnext = pnext。 8 } //作業(yè)加入“作業(yè)表”中 utable r = usedtable。 while( r != NULL amp。 raddress xaddress ) { t = r。 } if( usedtable == NULL ) usedtable = x。 tnext = x。 } Init()。 freetableaddress = 0。 freetablenext = NULL。 } void statePrint() //顯示內(nèi)存狀態(tài)函數(shù) 代碼如下: void statePrint() { ftable p = freetable。 int x , y。 else x = 0x7fffffff。 else y = 0x7fffffff。 cout空閑 (下 )endlplengthendl。 } if( x y ) { q = qnext。 //作業(yè)回收函數(shù) 代碼如下: void jobcallback() { int jobname。 cin jobname。 if( result == 4 ) printf(該進(jìn)程已回收成功 \n)。 10 } int callback( int jobname ) //通過(guò)作業(yè)名回收作業(yè)函數(shù) 代碼如下: int callback( int jobname ) { if( usedtable == NULL ) return 1。 utable q = p。amp。 p = pnext。 //回收后的空間加入到空閑區(qū) ftable r = freetable。 ftable x。amp。 r = rnext。 xaddress
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1