版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、重 慶 大 學(xué)學(xué) 生 實(shí) 驗(yàn) 報(bào) 告實(shí)驗(yàn)課程名稱 操作系統(tǒng)原理 開課實(shí)驗(yàn)室 DS1501 學(xué) 院 軟件學(xué)院 年級(jí) 2013 專業(yè)班 軟件工程2 班 學(xué) 生 姓 名 胡其友 學(xué) 號(hào) 20131802 開 課 時(shí) 間 2015 至 2016 學(xué)年第 一 學(xué)期總 成 績(jī)教師簽名洪明堅(jiān)軟件學(xué)院制操作系統(tǒng)原理實(shí)驗(yàn)報(bào)告 開課實(shí)驗(yàn)室: 年 月 日學(xué)院軟件學(xué)院年級(jí)、專業(yè)、班2013級(jí)軟件工程2班姓名胡其友成績(jī)課程名稱操作系統(tǒng)原理實(shí)驗(yàn)項(xiàng)目名 稱指導(dǎo)教師洪明堅(jiān)教師評(píng)語(yǔ)教師簽名:洪明堅(jiān)年 月 日1實(shí)驗(yàn)?zāi)康模?隨機(jī)生成3組非負(fù)整數(shù)列表,然后創(chuàng)建3個(gè)線程,分別用3種不同的排序算法對(duì)列表進(jìn)行排序 如何生成隨機(jī)數(shù)? Ste
2、p1:void srand(uint32_t seed) seed是隨機(jī)數(shù)的種子,建議用實(shí)驗(yàn)(一)中實(shí)現(xiàn)的系統(tǒng)調(diào)用“time_t time(time_t *loc)” srand(time(NULL) Step2:多次調(diào)用“uint32_t random()”獲得隨機(jī)數(shù) 進(jìn)入圖形模式,沿垂直方向把屏幕分成3個(gè)區(qū)域,每個(gè)排序線程用一個(gè)區(qū)域,動(dòng)態(tài)顯示排序過程,運(yùn)行效果如這里所示。 如何進(jìn)入圖形模式? Step1:調(diào)用listGraphicsModes()輸出系統(tǒng)支持的圖形模式» 該函數(shù)必須在文本模式下運(yùn)行,才能看到結(jié)果 Step2:選擇一個(gè)模式,調(diào)用initGraphics(int mo
3、de)進(jìn)入圖形模式 如何獲取屏幕的分辨率? 水平:g_mib.XResolution 垂直:g_mib.YResolution 如何打點(diǎn)? void setPixel(int x, int y, COLORREF cr); » (x, y)是點(diǎn)坐標(biāo)» cr是顏色,用宏定義RGB(r,g,b)生成,其中r,g,b的取值范圍都是0-255 如何從cr中取出r,g,b?用getXValue(cr),其中X=R,G,B 如何退出圖形模式? int exitGraphics();2實(shí)驗(yàn)內(nèi)容: 實(shí)現(xiàn)靜態(tài)優(yōu)先級(jí)調(diào)度算法 修改task.c中的函數(shù)schedule,實(shí)現(xiàn)靜態(tài)優(yōu)先級(jí)調(diào)度 在“s
4、truct tcb”中增加線程的靜態(tài)優(yōu)先級(jí)屬性nice 一定要加在kstack字段之后! 在函數(shù)sys_task_create中初始化nice=0 nice是整數(shù),取值范圍-NZERO, NZERO-1,值越小優(yōu)先級(jí)越高 #define NZERO 20 函數(shù)schedule被調(diào)用時(shí),CPU的中斷已經(jīng)被關(guān)閉 線程0(task0,它的ID=0)是一個(gè)特殊的線程,僅當(dāng)沒有其他可運(yùn)行的線程時(shí),才能調(diào)度task0運(yùn)行! 實(shí)現(xiàn)靜態(tài)優(yōu)先級(jí)調(diào)度算法(續(xù)) 增加系統(tǒng)調(diào)用 int getpriority(int tid) 成功返回(nice+NZERO),失敗返回-1 int setpriority(int t
5、id, int prio) 把線程tid的nice設(shè)為(prio-NZERO) prio必須在0,2*NZERO-1 成功返回0,失敗返回-1 注意 如果tid=0,表示獲取/設(shè)置當(dāng)前線程的nice值,而不是task0! 在調(diào)用函數(shù)“struct tcb *get_task(int tid)”獲取struct tcb指針時(shí),一定要用save_flags_cli/restore_flags保護(hù)起來 uint32_t flags; struct tcb *tsk; save_flags_cli(flags); tsk = get_task(tid); restore_flags(flags);3實(shí)
6、驗(yàn)步驟: 實(shí)現(xiàn)動(dòng)態(tài)優(yōu)先級(jí)調(diào)度算法 在“struct tcb”中,再增加兩個(gè)屬性 estcpu:表示線程最近使用了多少CPU時(shí)間 在函數(shù)sys_task_create中初始化estcpu=0 每次定時(shí)器中斷時(shí):g_task_running->estcpu+,task0除外! 每秒鐘為所有線程(運(yùn)行、就緒和等待)更新一次 priority:表示線程的動(dòng)態(tài)優(yōu)先級(jí) priority = PRI_USER_MAX-(estcpu/4)-(nice*2) 取值范圍從0(PRI_USER_MIN)到127(PRI_USER_MAX) 值越大優(yōu)先級(jí)越高 每次調(diào)度前,先計(jì)算所有線程的priority,再調(diào)
7、度 實(shí)現(xiàn)動(dòng)態(tài)優(yōu)先級(jí)調(diào)度算法(續(xù)) 增加一個(gè)全局屬性 g_load_avg:表示系統(tǒng)的平均負(fù)荷 初值為零,每秒鐘更新一次 g_load_avg=(59/60) ×g_load_avg+(1/60) × nready» nready表示處于就緒狀態(tài)的線程個(gè)數(shù),task0除外! 屬性計(jì)算 g_load_avg 和線程的estcpu:在定時(shí)器的中斷處理函數(shù)(ISR)中計(jì)算 文件timer.c中的函數(shù)isr_timer 如何每隔一秒計(jì)算一次? (g_timer_ticks % HZ)» =0,表示1秒鐘已經(jīng)過去» 否則,還不到1秒鐘 函數(shù)isr_time
8、r被調(diào)用時(shí),CPU的中斷已經(jīng)被關(guān)閉 線程的priority:在函數(shù)schedule中,調(diào)度之前計(jì)算,然后基于priority進(jìn)行調(diào)度 效率問題 nice ,priority和nready都是整數(shù) 效率不是問題 g_load_avg 和estcpu是實(shí)數(shù) 浮點(diǎn)(float-point)表示:精度高,效率低! 定點(diǎn)(fixed-point)表示:精度低,效率高! 文件fixedptc.h中定義了定點(diǎn)數(shù)的類型fixedpt及其運(yùn)算 如何顯示fixedpt類型變量的值,比如g_load_avg?char num20; fixedpt_str(g_load_avg, num, -2); printk(&
9、quot;g_load_avg = %srn", num); 定點(diǎn)數(shù)的運(yùn)算 g_task_running->estcpu+g_task_running->estcpu = fixedpt_add(g_task_running->estcpu, FIXEDPT_ONE); g_load_avg = (59/60)*g_load_avg+(1/60)*nreadyfixedpt r59_60 = fixedpt_div(fixedpt_fromint(59), fixedpt_fromint(60);fixedpt r01_60 = fixedpt_div(FIXEDP
10、T_ONE, fixedpt_fromint(60);g_load_avg = fixedpt_add(fixedpt_mul(r59_60, g_load_avg), fixedpt_mul(r01_60, fixedpt_fromint(nready); priority = PRI_USER_MAX-(estcpu/4)-(nice*2)priority = PRI_USER_MAX - fixedpt_toint(fixedpt_div(estcpu, fixedpt_fromint(4) - p->nice*2; 定點(diǎn)數(shù)的運(yùn)算4實(shí)驗(yàn)報(bào)告:動(dòng)態(tài)優(yōu)先級(jí)調(diào)度算法while(selec
11、t!=NULL)select->priority=127 - fixedpt_toint(fixedpt_div(select->estcpu, fixedpt_fromint(4) - select->nice*2;if(select->tid != 0) && (select->state = TASK_STATE_READY) if(my_select->priority<select->priority) my_select=select; else if(my_select->tid=0) my_select=se
12、lect; select=select->next; if(my_select=g_task_running) if(my_select->state = TASK_STATE_READY) return; my_select = task0; /printk("0x%d -> 0x%drn", (g_task_running = NULL) ? -1 : g_task_running->tid, select->tid); g_resched = 0; switch_to(my_select);靜態(tài)優(yōu)先級(jí)調(diào)度算法void schedule()struct tcb *select = g_task_head;struct tcb *my_select=g_task_running;while(select!=NULL)if(select->tid != 0) && (select->state = TASK_STATE_READY)/if(my_select=NULL) my_select=select; continue;if(select->nice<=my_select->nice)my_select=select;i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度生態(tài)公園車位租賃與休閑娛樂服務(wù)協(xié)議4篇
- 2025年度藝術(shù)品代理合同終止及展覽策劃協(xié)議4篇
- 二零二五版跨行業(yè)企業(yè)戰(zhàn)略合作保密及數(shù)據(jù)共享協(xié)議3篇
- 離婚2025年度子女監(jiān)護(hù)權(quán)變更合同3篇
- 2025年農(nóng)業(yè)大棚租賃與農(nóng)產(chǎn)品質(zhì)量安全檢測(cè)服務(wù)協(xié)議4篇
- 2025年度園林景觀蟲害防治與植物保護(hù)合同4篇
- 家庭中醫(yī)急救技能普及工作匯報(bào)
- 現(xiàn)代家庭教育的新篇章-從理論到操作的全面解讀與實(shí)踐探索
- 探索創(chuàng)新型康復(fù)治療在醫(yī)療教育中的價(jià)值
- 科技小能手的培養(yǎng)計(jì)劃觀察與思考的融合
- 三級(jí)人工智能訓(xùn)練師(高級(jí))職業(yè)技能等級(jí)認(rèn)定考試題及答案
- 華為全屋智能試題
- 第三單元名著導(dǎo)讀《經(jīng)典常談》知識(shí)清單 統(tǒng)編版語(yǔ)文八年級(jí)下冊(cè)
- 第十七章-阿法芙·I·梅勒斯的轉(zhuǎn)變理論
- 焊接機(jī)器人在汽車制造中應(yīng)用案例分析報(bào)告
- 合成生物學(xué)在生物技術(shù)中的應(yīng)用
- 中醫(yī)門診病歷
- 廣西華銀鋁業(yè)財(cái)務(wù)分析報(bào)告
- 無違法犯罪記錄證明申請(qǐng)表(個(gè)人)
- 大學(xué)生勞動(dòng)教育PPT完整全套教學(xué)課件
- 繼電保護(hù)原理應(yīng)用及配置課件
評(píng)論
0/150
提交評(píng)論