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

正文內容

操作系統(tǒng)課程設計實驗報告-可變分區(qū)存儲管理和多級隊列調度算法模擬實現(xiàn)-文庫吧

2025-10-09 16:43 本頁面


【正文】 jobstatus = 0。 joblast = NULL。 jobnext = NULL。 if (jl == NULL) //將新作業(yè)加入作業(yè)鏈表中 { //若 jl 鏈為空,則 直接將 jl 指向該結點 jl = job。 } else { //若 jl 不為空,則將該結點插入 jl 鏈的前端 jobnext = jl。 jllast = job。 jl = job。 } doFitAlgorithm()。 //在進行內存分配之前需執(zhí)行適應算法 if (allocateMemory(job) == 0) //開始內存分配 { printf(\n 沒有足夠的內存空間分配給該作業(yè)?。?! \n)。 } else { printf(\n 該作業(yè) 成功得到內存分配?。。?\n)。 } } int allocateMemory(jNode * tmp) //內存分配 { int flag = 0。 //用于標記新作業(yè)是否能被分配, 0 為不能 for (fNode * i = fl。 i != NULL。 i = inext) { if (isize = tmpsize) //找到一個符合要求的分區(qū)裝入作業(yè) { tmpstatus = 1。 //更改作業(yè)狀態(tài)為已裝入內存 aNode * t = (aNode *)malloc(sizeof(aNode))。 //初始化新加入的已分配分區(qū)結點 tjid = tmpid。 tsize = tmpsize。 tstartAddress = istartAddress。 tlast = NULL。 tnext = NULL。 if (al == NULL) //將已分配的分區(qū)接入已分配分區(qū)鏈表中 { //若 al 鏈為空,則直接將 al 指向該結點 al = t。 } else { //若 al 不為空,則將該結點插入 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。 //用于標記該 ID 是否存在, 0 為不存在 int id = 0。 printf(\n 請輸入要完成的作業(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 為鏈表頭結點,則 jl 鏈表直接指向其下一個結點 } else if (jobnext == NULL) { joblastnext = NULL。 } else { joblastnext = jobnext。 jobnextlast = joblast。 } delete job。 deallocateMemory(id)。 //開始內存回收 printf(\n 該作業(yè)成功完成?。?! \n)。 } } void deallocateMemory(int jid) //內存回收 { 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) { //查找與其結束地址后相鄰的空閑分區(qū) ns = i。 } if ((istartAddress + isize) == startAddress) { //查找與其起始地址前相鄰的空閑分區(qū) ls = i。 } } if ((ls == NULL) amp。amp。 (ns == NULL)) { //沒有相鄰的空閑分區(qū)可以合并,則單獨作為一個分區(qū)插入空閑分區(qū)鏈表 if (fl == NULL) { fl = t。 } else { tnext = fl。 fllast = t。 fl = t。 } } if ((ls != NULL) amp。amp。 (ns == NULL)) { //有前一個分區(qū)可以與之合并 lssize = lssize + tsize。 } if ((ls == NULL) amp。amp。 (ns != NULL)) { //有后一個分區(qū)可以與之合并 nsstartAddress = tstartAddress。 nssize = nssize + tsize。 } if ((ls != NULL) amp。am
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1