用戶態(tài)與內(nèi)核態(tài)

在研究Synchronized的鎖升級(jí)機(jī)制時(shí)偏瓤,有一句話說(shuō):

.....所以從上面描述可以得出,監(jiān)視器鎖就是monitor它是互斥的(mutex)。由于它是互斥的砂代,那么它的操作成本就非常的高,包括系統(tǒng)調(diào)用引起的內(nèi)核態(tài)與用戶態(tài)切換率挣、線程阻塞造成的線程切換等刻伊。因此,后來(lái)稱這種鎖為“重量級(jí)鎖”椒功。

這里提到了依據(jù)用戶態(tài)與內(nèi)核態(tài)的切換捶箱,我就了解一下:
有的說(shuō)這是兩種CPU的狀態(tài),也有人說(shuō)是操作系統(tǒng)的運(yùn)行狀態(tài)动漾,有點(diǎn)不大清楚

1丁屎、兩者區(qū)別以及劃分的原因:
用戶態(tài):運(yùn)行用戶自己編寫的程序,用戶可使用的資源受到極大的限制
核心態(tài):運(yùn)行操作系統(tǒng)的程序旱眯,可以調(diào)用一切資源為該服務(wù)運(yùn)行

現(xiàn)在操作系統(tǒng)的運(yùn)行級(jí)別一般可分為R0-R3四種級(jí)別晨川,其中CPU級(jí)別在R0表示核心態(tài),R3表示用戶態(tài)删豺。Linux中一般只使用R0和R3級(jí)別共虑。

特權(quán)指令:只能由操作系統(tǒng)使用的指令,如中斷呀页、清理內(nèi)存妈拌、設(shè)置時(shí)鐘。
非特權(quán)指令:可以被用戶使用的指令蓬蝶。
劃分特權(quán)和非特權(quán)的原因:操作系統(tǒng)中發(fā)一些指令屬于極其危險(xiǎn)的級(jí)別尘分,如清理內(nèi)存、設(shè)置時(shí)鐘等疾党。如果允許用戶隨意調(diào)用音诫,將發(fā)生無(wú)法預(yù)估的災(zāi)難,導(dǎo)致系統(tǒng)奔潰雪位。

2竭钝、何時(shí)進(jìn)行兩者的切換:

  • 系統(tǒng)調(diào)用:當(dāng)處于用戶態(tài)的進(jìn)程出于某種需求,需要操作系統(tǒng)提供一些服務(wù)時(shí)雹洗,申請(qǐng)進(jìn)行系統(tǒng)調(diào)用香罐,如父進(jìn)程fork一個(gè)子進(jìn)程。系統(tǒng)調(diào)用的內(nèi)置機(jī)制是一種軟中斷时肿。
  • 異常:在執(zhí)行用戶程序時(shí) 發(fā)生無(wú)法控制的錯(cuò)誤時(shí)庇茫,系統(tǒng)會(huì)自動(dòng)切換成核心態(tài),如除零異常螃成。
  • 外設(shè)中斷:當(dāng)外設(shè)發(fā)送請(qǐng)求時(shí)旦签,如果cpu處于用戶態(tài)查坪,則會(huì)暫停執(zhí)行下一條指令,轉(zhuǎn)而去執(zhí)行中斷服務(wù)程序宁炫。此時(shí)發(fā)生的就是用戶態(tài)到核心態(tài)的切換偿曙。

以上三種觸發(fā)方式,本質(zhì)上的切換操作是一致的羔巢,沒有任何區(qū)別望忆,都是相當(dāng)于執(zhí)行了一個(gè)中斷相應(yīng)的過(guò)程!竿秆!因?yàn)橄到y(tǒng)調(diào)用實(shí)際上最終也是“中斷機(jī)制”實(shí)現(xiàn)的启摄,而異常和中斷的處理機(jī)制基本上也是一致的!幽钢!

3歉备、判斷操作系統(tǒng)處于何種特權(quán)級(jí)別:
CS寄存器中最低兩位保存當(dāng)前代碼的執(zhí)行級(jí)別。

涉及到“用戶態(tài)切換到內(nèi)核態(tài)”的步驟主要包括:
1. 從當(dāng)前進(jìn)程的描述符中提取內(nèi)核棧的ss0及esp0信息匪燕。
2. 使用ss0和esp0指向的內(nèi)核棧將當(dāng)前進(jìn)程的cs威创、eip、eflags谎懦、ss、esp信息保存起來(lái)溃斋,這個(gè)過(guò)程也完成了有用戶態(tài)到內(nèi)存棧的切換過(guò)程界拦,同時(shí)保存了被暫停執(zhí)行的程序的下一條指令。
3. 將先前有中斷向量檢索得到的中斷程序的cs梗劫、eip信息裝入相應(yīng)的寄存器享甸,開始執(zhí)行中斷處理程序,這是就轉(zhuǎn)到了內(nèi)核態(tài)的程序執(zhí)行了梳侨。

總結(jié):
1. 計(jì)算機(jī)系統(tǒng)中有“操作系統(tǒng)程序”和“普通用戶程序”蛉威。
2. 操作系統(tǒng)程序執(zhí)行就是在“內(nèi)核態(tài)”下執(zhí)行的。
3. 普通用戶程序就是在“用戶態(tài)”下執(zhí)行的走哺。
4. 內(nèi)核態(tài)可以使用所有的硬件資源蚯嫌,用戶態(tài)不能直接使用系統(tǒng)資源,也不能改變CPU的工作狀態(tài)丙躏,只能訪問(wèn)用戶程序自己的存儲(chǔ)空間择示!
5. 為了安全和穩(wěn)定性,操作系統(tǒng)程序是不能隨便訪問(wèn)的晒旅!
6. 引起“用戶態(tài)切換到內(nèi)核態(tài)”的本質(zhì)就是“CPU實(shí)行了一次中斷相應(yīng)”栅盲!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市废恋,隨后出現(xiàn)的幾起案子谈秫,更是在濱河造成了極大的恐慌扒寄,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拟烫,死亡現(xiàn)場(chǎng)離奇詭異该编,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)构灸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門上渴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人喜颁,你說(shuō)我怎么就攤上這事稠氮。” “怎么了半开?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵隔披,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我寂拆,道長(zhǎng)奢米,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任纠永,我火速辦了婚禮鬓长,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘尝江。我一直安慰自己涉波,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布炭序。 她就那樣靜靜地躺著啤覆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惭聂。 梳的紋絲不亂的頭發(fā)上窗声,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音辜纲,去河邊找鬼笨觅。 笑死,一個(gè)胖子當(dāng)著我的面吹牛侨歉,可吹牛的內(nèi)容都是我干的屋摇。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼幽邓,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼炮温!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起牵舵,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤柒啤,失蹤者是張志新(化名)和其女友劉穎倦挂,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體担巩,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡方援,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了涛癌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片犯戏。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖拳话,靈堂內(nèi)的尸體忽然破棺而出先匪,到底是詐尸還是另有隱情,我是刑警寧澤弃衍,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布呀非,位于F島的核電站,受9級(jí)特大地震影響镜盯,放射性物質(zhì)發(fā)生泄漏岸裙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一速缆、第九天 我趴在偏房一處隱蔽的房頂上張望降允。 院中可真熱鬧,春花似錦艺糜、人聲如沸拟糕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至侠草,卻和暖如春辱挥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背边涕。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工晤碘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人功蜓。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓园爷,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親式撼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子童社,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容