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

正文內(nèi)容

操作系統(tǒng)教程第4章-展示頁

2024-10-10 23:59本頁面
  

【正文】 示。該進程有兩個睡眠標志: runout和 runin。最后一個問題將放在 UNIX存儲管理的“對換技術(shù)”一節(jié)中討論,這里只介紹進程的換進和換出問題。所以,在 UNIX中,經(jīng)常要遇到進程的換出和換進問題。 調(diào)度時,如果沒有“在內(nèi)存就緒”狀態(tài)的進程存在,那么就需要把磁盤對換區(qū)中的“換出并就緒”狀態(tài)的進程換進內(nèi)存參與調(diào)度,因為它們處于就緒狀態(tài),只是有一部分信息在磁盤對換區(qū),把這些信息調(diào)入內(nèi)存后,它們就能夠投入運行。另一方面,為了緩解內(nèi)存使用的緊張程度, UNIX又常把一些進程的非常駐內(nèi)存部分換出到磁盤對換區(qū)上。 可見 , 通過這樣的處理 , UNIX讓每個進程都有較為合理的機會獲得處理機的服務(wù) 。 P_cpu值下降 , 意味著由公式 ( 1) 計算出來的進程優(yōu)先數(shù)也呈下降的趨勢 ( 見圖 74⑥ ) 。 進程優(yōu)先數(shù)的上升 ,意味著它獲得處理機的優(yōu)先權(quán)下降 ( 見圖 74③ ) , 也就是被調(diào)度到的可能性減少 ( 見圖 74④ ) 。 如果一個進程逐漸地占用了較多的處理機時間 , 那么它的 proc結(jié)構(gòu)中的 p_cpu值就逐漸加大 , 呈上升的趨勢 ( 見圖 74① ) 。圖 74給出了 p_cpu的變化對進程優(yōu)先數(shù)的影響,從而也就影響到了進程被調(diào)度到的可能性。到1s鐘時,依次檢查系統(tǒng)中所有進程的 p_cpu。時鐘中斷處理程序每20ms做一次。一個進程的 p_nice被設(shè)置后,若再要改變,則只能夠讓其增加; p_cpu是進程使用處理機的時間,它給出了一個進程使用處理機的情況。其中 PUSER是一個常數(shù); p_nice是用戶為自己的進程設(shè)定的優(yōu)先權(quán),它可以通過系統(tǒng)調(diào)用命令來加以設(shè)置。這個優(yōu)先數(shù)將在進程被喚醒后發(fā)揮作用 。 為了改變一個進程的優(yōu)先數(shù) , 在 UNIX中采取設(shè)置和計算兩種方法 。直到發(fā)生中斷請求,被喚醒再次去搜索 proc[ ]表。在處于就緒、且全部在內(nèi)存的進程中,挑選一個優(yōu)先數(shù)最?。磧?yōu)先權(quán)最大)的進程作為分配對象。 以上就是一個 UNIX進程從被創(chuàng)建開始到被撤消為止的整個生命期內(nèi)的變化過程。無論是處于“在內(nèi)存睡眠”狀態(tài)還是處于“睡眠并換出”狀態(tài),都表明這個進程在等待某個事件的發(fā)生。 一個進程處于“在內(nèi)存睡眠”狀態(tài)時,如果內(nèi)存使用緊張,就會被從內(nèi)存換出到磁盤的對換區(qū)。如果要等待輸入 /輸出完成,則變成“在內(nèi)存睡眠”狀態(tài);如果是調(diào)用了 exit而進入“核心態(tài)運行”狀態(tài),則意味著進程運行結(jié)束,于是進入“僵死”狀態(tài),所占用的一切資源被釋放。在“核心態(tài)運行”狀態(tài)下的進程是不能被剝奪的。 一個進程被調(diào)度到時,就成為“用戶態(tài)運行”狀態(tài)。 處于這兩種狀態(tài)的進程 ,從原則上說都是 “ 就緒 ” 的 , 都可以參與處理機調(diào)度 。 如果能夠為該進程分配到足夠的內(nèi)存空間 , 則它變?yōu)?“ 在內(nèi)存就緒 ” 狀態(tài);如果當前沒有足夠的內(nèi)存空間 , 則它變?yōu)?“ 換出并就緒 ” 狀態(tài) , 被安置在磁盤的對換區(qū) 。 圖 73給出了進程狀態(tài)的變遷圖 。另外,通過 user結(jié)構(gòu)中的 u_procp,可以得到該進程的 proc結(jié)構(gòu)的位置。通過 proc結(jié)構(gòu)中的 p_addr,就能夠得到該進程的數(shù)據(jù)段;通過 p_textp,就能夠得到該進程共享正文段的 text結(jié)構(gòu),再由這個 text結(jié)構(gòu)中的x_caddr或 x_daddr就能夠得到共享正文段在內(nèi)存或在磁盤對換區(qū)的位置。 在那里一根虛線把圖分成兩個部分。 其中每一個 text結(jié)構(gòu)對應(yīng)一個共享正文段 , 主要記錄關(guān)于這個正文段的有關(guān)信息 , 比如共享正文段在磁盤對換區(qū)的地址 ( x_daddr ) , 共享正文段在內(nèi)存的地址( x_caddr) , 共享正文段的長度 ( x_size) , 共享本正文段的所有進程數(shù)目 ( x_count) 等 。 其聯(lián)系如圖 71所示 。 這樣 ,UNIX進程的數(shù)據(jù)段分成三個部分:系統(tǒng)數(shù)據(jù)區(qū) 、 用戶數(shù)據(jù)區(qū)和用戶棧區(qū) 。 1.進程控制塊 2. 數(shù)據(jù)段 進程運行時用到的數(shù)據(jù)以及工作區(qū) , 構(gòu)成了一個進程的數(shù)據(jù)段 。 UNIX的處理機管理 UNIX的存儲管理 UNIX的文件管理 UNIX的設(shè)備管理 UNIX的處理機管理 UNIX的進程 通常,一個進程由三個部分組成:進程控制塊PCB、數(shù)據(jù)和程序。 退出 UNIX是一個通用、多用戶的分時操作系統(tǒng)。 但不管怎樣 , UNIX以其特有的簡潔性和開放性 , 贏得了越來越多人的贊賞與青睞 , 已成為一個應(yīng)用領(lǐng)域廣泛 、 功能豐富實用的操作系統(tǒng) 。 時至今日 , UNIX已經(jīng)走過了 30多個年頭 。第 7章 實例分析: UNIX操作系統(tǒng) 1969年 , 美國貝爾實驗室的湯普遜 ( )和里奇 ( ) 免費發(fā)行了一個小型的實驗性操作系統(tǒng) , 由此宣布了 UNIX操作系統(tǒng)的誕生 。 1978年以后 , UNIX真正開始流行 。 在此期間 , 它發(fā)生了許多重大的變化 , 有欣欣向榮之日 , 也有曲折坎坷之時 。 現(xiàn)在已經(jīng)有各種版本的 、 可以運行在不同平臺上的 UNIX。本章主要從實現(xiàn)的角度出發(fā),講述四個方面的內(nèi)容: ( 1) UNIX的進程以及進程調(diào)度; ( 2) UNIX采用的存儲管理策略; ( 3) UNIX目錄結(jié)構(gòu)的特點以及對磁盤存儲空間的管理; ( 4) UNIX對塊設(shè)備及字符設(shè)備的管理以及緩沖技術(shù)。在 UNIX中,一個進程也由三個部分組成:進程控制塊、數(shù)據(jù)段和共享正文段,并有其自身的不同含義。 要注意的是 , 如果進程執(zhí)行的程序是不能被共享的 , 那么也把它歸入到數(shù)據(jù)段中 。 如在基本控制塊 proc結(jié)構(gòu)中所述 ,在進程的 proc結(jié)構(gòu)中 , 由 p_addr指向該進程數(shù)據(jù)段的首地址 , 由 p_size給出數(shù)據(jù)段的長度 。 3. 共享正文段 為了管理好進程的共享正文段 , UNIX在內(nèi)存專門開辟了一個 text結(jié)構(gòu)區(qū)域 , 形成正文段表 text[ ]。 綜上所述 , 一個進程的基本控制塊 proc結(jié)構(gòu) 、 數(shù)據(jù)段 ( 包含擴充控制塊 user結(jié)構(gòu) ) 以及共享正文段三者之間的關(guān)系 , 可以用圖 72勾畫出來 。標有①的部分表示 proc[ ]表中進程的 proc結(jié)構(gòu)以及 text[ ]表中的text結(jié)構(gòu)總是常駐內(nèi)存。標有②的部分表示進程的數(shù)據(jù)段和共享正文段是非常駐內(nèi)存部分,根據(jù)需要和可能,數(shù)據(jù)段和共享正文段會在內(nèi)存和磁盤對換區(qū)之間換進和換出。 UNIX的進程狀態(tài) UNIX進程在其生命期內(nèi) , 可以處于多種不同的狀態(tài) , 并記錄在進程的 proc結(jié)構(gòu)中 。 當父進程執(zhí)行系統(tǒng)調(diào)用 fork創(chuàng)建一個子進程時 ,被創(chuàng)建進程處于 “ 創(chuàng)建 ” 狀態(tài) 。 另外 , 原來已在內(nèi)存的就緒進程 , 也可能因為內(nèi)存緊張而被換出 , 同樣成為 “ 換出并就緒 ” 狀態(tài) 。只是處于 “ 換出并就緒 ” 狀態(tài)的進程被調(diào)度到時 , 由于它的非常駐內(nèi)存部分并不在內(nèi)存 , 因此要先被換進 ,才能夠真正占用處理機投入運行 。進程在“用戶態(tài)運行”狀態(tài)下時,若程序中使用了系統(tǒng)調(diào)用或請求輸入 /輸出,就會使進程從“用戶態(tài)運行”狀態(tài)改變?yōu)椤昂诵膽B(tài)運行”狀態(tài)。當系統(tǒng)調(diào)用執(zhí)行完畢,就返回到“在內(nèi)存就緒”狀態(tài)。如果在“用戶態(tài)運行”狀態(tài)下,由于時間片到等原因,就會直接變成“在內(nèi)存就緒”狀態(tài)。這時,該進程處于“睡眠并換出”狀態(tài)。當處于“在內(nèi)存睡眠”狀態(tài)下等待的事件發(fā)生時,進程狀態(tài)就變?yōu)椤霸趦?nèi)存就緒”;當處于“睡眠并換出”狀態(tài)下等待的事件發(fā)生時,進程狀態(tài)就變?yōu)椤皳Q出并就緒”。 UNIX的進程調(diào)度與換進換出 為了把處理機分配給一個進程使用, UNIX的進程調(diào)度程序總?cè)ゲ榭聪到y(tǒng) proc[ ]表中登記的所有進程。如果暫時沒有這種進程存在,那么進程調(diào)度程序就處于“在內(nèi)存睡眠”的等待狀態(tài)。 UNIX賦予進程調(diào)度進程極高的優(yōu)先權(quán),以保證系統(tǒng)能以最快的速度找到可運行的進程,提高 CPU的使用效率。 設(shè)置方法用于當一個進程變?yōu)樗郀顟B(tài)時 , 系統(tǒng)將根據(jù)不同的睡眠原因 , 賦予睡眠進程不同的優(yōu)先數(shù) 。 計算進程優(yōu)先數(shù)的公式為: p_pri=min{127, (p_cpu/16+PUSER+p_nice)} 此公式是在 127和 p_cpu/16+PUSER+p_nice兩個數(shù)之間取最小值。通常,由這個量反映用戶進程工作任務(wù)的輕重緩急程度。 這里最關(guān)鍵的是 p_cpu,系統(tǒng)通過時鐘中斷來記錄每個進程使用處理機的情況。每做一次就將運行進程的 p_cpu加 1。如果這個進程的 p_cpu10,表明該進程在此 1s內(nèi)占用處理機的時間沒有超過 200ms,于是把它的 p_cpu修改為 0;如果這個進程的 p_cpu10,表明該進程在此 1s鐘內(nèi)占用處理機的時間超過 200ms,于是在它原有 p_cpu的基礎(chǔ)上減 10。 從左到右從上到下來觀察圖 74。由于 p_cpu增加 , 根據(jù)公式 ( 1) 計算出來的進程優(yōu)先數(shù)也呈上升的趨勢 ( 見圖 74② ) 。 由于調(diào)度到的可能性減少了 , 使用處理機的機會就少了 , 于是p_cpu值下降 ( 見圖 74⑤ ) 。 一個進程優(yōu)先數(shù)減少 , 表示它的優(yōu)先權(quán)上升 ( 見圖 74⑦ ) , 也就是這個進程獲得處理機的機會增多 ( 見圖 74⑧ ) 。 如上所述, UNIX一方面總是在 “在內(nèi)存就緒
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1