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

正文內(nèi)容

操作系統(tǒng)課程設(shè)計實驗報告-可變分區(qū)存儲管理和多級隊列調(diào)度算法模擬實現(xiàn)-在線瀏覽

2025-01-15 16:43本頁面
  

【正文】 作業(yè)加入作業(yè)鏈表中 { //若 jl 鏈為空,則 直接將 jl 指向該結(jié)點 jl = job。 jllast = job。 } doFitAlgorithm()。 } else { printf(\n 該作業(yè) 成功得到內(nèi)存分配?。?! \n)。 //用于標(biāo)記新作業(yè)是否能被分配, 0 為不能 for (fNode * i = fl。 i = inext) { if (isize = tmpsize) //找到一個符合要求的分區(qū)裝入作業(yè) { tmpstatus = 1。 //初始化新加入的已分配分區(qū)結(jié)點 tjid = tmpid。 tstartAddress = istartAddress。 tnext = NULL。 } else { //若 al 不為空,則將該結(jié)點插入 al 鏈的前端 tnext = al。 al = t。 isize = isize tmpsize。 } else if (inext == NULL) { ilastnext = NULL。 inextlast = ilast。 } flag = 1。 } } return flag。 int flag = 0。 printf(\n 請輸入要完成的作業(yè)的 ID(整型): )。 for (jNode * i = jl。 i = inext) //找出 該 ID 的作業(yè) { if (iid == id) { job = i。 break。 } else { if (joblast == NULL) //將已完成的作業(yè)從作業(yè)鏈表中刪除 { jl = jobnext。 } else { joblastnext = jobnext。 } delete job。 //開始內(nèi)存回收 printf(\n 該作業(yè)成功完成?。?! \n)。 int startAddress。 for (aNode * i = al。 i = inext) //找到該作業(yè)所占的已分配分區(qū) { if (ijid == jid) { a = i。 } } startAddress = astartAddress。 if (alast == NULL) { al = anext。 } else { alastnext = anext。 } delete a。 //傳入待合并分區(qū)的起始地址 } void mergeMemory(int startAddress, int endAddress) //合并分區(qū) { fNode * ls = NULL。 fNode * t = (fNode *)malloc(sizeof(fNode))。 tsize = endAddress startAddress + 1。 tnext = NULL。 i != NULL。 } if ((istartAddress + isize) == startAddress) { //查找與其起始地址前相鄰的空閑分區(qū) ls = i。amp。 } else { tnext = fl。 fl = t。amp。 } if ((ls == NULL) amp。 (ns != NULL)) { //有后一個分區(qū)可以與之合并 nsstartAddress = tstartAddress。 } if ((ls != NULL) amp。 (ns != NULL)) { //前后兩個分區(qū)都與之合并 if (nslast == NULL) { //若 ns 為頭結(jié)點,則 fl 鏈表直接指向其下一個結(jié)點 fl = nsnext。 } else { nslastnext = nsnext。 } lssize = lssize + tsize + nssize。 } } void defragment() //碎片整理,進行碎片拼接 { int sum = 0。 i next != NULL。 //更改已分配分區(qū)的起始地址,將這些分區(qū)的地址移到內(nèi)存的低址部分 sum = sum + isize。 //將剩余的空閑分區(qū)合并 為一個分區(qū) flstartAddress = sum。 } printf(\n 碎片拼接完成?。?! \n)。 i != NULL。 //在進行內(nèi)存分配之前需執(zhí)行適應(yīng)算法 if (allocateMemory(i) == 0) //開始內(nèi)存分配 { printf(\n 沒有足夠的內(nèi)存空間分配給 %d 號作業(yè)?。?! \n, iid)。 printf(\n %d 號作業(yè)成功得到內(nèi)存分配?。?! \n, iid)。 printf( 當(dāng) 前 空 閑 分 區(qū) 鏈 信 息\n)。 for (fNode * i = fl。 i = inext) { printf( %10d, istartAddress)。 printf(|%10d, isize)。 } printf(\n)。 } void showAList() //顯示當(dāng)前已分配分區(qū)鏈的信息 { printf(\n)。 printf( 分區(qū)起始地址 分區(qū)大小 分區(qū)作業(yè)號 \n)。 i != NULL。 printf( )。 printf( )。 printf(\n)。 printf(\n)。 printf( 當(dāng)前作業(yè)鏈信息\n)。 for (jNode * i = jl。 i = inext) { printf( %10d, iid)。 printf(|%10d, inum)。 printf(|%10d, isize)。 if (istatus == 0) { printf(| 未裝入內(nèi)存 )。 } printf(\n)。 printf(\n)。 printf(\n)。 printf( 1初始化(設(shè)置物理內(nèi)存中用戶區(qū)的大小,選取適應(yīng)算法) \n)。 printf( 3作 業(yè)完成(內(nèi)存回收) \n)。 printf( 5顯示當(dāng)前已分配分區(qū)鏈的信息 \n)。 printf( 7碎片整理(碎片拼接) \n)。 printf( 9顯示所有鏈的信息 \n)。 printf( 0退出 \n)。 int main(void) { mainpage()。 } 六 丶 實驗截圖: 進行初始化 : 選 擇 最 佳 適 應(yīng) 算 法 : 添加 3 個 作 業(yè) : 顯示空閑分區(qū): 顯示當(dāng)前已分配分區(qū)鏈信息: 顯 示 當(dāng) 前 作 業(yè) 鏈 信 息 : 完成作業(yè) 1 和 2: 顯示當(dāng) 前 空 閑 分 區(qū) : 進行拼接后顯示分區(qū): 操作系統(tǒng) 課程設(shè)計報告 1 七 丶實驗小結(jié) 通過本次課程設(shè)計,自己的編程能力有所提高,對操作系統(tǒng)內(nèi)存的分配,存儲空間的回收,以及碎片的拼接都有了全新的認(rèn)識。通過驗證,可以說是做出結(jié)果。也許是程序的某個邊界的設(shè)計不合理。通過試驗 ,對于 C 的語句有了比較多的了解,我們原來學(xué)的是 C++,但是發(fā)現(xiàn) C 的 I/O 比于 C++的似乎更為簡便一些。很遺憾的是因為時間問題,沒有把這個模擬程序?qū)懗蓜赢嬓问剑€可以加幾句代 碼后實現(xiàn)動態(tài)的增加作業(yè)。 希望 在以后的學(xué)習(xí)中可以學(xué)到更多 知識 。 ? 調(diào)度算法中采用至少 4 級隊列,每級隊列的時間片大小預(yù)先指定。又因為進程的組成只有 PCB,沒有程序和數(shù)據(jù),因而進程只有運行和就緒兩種狀態(tài),沒有等待狀態(tài)。 ? 由于處理機是計算機系統(tǒng)中最寶貴和稀有的資源,因而處理機調(diào)度是操作系統(tǒng)進行資源管理的一個重要功能。特別是進程調(diào)度程序,由于其運行頻率高,更加要求調(diào)度算法簡單,高效,系統(tǒng)開銷小,進程切換快,可以說,調(diào)度算法的好壞直接影響整個計算機系統(tǒng)的性能。對
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1