2019-11-19-Linux-特權(quán)級

Linux-特權(quán)級凭需、內(nèi)核態(tài)和用戶態(tài)

CPU特權(quán)級

Intel x86架構(gòu)的cpu一共有0~4四個特權(quán)級狸棍,0級最高胆胰,3級最低,硬件上在執(zhí)行每條指令時都會對指令所具有的特權(quán)級做相應(yīng)的檢查垮斯。硬件已經(jīng)提供了一套特權(quán)級使用的相關(guān)機(jī)制郎仆,軟件自然要好好利用,這屬于操作系統(tǒng)要做的事情兜蠕,對于UNIX/LINUX來說扰肌,只使用了0級特權(quán)級別和3級特權(quán)級。也就是說在UNIX/LINUX系統(tǒng)中熊杨,一條工作在0級特權(quán)級的指令具有了CPU能提供的最高權(quán)力曙旭,而一條工作在3級特權(quán)的指令具有CPU提供的最低或者說最基本權(quán)力

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

內(nèi)核棧:Linux中每個進(jìn)程有兩個棧,分別用于用戶態(tài)和內(nèi)核態(tài)的進(jìn)程執(zhí)行晶府,其中的內(nèi)核棧就是用于內(nèi)核態(tài)的堆棧桂躏,它和進(jìn)程的task_struct結(jié)構(gòu),更具體的是thread_info結(jié)構(gòu)一起放在兩個連續(xù)的頁框大小的空間內(nèi)郊霎。

    現(xiàn)在我們從特權(quán)級的調(diào)度來理解用戶態(tài)和內(nèi)核態(tài)就比較好理解了沼头,當(dāng)程序運行在3級特權(quán)級上時爷绘,就可以稱之為運行在用戶態(tài)书劝,因為這是最低特權(quán)級,是普通的用戶進(jìn)程運行的特權(quán)級土至,大部分用戶直接面對的程序都是運行在用戶態(tài)购对;反之,當(dāng)程序運行在0級特權(quán)級上時陶因,就可以稱之為運行在內(nèi)核態(tài)骡苞。
    
    雖然用戶態(tài)下和內(nèi)核態(tài)下工作的程序有很多差別,但最重要的差別就在于特權(quán)級的不同楷扬,即權(quán)力的不同解幽。運行在用戶態(tài)的程序不能訪問操作系統(tǒng)內(nèi)核數(shù)據(jù)結(jié)構(gòu)合程序。  當(dāng)我們在系統(tǒng)中執(zhí)行一個程序時烘苹,大部分時間是運行在用戶態(tài)下的躲株。在其需要操作系統(tǒng)幫助完成某些它沒有權(quán)力和能力完成的工作時就會切換到內(nèi)核態(tài)。
    
    Linux進(jìn)程的4GB地址空間镣衡,3G-4G部分大家是共享的霜定,是內(nèi)核態(tài)的地址空間,這里存放在整個內(nèi)核的代碼和所有的內(nèi)核模塊廊鸥,以及內(nèi)核所維護(hù)的數(shù)據(jù)望浩。用戶運行一個程序,該程序所創(chuàng)建的進(jìn)程開始是運行在用戶態(tài)的惰说,如果要執(zhí)行文件操作磨德,網(wǎng)絡(luò)數(shù)據(jù)發(fā)送等操作,必須通過write吆视,send等系統(tǒng)調(diào)用典挑,這些系統(tǒng)調(diào)用會調(diào)用內(nèi)核中的代碼來完成操作切诀,這時,必須切換到Ring0搔弄,然后進(jìn)入3GB-4GB中的內(nèi)核地址空間去執(zhí)行這些代碼完成操作幅虑,完成后,切換回Ring3顾犹,回到用戶態(tài)倒庵。這樣,用戶態(tài)的程序就不能隨意操作內(nèi)核地址空間炫刷,具有一定的安全保護(hù)作用擎宝。保護(hù)模式,通過內(nèi)存頁表操作等機(jī)制浑玛,保證進(jìn)程間的地址空間不會互相沖突绍申,一個進(jìn)程的操作不會修改另一個進(jìn)程的地址空間中的數(shù)據(jù)。在內(nèi)核態(tài)下顾彰,CPU可執(zhí)行任何指令极阅,在用戶態(tài)下CPU只能執(zhí)行非特權(quán)指令。當(dāng)CPU處于內(nèi)核態(tài)涨享,可以隨意進(jìn)入用戶態(tài)筋搏;而當(dāng)CPU處于用戶態(tài),只能通過中斷的方式進(jìn)入內(nèi)核態(tài)厕隧。一般程序一開始都是運行于用戶態(tài)奔脐,當(dāng)程序需要使用系統(tǒng)資源時,就必須通過調(diào)用軟中斷進(jìn)入內(nèi)核態(tài). 

用戶態(tài)切換到內(nèi)核態(tài)的三種方式

1吁讨、系統(tǒng)調(diào)用

這是用戶態(tài)進(jìn)程主動要求切換到內(nèi)核態(tài)的一種方式髓迎,用戶態(tài)進(jìn)程通過系統(tǒng)調(diào)用申請使用操作系統(tǒng)提供的服務(wù)程序完成工作。而系統(tǒng)調(diào)用的機(jī)制建丧,其核心還是使用了操作系統(tǒng)為用戶特別開放的一個中斷來實現(xiàn)排龄,例如lx86的int 80h

2、異常

當(dāng)CPU在執(zhí)行運行在用戶態(tài)下的程序時茶鹃,發(fā)生了某些事先不可知的異常涣雕,這時會觸發(fā)由當(dāng)前運行進(jìn)程切換到處理此異常的內(nèi)核相關(guān)的程序中,也就是轉(zhuǎn)到了內(nèi)核態(tài)闭翩,比如缺頁異常挣郭。    

3、外圍設(shè)備的中斷

當(dāng)外圍設(shè)備完成用戶請求的操作后疗韵,會向CPU發(fā)出相應(yīng)的中斷信號兑障,這時CPU會暫停執(zhí)行下一條即將要執(zhí)行的指令轉(zhuǎn)而去執(zhí)行與中斷信號對應(yīng)的處理程序,如果先前執(zhí)行的指令是用戶態(tài)下的程序,那么這個轉(zhuǎn)換的過程自然也就發(fā)生了由用戶態(tài)到內(nèi)核態(tài)的切換流译。比如硬盤讀寫操作的完成逞怨,系統(tǒng)會切換到硬盤讀寫的中斷處理程序中執(zhí)行后續(xù)操作等。
 
這3種方式是系統(tǒng)在運行時由用戶態(tài)轉(zhuǎn)到內(nèi)核態(tài)的最主要方式福澡,其中系統(tǒng)調(diào)用可以認(rèn)為是用戶進(jìn)程主動發(fā)起的叠赦,異常和外圍中斷是被動的。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末革砸,一起剝皮案震驚了整個濱河市除秀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌算利,老刑警劉巖册踩,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異效拭,居然都是意外死亡暂吉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進(jìn)店門缎患,熙熙樓的掌柜王于貴愁眉苦臉地迎上來慕的,“玉大人,你說我怎么就攤上這事较锡∫导冢” “怎么了盗痒?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵蚂蕴,是天一觀的道長。 經(jīng)常有香客問我俯邓,道長骡楼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任稽鞭,我火速辦了婚禮鸟整,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘朦蕴。我一直安慰自己甩恼,他們只是感情好桑包,可當(dāng)我...
    茶點故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般踏枣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上书斜,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天牡借,我揣著相機(jī)與錄音,去河邊找鬼。 笑死钳垮,一個胖子當(dāng)著我的面吹牛惑淳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播饺窿,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼歧焦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了肚医?” 一聲冷哼從身側(cè)響起倚舀,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎忍宋,沒想到半個月后痕貌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡糠排,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年舵稠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片入宦。...
    茶點故事閱讀 40,918評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡哺徊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出乾闰,到底是詐尸還是另有隱情落追,我是刑警寧澤,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布涯肩,位于F島的核電站轿钠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏病苗。R本人自食惡果不足惜疗垛,卻給世界環(huán)境...
    茶點故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望硫朦。 院中可真熱鬧贷腕,春花似錦、人聲如沸咬展。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽破婆。三九已至涮总,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間荠割,已是汗流浹背妹卿。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工旺矾, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人夺克。 一個月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓箕宙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親铺纽。 傳聞我的和親對象是個殘疾皇子柬帕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,926評論 2 361

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