理解內(nèi)核態(tài)和用戶態(tài)

操作系統(tǒng)的體系結(jié)構(gòu)


計(jì)算機(jī)組成部分包括用戶空間,linux內(nèi)核(內(nèi)核空間), 硬件部分, 用戶空間通過(guò) system call(系統(tǒng)調(diào)用) 與linux kernal通信.當(dāng)有system call調(diào)用時(shí),即發(fā)生用戶態(tài)和內(nèi)核態(tài)的轉(zhuǎn)換.

概念


OS(操作系統(tǒng))的資源是有限的,為了減少有限資源的訪問(wèn)和使用沖突,Linux對(duì)不同的操作賦予不同的執(zhí)行等級(jí).?

用戶態(tài): 3級(jí),只能受限的訪問(wèn)內(nèi)存辨绊,且不允許訪問(wèn)外圍設(shè)備够庙,占用cpu的能力被剝奪安疗,cpu資源可以被其他程序獲取。

內(nèi)核態(tài):0級(jí),cpu可以訪問(wèn)內(nèi)存的所有數(shù)據(jù)遣钳,包括外圍設(shè)備,例如硬盤麦乞,網(wǎng)卡蕴茴,cpu也可以將自己從一個(gè)程序切換到另一個(gè)程序。

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

所有的用戶程序都運(yùn)行在用戶態(tài),但是一些操作需要內(nèi)核態(tài)來(lái)完成.例如從硬盤讀取數(shù)據(jù),從鍵盤獲取輸入等,這些都需要OS(操作系統(tǒng))執(zhí)行.

工作流程:

1. 用戶態(tài)程序一些數(shù)據(jù)值放在寄存器中,或者使用參數(shù)創(chuàng)建一個(gè)Stack Frame(棧幀), 以表明需要OS(操作系統(tǒng))提供的服務(wù)

2. 用戶態(tài)執(zhí)行system call(系統(tǒng)調(diào)用)

3. CPU切換到內(nèi)核態(tài),并跳到位于內(nèi)存位置的指令,這些指令是操作系統(tǒng)的一部分,他們具有內(nèi)存保護(hù),不可被用戶態(tài)程序訪問(wèn)等特性

4. 這些指令被稱為trap(陷阱)或者system call handler(系統(tǒng)調(diào)用處理器). 他們會(huì)讀取程序放入內(nèi)存的數(shù)據(jù)值參數(shù),并執(zhí)行程序請(qǐng)求的服務(wù).

5.system call調(diào)用執(zhí)行完畢后,OS會(huì)重置CPU為用戶態(tài)并返回調(diào)用結(jié)果.

三種切換方式:

1. 系統(tǒng)調(diào)用姐直,這個(gè)上面已經(jīng)講解過(guò)了倦淀,在我公眾號(hào)之前的文章也有講解過(guò)。其實(shí)系統(tǒng)調(diào)用本身就是中斷声畏,但是軟件中斷撞叽,跟硬中斷不同。

2. 異常:如果當(dāng)前進(jìn)程運(yùn)行在用戶態(tài)插龄,如果這個(gè)時(shí)候發(fā)生了異常事件愿棋,就會(huì)觸發(fā)切換。例如:缺頁(yè)異常均牢。

3. 外設(shè)中斷:當(dāng)外設(shè)完成用戶的請(qǐng)求時(shí)糠雨,會(huì)向CPU發(fā)送中斷信號(hào)。

對(duì)于JAVA語(yǔ)言:


str =?"my string"http:// 用戶空間

x = x +?2

file.write(str)?// 切換到內(nèi)核空間

y = x +?4// 切換回用戶空間

文件的操作需要OS來(lái)完成, 當(dāng)有文件的讀寫操作時(shí), 會(huì)從用戶態(tài)切換到內(nèi)核態(tài). 其他操作如open?徘跪、read甘邀、write?砂竖、close、fsync?這些系統(tǒng)調(diào)用等

在linux中,用戶態(tài)和內(nèi)核態(tài)的分層如圖:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鹃答,一起剝皮案震驚了整個(gè)濱河市乎澄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌测摔,老刑警劉巖置济,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異锋八,居然都是意外死亡浙于,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門挟纱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)羞酗,“玉大人,你說(shuō)我怎么就攤上這事紊服√垂欤” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵欺嗤,是天一觀的道長(zhǎng)参萄。 經(jīng)常有香客問(wèn)我,道長(zhǎng)煎饼,這世上最難降的妖魔是什么讹挎? 我笑而不...
    開(kāi)封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮吆玖,結(jié)果婚禮上筒溃,老公的妹妹穿的比我還像新娘。我一直安慰自己沾乘,他們只是感情好怜奖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著意鲸,像睡著了一般烦周。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上怎顾,一...
    開(kāi)封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天读慎,我揣著相機(jī)與錄音,去河邊找鬼槐雾。 笑死夭委,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的募强。 我是一名探鬼主播株灸,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼崇摄,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了慌烧?” 一聲冷哼從身側(cè)響起逐抑,我...
    開(kāi)封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎屹蚊,沒(méi)想到半個(gè)月后厕氨,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡汹粤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年命斧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嘱兼。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡国葬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出芹壕,到底是詐尸還是另有隱情汇四,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布哪雕,位于F島的核電站船殉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏斯嚎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一挨厚、第九天 我趴在偏房一處隱蔽的房頂上張望堡僻。 院中可真熱鬧,春花似錦疫剃、人聲如沸钉疫。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)牲阁。三九已至,卻和暖如春壤躲,著一層夾襖步出監(jiān)牢的瞬間城菊,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工碉克, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留凌唬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓漏麦,卻偏偏與公主長(zhǎng)得像客税,于是被迫代替她去往敵國(guó)和親况褪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355