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

正文內(nèi)容

操作系統(tǒng)課程設(shè)計報告_nachos_experiments_report(編輯修改稿)

2025-07-07 23:06 本頁面
 

【文章內(nèi)容簡介】 re two string kernelmachineReadRegister(4) kernelmachineReadRegister(5) kernelmachineReadRegister(6) \n)。 int addressFour。 addressFour = kernelmachineReadRegister(4)。 int addressFive。 addressFive = kernelmachineReadRegister(5)。 char str1buffer[60]。 char str2buffer[60]。 int d,e。 d= 0。 e=0。do{ kernelmachineReadMem(addressFour++,1,(int*)amp。str1buffer[d++])。 }while(d60)。 addressFour。 do{ kernelmachineReadMem(addressFive++,1,(int*)amp。str2buffer[e++])。 }while(e60)。 addressFive。int n3。 n=SysStrncmp(str1buffer,str2buffer,kernelmachineReadRegister(6))。kernelmachineWriteRegister(2,n3)。 /* Modify return point */ {/* set previous programm counter (debugging only)*/ kernelmachineWriteRegister(PrevPCReg, kernelmachineReadRegister(PCReg))。/* set programm counter to next instruction (all Instructions are 4 byte wide)*/ kernelmachineWriteRegister(PCReg, kernelmachineReadRegister(PCReg) + 4)。/* set next programm counter for brach execution */ kernelmachineWriteRegister(NextPCReg, kernelmachineReadRegister(PCReg)+4)。 }return。 ASSERTNOTREACHED()。 break。4. Write( My shell ver \n, 21, output)。if(Strncmp(buffer,exit,4)==0) { Halt()。 }5. .globl Strncmp .ent StrncmpStrncmp: addiu $2,$0,SC_Strncmp syscall j $31 .end Strncmp .globl Exit .ent Exit實驗結(jié)果:執(zhí)行命令 ./nachos –x ../test/參考文獻(xiàn):3.《 操作系統(tǒng)原理課程設(shè)計實驗手冊》4.《操作系統(tǒng)設(shè)計()》5.Baidu、Google 實驗項目二項目名稱:Nachos Thread實驗?zāi)康模簄 最多能夠同時存在128個用戶線程 n 改變?yōu)樽裱皟?yōu)先級調(diào)度”的搶占式調(diào)度 參與人員及分工: 韓 茂:代碼編寫,查資料 周博鑫:平臺搭建,測試 賴 鋒:代碼編寫,查資料 呂少飛:整合代碼,編寫報告實驗背景知識: 線程基礎(chǔ)知識:線程基本概念:是進(jìn)程中的一個實體,是被系統(tǒng)獨立調(diào)度和分派的基本單位,線程自己不擁有系統(tǒng)資源,只擁有一點在運行中必不可少的資源,但它可與同屬一個進(jìn)程的其它線程共享進(jìn)程所擁有的全部資源。一個線程可以創(chuàng)建和撤消另一個線程,同一進(jìn)程中的多個線程之間可以并發(fā)執(zhí)行。由于線程之間的相互制約,致使線程在運行中呈現(xiàn)出間斷性。線程狀態(tài):就緒、阻塞和運行三種基本狀態(tài)。 ,稱為多線程. 線程和進(jìn)程的區(qū)別在于,子進(jìn)程和父進(jìn)程有不同的代碼和數(shù)據(jù)空間,而多個線程則共享數(shù)據(jù)空間,發(fā)揮利用,根據(jù)具體情況而定. 線程的運行中需要使用計算機的內(nèi)存資源和CPU線程的周期 新建 就緒 運行 阻塞 死亡線程調(diào)度與優(yōu)先級 有線程進(jìn)入了就緒狀態(tài),需要有線程調(diào)度程序來決定何時執(zhí)行,根據(jù)優(yōu)先級來調(diào)度.線程組 每個線程都是一個線程組的一個成員,線程組把多個線程集成一個對象,也可以放在缺省的線程組中,不能被移出這個組.進(jìn)程和線程的關(guān)系在引入線程機制后,進(jìn)程不再是單一的動態(tài)實體,而是由兩部分組成:?? 各線程活動的環(huán)境,包括:統(tǒng)一的地址控件、全局變量、打開文件和計時器等。?? 若干個線程,它們是進(jìn)程中的活動部分,也是處理機的調(diào)度單位,而進(jìn)程不再是處理機的最小調(diào)度單位。一個進(jìn)程中的所有線程在同一地址空間中活動,共享該地址空間中的全局變量,共享打開文件和計時器等。它們總是相互協(xié)作,各自承擔(dān)一個作業(yè)中的某個部分。與傳統(tǒng)的進(jìn)程相似,線程具有狀態(tài)的變化。通常,這些狀態(tài)是:運行、阻塞、就緒或終止。 與進(jìn)程和線程有關(guān)的主要信息表Nachos 廣泛采用線程的概念,是多線程操作系統(tǒng)。線程是Nachos 處理機調(diào)度的單位,在Nachos 中線程分成兩類,一類是系統(tǒng)線程。所謂系統(tǒng)線程是只運行核心代碼的線程,它運行在核心態(tài)下,并且占用宿主機的資源,系統(tǒng)線程共享Nachos 操作系統(tǒng)本身的正文段和數(shù)據(jù)段;一個系統(tǒng)線程完成一件獨立的任務(wù),比如在Nachos 網(wǎng)絡(luò)部分,有一個獨立的線程一直監(jiān)測有無發(fā)給自己的數(shù)據(jù)報。Nachos 的另一類線程同Nachos 中的用戶進(jìn)程有關(guān)。Nachos 中用戶進(jìn)程由兩部分組成,核心代碼部分和用戶程序部分。用戶進(jìn)程的進(jìn)程控制塊是線程控制塊基礎(chǔ)上的擴充。每當(dāng)系統(tǒng)接收到生成用戶進(jìn)程的請求時,首先生成一個系統(tǒng)線程,進(jìn)程控制塊中有保存線程運行現(xiàn)場的空間,保證線程切換時現(xiàn)場不會丟失。該線程的作用是給用戶程序分配虛擬機內(nèi)存空間,并把用戶程序的代碼段和數(shù)據(jù)段裝入用戶地址空間,然后調(diào)用解釋器解釋執(zhí)行用戶程序;由于Nachos 模擬的是一個單機環(huán)境,多個用戶進(jìn)程會競爭使用Nachos 唯一的處理機資源,所以在Nachos 用戶進(jìn)程的進(jìn)程控制塊中增加有虛擬機運行現(xiàn)場空間以及進(jìn)程的地址空間指針等內(nèi)容,保證用戶進(jìn)程在虛擬機上的正常運行。在下圖中可以看出,系統(tǒng)線程競爭使用宿主機的CPU 資源,而用戶進(jìn)程的用戶程序部分競爭使用的是虛擬機的CPU 和寄存器。所以用戶進(jìn)程在被切換下處理機時,需要保存其系統(tǒng)線程部分的現(xiàn)場,同時還需要保存虛擬機部分的現(xiàn)場。實驗環(huán)境:Redhat Linux 實驗內(nèi)容:本項目在實踐的過程中需要注意以下要點:Nachos中線程管理特點Nachos中線程管理特點1 線程個數(shù)沒有限制 一般的操作系統(tǒng),進(jìn)程的數(shù)目是有限的,但是Nachos 中線程數(shù)目是無限的(沒有限制)(當(dāng)然,用戶進(jìn)程的數(shù)目應(yīng)該也是有限的。當(dāng)虛擬機內(nèi)存以及虛擬內(nèi)存都耗盡時,就不能產(chǎn)生新的用戶線程)。因為線程的控制結(jié)構(gòu)和系統(tǒng)線程的運行是占用宿主機的。能夠開多少線程完全由宿主機條件限制,理論上是無限的。Nachos中線程管理特點2 線程調(diào)度簡單 啟動了時鐘中斷的情況下,當(dāng)時鐘中斷到來時。如果就緒線程隊列中有就緒線程,就必須進(jìn)行線程切換。沒有啟動時鐘中斷的情況下,Nachos 使用非搶占式調(diào)度。概念:非搶占式調(diào)度:進(jìn)程在運行過程中不會切換到其它進(jìn)程運行,除非其主動放棄處理機或者運行結(jié)束 搶占式調(diào)度:為了確保沒有一個進(jìn)程單獨運行的時間太長,幾乎所有的計算機系統(tǒng)都內(nèi)置了時鐘,周期性地進(jìn)行時鐘中斷,在每一次時鐘中斷時,由進(jìn)程調(diào)度程序負(fù)責(zé)判斷是否有就緒進(jìn)程比正在運行的進(jìn)程更加適合占用CPU。缺點:由于進(jìn)程的運行有不可預(yù)見性,有可能一個進(jìn)程會占用處理機達(dá)幾個小時,甚至一個編寫錯誤的進(jìn)程會一直占用處理機不放,以致其他進(jìn)程會被餓死。 Nachos中線程管理特點3 線程數(shù)據(jù)結(jié)構(gòu)簡單 Nachos中線程數(shù)據(jù)結(jié)構(gòu)定義簡單,沒用戶ID,線程ID,無法根據(jù)線程ID實現(xiàn)通信,同步互斥,也沒有全局性的線程管理機制。 升級后,Nachos線程管理特點 1. Nachos中有了對線程數(shù)量的限制,最多同時存在128個用戶線程。 2. Nachos中線程將以“優(yōu)先級調(diào)度”的搶占式調(diào)度方式調(diào)度,即是,在中斷發(fā)生時,查看就緒隊列中等待的線程是否存在優(yōu)先級較當(dāng)前線程高的線程,有的話,就使其搶占CPU,不存在的話就并不切換進(jìn)程 3. 通過真假一個“公共信箱”,總大小為4K,每封信大小為128byte,實現(xiàn)了兩個進(jìn)程的通信 實現(xiàn)方案由于限制了最多線程數(shù),所以在Thread::Thread(構(gòu)造函數(shù))上加了信號量的判斷處理:當(dāng)threadnumEmpty()有效時,即還有空間可以創(chuàng)建新線程時才繼續(xù)進(jìn)行線程的構(gòu)造,不然進(jìn)入睡眠;當(dāng)構(gòu)造操作結(jié)束時,將threadnumFull()信號量激活,即內(nèi)存中的線程數(shù)目加一。 當(dāng)進(jìn)行線程析構(gòu)操作時,先判斷threadnumFull(其實默認(rèn)的認(rèn)為此時該變量應(yīng)該有效),結(jié)束之后對threadnumEmpty信號量進(jìn)行更新,即可創(chuàng)建空間數(shù)目加一。 threadnumFull和threadnumEmpty變量的初始化是在系統(tǒng)初始化時進(jìn)行的,此時threadnumFull的初始值為0;threadnumEmpty的初始值為MAX_THREAD_COUNT的值()。 threadnumMutex信號量()是用于記錄系統(tǒng)的整個線程計數(shù)變量threadCount()的控制方面,即每當(dāng)進(jìn)行新線程的創(chuàng)建時,在Thread::thread構(gòu)造函數(shù)中用該信號量進(jìn)行限制,而且threadCount每次加一之后直接成為當(dāng)前創(chuàng)建中的線程的線程ID。 優(yōu)先級調(diào)度”的搶占式調(diào)度方式調(diào)度采用了時間片輪轉(zhuǎn)法,并采用了動態(tài)優(yōu)先權(quán)調(diào)用。 權(quán)限值的設(shè)置方式為該值最小的線程的優(yōu)先級最高(因為List機制上可以實現(xiàn)取出參數(shù)值最小的單元)。 當(dāng)線程創(chuàng)建時初始權(quán)限值設(shè)置成100(CreatePriority宏,),進(jìn)入睡眠之后喚醒時的權(quán)限值為60(BlockedPriority宏,)。 線程切換的最小時間間隔設(shè)置于MinSwitchPace宏(),使得防止頻繁的線程切換。 每當(dāng)時鐘中斷發(fā)生時,將當(dāng)前的優(yōu)先級值進(jìn)行調(diào)整,公式為 priority = priority +(當(dāng)前時間lastSwitchTick)/PriorityRate (注:PriorityRate宏值設(shè)為20)。 再進(jìn)行就緒隊列中線程的權(quán)限值都增加AdaptPace(設(shè)為5)。 取出下一個線程的成員函數(shù)FindNextToRun中的思路為: 當(dāng)該操作是發(fā)生于上一個線程結(jié)束后的話,簡單的取出就緒隊列中的第一個元素;不然,進(jìn)行與當(dāng)前進(jìn)程進(jìn)行優(yōu)先級比較,當(dāng)取出來的線程優(yōu)先級高時才進(jìn)行切換。 ,進(jìn)程互相訪問系統(tǒng)中開辟長度為4k的空間用作郵箱,每個郵箱的狀態(tài)由Mail類來負(fù)責(zé),讀寫操作以及其之后其處理由TransportMail和Accept函數(shù)來負(fù)責(zé)。 Thread中設(shè)置了兩個成員函數(shù)SendMail和ReceiveMail,以及一個所收到的消息隊列mailList成員變量。 當(dāng)線程調(diào)用SendMail來進(jìn)行送消息時,先判斷有沒有空箱,以及有沒有先到地寫者,之后再利用Transport來進(jìn)行具體操作。Transport的流程為先得到空箱位置,在那兒保存該信息之后,通過就緒隊列中的搜索,給收信者的消息隊列里添加該郵箱號碼,此時要使沒有找到收信者線程,則認(rèn)為該消息為垃圾信息,將它刪掉;若成功,則將與該郵箱對應(yīng)的Mail對箱上設(shè)置為滿的。 當(dāng)線程調(diào)用來接受消息時,將取出自己消息隊列中的第一個郵箱號碼,然后用AcceptMail函數(shù)讀入消息,再進(jìn)行對應(yīng)郵箱數(shù)據(jù)的修改。(一) 要求一相關(guān)函數(shù)1) 函數(shù)Initialize()——功能描述:初始化nachos虛擬機 入口參數(shù):無 返回值:無 函數(shù)流程: 主流程與原來的函數(shù)一樣。 添加了初始化變量threadnumMutex, threadnumEmpty, threadnumFull, threadCount的步驟。2) 構(gòu)造函數(shù)Thread::Thread(char *threadName) 功能描述:Thread類的構(gòu)造函數(shù) 入口參數(shù): char * ――線程名 返回值:無 函數(shù)
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1