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

正文內(nèi)容

操作系統(tǒng)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告-可變分區(qū)存儲(chǔ)管理和多級(jí)隊(duì)列調(diào)度算法模擬實(shí)現(xiàn)-文庫吧

2025-10-09 16:43 本頁面


【正文】 jobstatus = 0。 joblast = NULL。 jobnext = NULL。 if (jl == NULL) //將新作業(yè)加入作業(yè)鏈表中 { //若 jl 鏈為空,則 直接將 jl 指向該結(jié)點(diǎn) jl = job。 } else { //若 jl 不為空,則將該結(jié)點(diǎn)插入 jl 鏈的前端 jobnext = jl。 jllast = job。 jl = job。 } doFitAlgorithm()。 //在進(jìn)行內(nèi)存分配之前需執(zhí)行適應(yīng)算法 if (allocateMemory(job) == 0) //開始內(nèi)存分配 { printf(\n 沒有足夠的內(nèi)存空間分配給該作業(yè)?。?! \n)。 } else { printf(\n 該作業(yè) 成功得到內(nèi)存分配?。?! \n)。 } } int allocateMemory(jNode * tmp) //內(nèi)存分配 { int flag = 0。 //用于標(biāo)記新作業(yè)是否能被分配, 0 為不能 for (fNode * i = fl。 i != NULL。 i = inext) { if (isize = tmpsize) //找到一個(gè)符合要求的分區(qū)裝入作業(yè) { tmpstatus = 1。 //更改作業(yè)狀態(tài)為已裝入內(nèi)存 aNode * t = (aNode *)malloc(sizeof(aNode))。 //初始化新加入的已分配分區(qū)結(jié)點(diǎn) tjid = tmpid。 tsize = tmpsize。 tstartAddress = istartAddress。 tlast = NULL。 tnext = NULL。 if (al == NULL) //將已分配的分區(qū)接入已分配分區(qū)鏈表中 { //若 al 鏈為空,則直接將 al 指向該結(jié)點(diǎn) al = t。 } else { //若 al 不為空,則將該結(jié)點(diǎn)插入 al 鏈的前端 tnext = al。 allast = t。 al = t。 } if (isize tmpsize) { //若該分區(qū)大小大于作業(yè)大小,則將剩余大小重新賦給該分區(qū) istartAddress = istartAddress + tmpsize。 isize = isize tmpsize。 } else { //若該分區(qū)大小恰 好等于作業(yè)大小,則從空閑分區(qū)鏈表中刪除該分區(qū) if (ilast == NULL) { fl = inext。 } else if (inext == NULL) { ilastnext = NULL。 } else { ilastnext = inext。 inextlast = ilast。 } delete i。 } flag = 1。 break。 } } return flag。 } void finishJob() //完成作業(yè) { jNode * job = (jNode *)malloc(sizeof(jNode))。 int flag = 0。 //用于標(biāo)記該 ID 是否存在, 0 為不存在 int id = 0。 printf(\n 請(qǐng)輸入要完成的作業(yè)的 ID(整型): )。 cin id。 for (jNode * i = jl。 i != NULL。 i = inext) //找出 該 ID 的作業(yè) { if (iid == id) { job = i。 flag = 1。 break。 } } if (flag == 0) { printf(\n 該 ID 不存在?。?! \n)。 } else { if (joblast == NULL) //將已完成的作業(yè)從作業(yè)鏈表中刪除 { jl = jobnext。 //若該 job 為鏈表頭結(jié)點(diǎn),則 jl 鏈表直接指向其下一個(gè)結(jié)點(diǎn) } else if (jobnext == NULL) { joblastnext = NULL。 } else { joblastnext = jobnext。 jobnextlast = joblast。 } delete job。 deallocateMemory(id)。 //開始內(nèi)存回收 printf(\n 該作業(yè)成功完成!?。?\n)。 } } void deallocateMemory(int jid) //內(nèi)存回收 { aNode * a = (aNode *)malloc(sizeof(aNode))。 int startAddress。 //待合并分區(qū)的起始地址 int endAddress。 for (aNode * i = al。 i != NULL。 i = inext) //找到該作業(yè)所占的已分配分區(qū) { if (ijid == jid) { a = i。 break。 } } startAddress = astartAddress。 endAddress = startAddress + asize 1。 if (alast == NULL) { al = anext。 } else if (anext == NULL) { alastnext = NULL。 } else { alastnext = anext。 anextlast = alast。 } delete a。 mergeMemory(startAddress, endAddress)。 //傳入待合并分區(qū)的起始地址 } void mergeMemory(int startAddress, int endAddress) //合并分區(qū) { fNode * ls = NULL。 fNode * ns = NULL。 fNode * t = (fNode *)malloc(sizeof(fNode))。 tstartAddress = startAddress。 tsize = endAddress startAddress + 1。 tlast = NULL。 tnext = NULL。 for (fNode * i = fl。 i != NULL。 i = inext) { if ((endAddress + 1) == istartAddress) { //查找與其結(jié)束地址后相鄰的空閑分區(qū) ns = i。 } if ((istartAddress + isize) == startAddress) { //查找與其起始地址前相鄰的空閑分區(qū) ls = i。 } } if ((ls == NULL) amp。amp。 (ns == NULL)) { //沒有相鄰的空閑分區(qū)可以合并,則單獨(dú)作為一個(gè)分區(qū)插入空閑分區(qū)鏈表 if (fl == NULL) { fl = t。 } else { tnext = fl。 fllast = t。 fl = t。 } } if ((ls != NULL) amp。amp。 (ns == NULL)) { //有前一個(gè)分區(qū)可以與之合并 lssize = lssize + tsize。 } if ((ls == NULL) amp。amp。 (ns != NULL)) { //有后一個(gè)分區(qū)可以與之合并 nsstartAddress = tstartAddress。 nssize = nssize + tsize。 } if ((ls != NULL) amp。am
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1