




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于RISC-V代理內(nèi)核的操作系統(tǒng)課程實(shí)驗(yàn)與課程設(shè)計(jì)第五章.實(shí)驗(yàn)3:進(jìn)程管理目錄實(shí)驗(yàn)3的基礎(chǔ)知識(shí)多任務(wù)環(huán)境下進(jìn)程的封裝進(jìn)程的換入與換出就緒進(jìn)程的管理與調(diào)度實(shí)驗(yàn)內(nèi)容lab3_1進(jìn)程創(chuàng)建(fork)lab3_2進(jìn)程yieldlab3_3循環(huán)輪轉(zhuǎn)調(diào)度實(shí)驗(yàn)3的基礎(chǔ)知識(shí)多任務(wù)環(huán)境下進(jìn)程的封裝實(shí)驗(yàn)三的PKE操作系統(tǒng)將需要支持多個(gè)進(jìn)程的執(zhí)行。操作系統(tǒng)定義了進(jìn)程池(processprocs[NPROC];)。并對(duì)進(jìn)程的結(jié)構(gòu)進(jìn)行了擴(kuò)充,加入以下成員:mapped_info;//pointstoapagethatcontainsmapped_regionstotal_mapped_region;
//nextfreemappedregioninmapped_infouint64pid;//processid,intstatus;//processstatus,structprocess*parent;//parentprocess,structprocess*queue_next;//nextqueueelement;多任務(wù)環(huán)境下進(jìn)程的封裝進(jìn)程可能擁有的段分為以下幾個(gè)類型:enumsegment_type{CODE_SEGMENT,//ELFsegmentDATA_SEGMENT,//ELFsegmentSTACK_SEGMENT,//runtimesegmentCONTEXT_SEGMENT,//trapframesegmentSYSTEM_SEGMENT,//systemsegment};進(jìn)程具有以下幾種狀態(tài):enumproc_status{FREE,//unusedstateREADY,//readystateRUNNING,//currentlyrunningBLOCKED,//waitingforsomethingZOMBIE,//terminatedbutnotreclaimedyet};進(jìn)程的啟動(dòng)進(jìn)程啟動(dòng)的步驟:一、調(diào)用alloc_process()函數(shù):找到一個(gè)空的進(jìn)程結(jié)構(gòu)體為新創(chuàng)建的進(jìn)程建立了KERN_BASE以上邏輯地址的映射將映射信息保存到進(jìn)程結(jié)構(gòu)中二、調(diào)用load_bincode_from_host_elf()函數(shù)載入給定應(yīng)用對(duì)應(yīng)的ELF文件的各個(gè)段三、調(diào)用的elf_load()函數(shù)在載入段后,將對(duì)被載入的段進(jìn)行判斷,以記錄它們的虛地址映射,此時(shí)將形成用戶進(jìn)程的虛地址空間結(jié)構(gòu)。四、通過(guò)switch_to()函數(shù)將所構(gòu)造的進(jìn)程投入執(zhí)行;進(jìn)程的終止進(jìn)程的終止通過(guò)exit系統(tǒng)調(diào)用實(shí)現(xiàn):一、調(diào)用free_process(current):將進(jìn)程設(shè)為ZOMBIE狀態(tài),而不會(huì)將進(jìn)程所占用的資源全部釋放。該函數(shù)被調(diào)用時(shí)操作系統(tǒng)是在S模式下運(yùn)行,而按照PKE的設(shè)計(jì)思想,S態(tài)的運(yùn)行將使用當(dāng)前進(jìn)程的用戶系統(tǒng)棧。此時(shí),如果將當(dāng)前進(jìn)程的內(nèi)存空間進(jìn)行釋放,將導(dǎo)致操作系統(tǒng)本身的崩潰。二、調(diào)用schedule()函數(shù):選擇系統(tǒng)中可能存在的其他處于就緒狀態(tài)的進(jìn)程投入運(yùn)行。就緒進(jìn)程的管理與調(diào)度PKE的操作系統(tǒng)設(shè)計(jì)了一個(gè)非常簡(jiǎn)單的就緒隊(duì)列管理。將一個(gè)進(jìn)程加入就緒隊(duì)列,可以調(diào)用insert_to_ready_queue()函數(shù):若就緒隊(duì)列為空,將本進(jìn)程作為就緒隊(duì)列頭。若就緒隊(duì)列非空,則將本進(jìn)程加入就緒隊(duì)尾。PKE內(nèi)核通過(guò)調(diào)用schedule()函數(shù)來(lái)完成進(jìn)程的選擇和換入:若就緒隊(duì)列空,檢查是否存在未結(jié)束的進(jìn)程。如果有,等待期執(zhí)行結(jié)束;如果無(wú),則啟動(dòng)關(guān)機(jī)程序。若就緒隊(duì)列非空,將就緒隊(duì)列隊(duì)首的進(jìn)程換入執(zhí)行。目錄實(shí)驗(yàn)3的基礎(chǔ)知識(shí)多任務(wù)環(huán)境下進(jìn)程的封裝進(jìn)程的換入與換出就緒進(jìn)程的管理與調(diào)度實(shí)驗(yàn)內(nèi)容lab3_1進(jìn)程創(chuàng)建(fork)lab3_2進(jìn)程yieldlab3_3循環(huán)輪轉(zhuǎn)調(diào)度lab3_1進(jìn)程創(chuàng)建(fork)給定應(yīng)用預(yù)期輸出lab3_1進(jìn)程創(chuàng)建(fork)實(shí)驗(yàn)內(nèi)容:主進(jìn)程調(diào)用fork()函數(shù)試圖創(chuàng)建一個(gè)子進(jìn)程,但是應(yīng)用程序的fork動(dòng)作并未將子進(jìn)程給創(chuàng)建出來(lái)并投入運(yùn)行。修改kernel/process.c文件中的do_fork()函數(shù)。對(duì)于父進(jìn)程的代碼段,通過(guò)映射的辦法,將子進(jìn)程中對(duì)應(yīng)的邏輯地址空間映射到其父進(jìn)程中裝載代碼段的物理頁(yè)面。lab3_2進(jìn)程yield給定應(yīng)用預(yù)期輸出lab3_2進(jìn)程yield實(shí)驗(yàn)內(nèi)容:yield()函數(shù)功能未完善導(dǎo)致使得進(jìn)程無(wú)法讓出執(zhí)行權(quán)。完善yield()函數(shù)實(shí)現(xiàn)進(jìn)程執(zhí)行過(guò)程中的主動(dòng)釋放CPU的動(dòng)作:將當(dāng)前進(jìn)程置為就緒狀態(tài)(READY);將當(dāng)前進(jìn)程加入到就緒隊(duì)列的隊(duì)尾;轉(zhuǎn)進(jìn)程調(diào)度。lab3_3循環(huán)輪轉(zhuǎn)調(diào)度給定應(yīng)用預(yù)期輸出lab3_3循環(huán)輪轉(zhuǎn)調(diào)度實(shí)驗(yàn)內(nèi)容:兩個(gè)進(jìn)程在執(zhí)行各自循環(huán)體時(shí),都沒(méi)有主動(dòng)釋放CPU的動(dòng)作。這樣的設(shè)計(jì)會(huì)導(dǎo)致某個(gè)進(jìn)程長(zhǎng)期占據(jù)CPU,而另一個(gè)進(jìn)程無(wú)法得到執(zhí)行。通過(guò)利用時(shí)鐘中斷來(lái)實(shí)現(xiàn)進(jìn)程的循環(huán)輪轉(zhuǎn)調(diào)度,避免由于一個(gè)進(jìn)程的執(zhí)行體過(guò)長(zhǎng),導(dǎo)致系統(tǒng)中其他進(jìn)程無(wú)法得到調(diào)度的問(wèn)題!lab3_challenge1進(jìn)程等待和數(shù)據(jù)段復(fù)制給定應(yīng)用預(yù)期輸出lab3_challenge1進(jìn)程等待和數(shù)據(jù)段復(fù)制實(shí)驗(yàn)內(nèi)容:通過(guò)修改PKE內(nèi)核和系統(tǒng)調(diào)用,為用戶程序提供wait函數(shù)的功能,wait函數(shù)接受一個(gè)參數(shù)pid:當(dāng)pid為-1時(shí),父進(jìn)程等待任意一個(gè)子進(jìn)程退出即返回子進(jìn)程的pid;當(dāng)pid大于0時(shí),父進(jìn)程等待進(jìn)程號(hào)為pid的子進(jìn)程退出即返回子進(jìn)程的pid;如果pid不合法或pid大于0且pid對(duì)應(yīng)的進(jìn)程不是當(dāng)前進(jìn)程的子進(jìn)程,返回-1。補(bǔ)充do_fork函數(shù),實(shí)驗(yàn)3_1實(shí)現(xiàn)了代碼段的復(fù)制,你需要繼續(xù)實(shí)現(xiàn)數(shù)據(jù)段的復(fù)制并保證fork后父子進(jìn)程的數(shù)據(jù)段相互獨(dú)立。lab3_challenge2實(shí)現(xiàn)信號(hào)量給定應(yīng)用預(yù)期輸出……lab3_challenge2實(shí)現(xiàn)信號(hào)量實(shí)驗(yàn)內(nèi)容:以上程序通過(guò)信號(hào)量的增減,控制主進(jìn)程和兩個(gè)子進(jìn)程的輸出按主進(jìn)程,第一個(gè)子進(jìn)程,第二個(gè)子進(jìn)程,主進(jìn)程,第一個(gè)子進(jìn)程,第二個(gè)子進(jìn)程……這樣的順序輪流輸出。為了實(shí)現(xiàn)進(jìn)程同步功能,你需要實(shí)現(xiàn)信號(hào)量的分配、釋放和PV操作。lab3_challenge3寫時(shí)復(fù)制(CopyOnWrite)給定應(yīng)用預(yù)期輸出……lab3_challenge3寫時(shí)復(fù)制(CopyOnWrite)實(shí)驗(yàn)內(nèi)容:以上程序執(zhí)行如下操作:在父進(jìn)程的堆上申請(qǐng)一片區(qū)域,并輸出其
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 北斗監(jiān)控考試題及答案
- 保險(xiǎn)高考試題及答案
- 老年教育個(gè)性化課程設(shè)置與多元教學(xué)模式創(chuàng)新研究報(bào)告
- 安全實(shí)踐操作試題及答案
- 2025年鄉(xiāng)村振興戰(zhàn)略下職業(yè)技能培訓(xùn)的多元化發(fā)展報(bào)告
- 中國(guó)歷史災(zāi)難課件
- 國(guó)企法律思維培訓(xùn)課件
- 周末表?yè)P(yáng)小學(xué)生的課件
- 寵物專業(yè)入學(xué)教育
- 中國(guó)剪紙分類
- 北京市通州區(qū)2024-2025學(xué)年四年級(jí)語(yǔ)文下學(xué)期期末試卷新人教版
- 廣東省珠海市金灣區(qū)2023-2024學(xué)年八年級(jí)下學(xué)期7月期末歷史試題
- 社會(huì)語(yǔ)言學(xué)視角下網(wǎng)絡(luò)流行用語(yǔ)研究
- 數(shù)據(jù)庫(kù)程序設(shè)計(jì)智慧樹(shù)知到期末考試答案章節(jié)答案2024年外交學(xué)院
- 中職數(shù)學(xué)單招一輪總復(fù)習(xí)《集合》復(fù)習(xí)課件
- 設(shè)計(jì)投標(biāo)服務(wù)方案
- 外來(lái)醫(yī)療器械清洗消毒
- 內(nèi)科學(xué)(廣東藥科大學(xué))智慧樹(shù)知到期末考試答案2024年
- 再回首混聲合唱譜
- 2023年11月南昌高新技術(shù)產(chǎn)業(yè)開(kāi)發(fā)區(qū)人民檢察院招考4名聘用制檢察輔助人員筆試近6年高頻考題難、易錯(cuò)點(diǎn)薈萃答案帶詳解附后
- 珍愛(ài)生命遠(yuǎn)離溺水風(fēng)險(xiǎn)
評(píng)論
0/150
提交評(píng)論