(通過上次記筆記,我發(fā)現(xiàn)操作系統(tǒng)這門卡了我這么久的課果然還是要多記筆記多思考才能更好地理解呀储狭。
上學(xué)期因?yàn)檎n程太忙互婿,所以操作系統(tǒng)看到一半就終止了,希望這次能夠繼續(xù)堅(jiān)持下去辽狈,畢竟校招前留給我繼續(xù)夯實(shí)內(nèi)功的時(shí)間真的不多了4炔巍!
最近兩天由于各種事情刮萌,學(xué)習(xí)的進(jìn)度有點(diǎn)放緩驮配,代碼敲的有點(diǎn)少,還是希望自己能更好地利用好寒假寶貴的時(shí)間吧着茸,不然下學(xué)期又要在一堆專業(yè)課中無法自拔W扯汀!)
看不見看不見看不見涮阔,你們看不見我的內(nèi)心戲
內(nèi)核級(jí)多線程KLT (Kernel-Level Threads)
線程管理的工作由OS內(nèi)核來做猜绣。
OS提供了一個(gè)API供開發(fā)者使用KLT,OS也可以直接調(diào)度KLT敬特。
內(nèi)核級(jí)線程的特點(diǎn)
- 進(jìn)程中的一個(gè)線程被阻塞了掰邢,內(nèi)核能調(diào)度同一個(gè)進(jìn)程的其他線程占有處理器進(jìn)行。
- 多處理器環(huán)境中伟阔,內(nèi)核能同時(shí)調(diào)度同一個(gè)進(jìn)程中多個(gè)線程并行執(zhí)行
- 內(nèi)核自身也可用多線程技術(shù)實(shí)現(xiàn)辣之,能提高操作系統(tǒng)的執(zhí)行速度和效率
- 應(yīng)用程序在用戶態(tài)運(yùn)行,線程調(diào)度和管理在內(nèi)核態(tài)實(shí)現(xiàn)皱炉,同一進(jìn)程中怀估,控制權(quán)從一個(gè)線程傳送到另一個(gè)線程時(shí)需要模式切換,系統(tǒng)開銷大合搅。通信開銷是小的多搀。
用戶級(jí)線程ULT(User-Level Threads)
用戶空間運(yùn)行的線程庫,提供多線程應(yīng)用程序的開發(fā)和運(yùn)行的支撐環(huán)境灾部。
任何應(yīng)用程序均需通過線程庫進(jìn)行程序設(shè)計(jì)酗昼,再與線程庫連接后運(yùn)行。
線程管理的所有工作都由應(yīng)用程序完成梳猪,內(nèi)核沒有意識(shí)到線程的存在麻削。
用戶級(jí)線程的特點(diǎn)
- 所有線程管理數(shù)據(jù)結(jié)構(gòu)均在進(jìn)程的用戶空間中蒸痹,線程切換不需要內(nèi)核模式,能節(jié)省模式切換開銷和內(nèi)核資源
- 允許進(jìn)程按應(yīng)用特定需要選擇調(diào)度算法呛哟。
- 能運(yùn)行在任何OS上叠荠,內(nèi)核在支持ULT方面不需要任何工作
- 不能應(yīng)用多處理器的優(yōu)點(diǎn),OS調(diào)度進(jìn)程扫责,僅有一個(gè)ULT能執(zhí)行榛鼎。
- 一個(gè)ULT阻塞,將引起整個(gè)進(jìn)程的阻塞
Jacketing技術(shù)
把阻塞式系統(tǒng)調(diào)用改造成非阻塞式的
當(dāng)線程陷入系統(tǒng)調(diào)用時(shí)鳖孤,執(zhí)行Jackting程序者娱。
由jackting程序來檢查資源使用情況,已決定是否執(zhí)行進(jìn)程切換苏揣,或傳遞控制權(quán)給另一個(gè)線程黄鳍。
ULT 用于解決邏輯并行性問題
KLT 用于解決物理并行性問題
多線程實(shí)現(xiàn)的混合式策略
線程創(chuàng)建完全是在用戶空間做的。
單應(yīng)用的多個(gè)ULT可以映射成一些KLT平匈,通過調(diào)整KLT數(shù)目框沟,達(dá)到較好的并行效果。
特點(diǎn):
- 組合用戶級(jí)線程/內(nèi)核級(jí)線程設(shè)施
- 線程創(chuàng)建完全在用戶空間中完成增炭,線程的調(diào)度和同步也在應(yīng)用程序中進(jìn)行
- 一個(gè)應(yīng)用中的多個(gè)用戶級(jí)線程被映射到一些內(nèi)核級(jí)線程上
- 程序員可以針對(duì)特定應(yīng)用和機(jī)器調(diào)節(jié)內(nèi)核級(jí)線程的數(shù)目忍燥,以達(dá)到整體最佳效果
- 結(jié)合了純粹用戶級(jí)線程方法和內(nèi)核級(jí)線程方法的優(yōu)點(diǎn),同時(shí)減少他們的缺點(diǎn)
線程混合式策略下的線程狀態(tài)
處理器調(diào)度的層次
高級(jí)調(diào)度:長(zhǎng)程調(diào)度隙姿,作業(yè)調(diào)度
決定能否加入到執(zhí)行的進(jìn)程池中
決定哪個(gè)可用進(jìn)程占用處理器執(zhí)行
中級(jí)調(diào)度:平衡負(fù)載調(diào)度
決定主存中的可用進(jìn)程集合
高級(jí)調(diào)度
分時(shí)OS中梅垄,高級(jí)調(diào)度決定
- 是否接受一個(gè)終端用戶的連接
- 命令能否被系統(tǒng)接納并構(gòu)成進(jìn)程
- 新建態(tài)進(jìn)程是否加入就緒進(jìn)程隊(duì)列
批處理OS中,高級(jí)調(diào)度又稱為作業(yè)調(diào)度输玷。
功能是按照某種原則從后備作業(yè)隊(duì)列中選取作業(yè)進(jìn)入主存队丝,并為作業(yè)做好運(yùn)行前的準(zhǔn)備工作和完成后的善后工作。
中級(jí)調(diào)度
為了提高內(nèi)存利用率和作業(yè)吞吐量而引入饲嗽。
中級(jí)調(diào)度決定那些進(jìn)程被允許駐留在主存中參與競(jìng)爭(zhēng)處理器及其他資源,起到短期調(diào)整系統(tǒng)負(fù)荷的作用奈嘿。
中級(jí)調(diào)度把一些進(jìn)程換出主存貌虾,從而使之進(jìn)入掛起狀態(tài),不參與進(jìn)程調(diào)度裙犹,以平順系統(tǒng)的負(fù)載尽狠。
低級(jí)調(diào)度
又稱處理器調(diào)度,進(jìn)程調(diào)度叶圃,短程調(diào)度袄膏。
按照某種原則把處理器分配給就緒態(tài)進(jìn)程或內(nèi)核級(jí)進(jìn)程。
進(jìn)程調(diào)度程序:又稱分派程序掺冠,操作系統(tǒng)中實(shí)現(xiàn)處理器調(diào)度的程序沉馆,是操作系統(tǒng)的最核心部分码党。
處理器調(diào)度策略的優(yōu)劣直接影響到整個(gè)系統(tǒng)的性能。
低級(jí)調(diào)度的主要功能
- 記住進(jìn)程或內(nèi)核級(jí)進(jìn)程的狀態(tài)
- 決定某個(gè)進(jìn)程或內(nèi)核級(jí)線程什么時(shí)候獲得處理器斥黑,以及占用多長(zhǎng)時(shí)間
- 把處理器分配給進(jìn)程或內(nèi)核級(jí)線程
- 收回處理器
選擇處理器調(diào)度算法的原則
- 資源利用率:使得CPU或其他資源的使用率盡可能高并且能夠并行工作揖盘。
- 響應(yīng)時(shí)間:使交互式用戶的響應(yīng)時(shí)間盡可能小,或盡快處理實(shí)時(shí)任務(wù)
- 周轉(zhuǎn)時(shí)間:提交給系統(tǒng)開始到執(zhí)行完成獲得結(jié)果為止的這段時(shí)間間隔稱周轉(zhuǎn)時(shí)間锌奴,應(yīng)該使周轉(zhuǎn)時(shí)間或平均周轉(zhuǎn)時(shí)間盡可能短
- 吞吐量:?jiǎn)挝粫r(shí)間處理的進(jìn)程數(shù)盡可能多
- 公平性:確保每個(gè)用戶每個(gè)進(jìn)程獲得合理的CPU份額或其他資源份額
優(yōu)先數(shù)調(diào)度算法
根據(jù)分配給進(jìn)程的優(yōu)先數(shù)決定運(yùn)行進(jìn)程
- 搶占式優(yōu)先數(shù)調(diào)度算法
- 非搶占式優(yōu)先數(shù)調(diào)度算法
優(yōu)先數(shù)的確定準(zhǔn)則:
- 進(jìn)程負(fù)擔(dān)任務(wù)的緊迫程度
- 進(jìn)程的交互性
- 進(jìn)程使用外設(shè)的頻度
- 進(jìn)程進(jìn)入系統(tǒng)的時(shí)間長(zhǎng)短
計(jì)算時(shí)間短(作業(yè)/進(jìn)程)優(yōu)先
剩余計(jì)算時(shí)間短進(jìn)程優(yōu)先
響應(yīng)比高者(作業(yè)/進(jìn)程)優(yōu)先
響應(yīng)比 = 等待時(shí)間/進(jìn)入時(shí)間
先來先服務(wù):先進(jìn)隊(duì)列先被選擇(多用于高級(jí)調(diào)度兽狭,低級(jí)調(diào)度中,以計(jì)算為主的進(jìn)程過于優(yōu)越)
時(shí)間片輪轉(zhuǎn)調(diào)度算法
根據(jù)各個(gè)進(jìn)程進(jìn)入就緒隊(duì)列的時(shí)間先后輪流占有CPU一個(gè)時(shí)間片鹿蜀。
時(shí)間片的選定:選擇長(zhǎng)短合適的時(shí)間片箕慧,過長(zhǎng)則退化為先來先服務(wù)算法,過短則調(diào)度開銷大茴恰。
(單時(shí)間片颠焦,多時(shí)間片,動(dòng)態(tài)時(shí)間片)
分級(jí)調(diào)度算法
多隊(duì)列策略
建立多個(gè)不同優(yōu)先級(jí)的就緒進(jìn)程隊(duì)列琐簇,多個(gè)就緒進(jìn)程隊(duì)列間按照優(yōu)先數(shù)調(diào)度蒸健。
高優(yōu)先級(jí)就緒進(jìn)程分配的時(shí)間短,低優(yōu)先級(jí)分配的時(shí)間長(zhǎng)(補(bǔ)償)
單個(gè)就緒進(jìn)程隊(duì)列中婉商,進(jìn)程的優(yōu)先數(shù)和時(shí)間片都相同似忧。
分級(jí)原則:外設(shè)訪問,交互性丈秩,時(shí)間緊迫程度盯捌,系統(tǒng)效率,用戶立場(chǎng)蘑秽。饺著。。
現(xiàn)代操作系統(tǒng)的實(shí)現(xiàn)模型:
- 多個(gè)高優(yōu)先級(jí)的實(shí)時(shí)進(jìn)程隊(duì)列肠牲,如:硬實(shí)時(shí)幼衰,網(wǎng)絡(luò),軟實(shí)時(shí)
- 多個(gè)分時(shí)任務(wù)的進(jìn)程隊(duì)列缀雳,根據(jù)基準(zhǔn)優(yōu)先數(shù)和執(zhí)行行為調(diào)整渡嚣。
- 隊(duì)列數(shù)可能多達(dá)32-128個(gè)
彩票調(diào)度算法
主要是利用了概率。
基本思想:為進(jìn)程發(fā)放針對(duì)系統(tǒng)各種資源(CPU時(shí)間等)的彩票肥印,當(dāng)調(diào)度程序需要做出決策時(shí)识椰,隨機(jī)選擇一張彩票,持有該彩票的進(jìn)程將獲得系統(tǒng)資源深碱。合作進(jìn)程之間有彩票交換腹鹉。