熱搜:win11繞過硬件限制安裝 一鍵重裝Win10系統(tǒng) 最干凈的u盤啟動盤 真正純凈版的win7系統(tǒng)
時間:2015-09-09 15:05:32 作者:zhijie 來源:系統(tǒng)之家 1. 掃描二維碼隨時看資訊 2. 請使用手機瀏覽器訪問: https://m.xitongzhijia.net/xtjc/20150909/57286.html 手機查看 評論 反饋
線程相關(guān)
用戶線程&內(nèi)核線程
線程從一開始誕生就有兩個分類:用戶級線程 和 內(nèi)核級線程。
我們在Linux上常見的是內(nèi)核級線程, 即線程調(diào)度相關(guān)操作都在內(nèi)核里實現(xiàn), 不太常見的是用戶級線程。
用戶級線程的優(yōu)勢是:
1.線程切換成本低,不用內(nèi)核操作
2.用戶可以自定義線程調(diào)度策略
3.跟操作系統(tǒng)無關(guān),可以很快移植到另外一臺機器上
但是用戶線程也有如下問題:
1.一個線程的阻塞會影響其他線程,因為操作系統(tǒng)看不到別的線程
2.不能很好的利用多核能力,因為操作系統(tǒng)會把一個內(nèi)核進程放到一個CPU上
目前Linux上只使用內(nèi)核級線程, Solaris上面兩者都提供。
線程切換
一個進程的上下文主要有如下幾個部分的信息構(gòu)成:
1.程序計數(shù)器
2.寄存器信息
3.棧信息
一個進程切換的過程包含:
1.保存當(dāng)前進程的上下文
2.將當(dāng)前進程加入操作系統(tǒng)對應(yīng)隊列
3.通過調(diào)度算法選擇另外一個進程
4.調(diào)整虛存映射
5.加載新進程的上下文
但是線程切換就不一樣了,之需要切換PC寄存器指向的代碼地址就好,其他操作都不用做,所以線程切換的成本比進程切換低多了。
互斥和同步
簡介
當(dāng)多個進程需要對同一個資源進行訪問的時候, 為了避免同時使用這個資源造成的混亂, 所以需要考慮進程間的互斥。
典型的互斥實現(xiàn)方案如下:
方案介紹
中斷禁用
殺敵一千, 自損八百。雖然能實現(xiàn)互斥, 但是大大降低了處理器的執(zhí)行效率。而且再多處理器體系結(jié)構(gòu)中, 他還不能達到互斥
專用機器指令
往往是通過一個不可中斷的指令, 用于原子修改內(nèi)存中的值, 常見的兩個指令是testset和exchange, 其對應(yīng)的demo代碼如下圖。該方案的好處是實現(xiàn)簡單, 壞處是使用了忙等待, 可能出現(xiàn)饑餓, 可能死鎖, 需要操作系統(tǒng)層進行管理和避免。
發(fā)表評論
共0條
評論就這些咯,讓大家也知道你的獨特見解
立即評論以上留言僅代表用戶個人觀點,不代表系統(tǒng)之家立場