操作系統(tǒng)--用戶態(tài)與核心態(tài)

用戶空間與內(nèi)核空間

我們知道現(xiàn)在操作系統(tǒng)都是采用虛擬存儲器,那么對32位操作系統(tǒng)而言调限,它的尋址空間(虛擬存儲空間)為4G(2的32次方)凿宾。操心系統(tǒng)的核心是內(nèi)核,獨立于普通的應用程序纲仍,可以訪問受保護的內(nèi)存空間呀袱,也有訪問底層硬件設備的所有權(quán)限。為了保證用戶進程不能直接操作內(nèi)核郑叠,保證內(nèi)核的安全夜赵,操心系統(tǒng)將虛擬空間劃分為兩部分,一部分為內(nèi)核空間乡革,一部分為用戶空間寇僧。

針對linux操作系統(tǒng)而言摊腋,將最高的1G字節(jié)(從虛擬地址0xC0000000到0xFFFFFFFF),供內(nèi)核使用婉宰,稱為內(nèi)核空間歌豺,而將較低的3G字節(jié)(從虛擬地址0x00000000到0xBFFFFFFF),供各個進程使用心包,稱為用戶空間类咧。

每個進程可以通過系統(tǒng)調(diào)用進入內(nèi)核,因此蟹腾,Linux內(nèi)核由系統(tǒng)內(nèi)的所有進程共享痕惋。于是,從具體進程的角度來看娃殖,每個進程可以擁有4G字節(jié)的虛擬空間值戳。空間分配如下圖所示:


有了用戶空間和內(nèi)核空間炉爆,整個linux內(nèi)部結(jié)構(gòu)可以分為三部分堕虹,從最底層到最上層依次是:硬件-->內(nèi)核空間-->用戶空間。如下圖所示:

需要注意的細節(jié)問題:

  • 內(nèi)核空間中存放的是內(nèi)核代碼和數(shù)據(jù)芬首,而進程的用戶空間中存放的是用戶程序的代碼和數(shù)據(jù)赴捞。不管是內(nèi)核空間還是用戶空間,它們都處于虛擬空間中郁稍。
  • Linux使用兩級保護機制:0級供內(nèi)核使用赦政,3級供用戶程序使用。

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

(1)當一個任務(進程)執(zhí)行系統(tǒng)調(diào)用而陷入內(nèi)核代碼中執(zhí)行時耀怜,稱進程處于內(nèi)核運行態(tài)(內(nèi)核態(tài))恢着。此時處理器處于特權(quán)級最高的(0級)內(nèi)核代碼中執(zhí)行。當進程處于內(nèi)核態(tài)時财破,執(zhí)行的內(nèi)核代碼會使用當前進程的內(nèi)核棧掰派。每個進程都有自己的內(nèi)核棧。
(2)當進程在執(zhí)行用戶自己的代碼時左痢,則稱其處于用戶運行態(tài)(用戶態(tài))靡羡。此時處理器在特權(quán)級最低的(3級)用戶代碼中運行。當正在執(zhí)行用戶程序而突然被中斷程序中斷時抖锥,此時用戶程序也可以象征性地稱為處于進程的內(nèi)核態(tài)亿眠。因為中斷處理程序?qū)⑹褂卯斍斑M程的內(nèi)核棧碎罚。

進程上下文與中斷上下文

程序在執(zhí)行過程中通常有用戶態(tài)和內(nèi)核態(tài)兩種狀態(tài)磅废,CPU對處于內(nèi)核態(tài)根據(jù)上下文環(huán)境進一步細分,因此有了下面三種狀態(tài):

(1)內(nèi)核態(tài)荆烈,運行于進程上下文拯勉,內(nèi)核代表進程運行于內(nèi)核空間竟趾。
(2)內(nèi)核態(tài),運行于中斷上下文宫峦,內(nèi)核代表硬件運行于內(nèi)核空間岔帽。
(3)用戶態(tài),運行于用戶空間导绷。

進程上下文

用戶空間的應用程序犀勒,通過系統(tǒng)調(diào)用,進入內(nèi)核空間妥曲。這個時候用戶空間的進程要傳遞 很多變量贾费、參數(shù)的值給內(nèi)核,內(nèi)核態(tài)運行的時候也要保存用戶進程的一些寄存 器值檐盟、變量等褂萧。所謂的“進程上下文”,可以看作是用戶進程傳遞給內(nèi)核的這些參數(shù)以及內(nèi)核要保存的那一整套的變量和寄存器值和當時的環(huán)境等葵萎。

相對于進程而言导犹,就是進程執(zhí)行時的環(huán)境。具體來說就是各個變量和數(shù)據(jù)羡忘,包括所有的寄存器變量谎痢、進程打開的文件、內(nèi)存信息等壳坪。一個進程的上下文可以分為三個部分:用戶級上下文舶得、寄存器上下文以及系統(tǒng)級上下文。

(1)用戶級上下文: 正文爽蝴、數(shù)據(jù)沐批、用戶堆棧以及共享存儲區(qū);
(2)寄存器上下文: 通用寄存器蝎亚、程序寄存器(IP)九孩、處理器狀態(tài)寄存器(EFLAGS)、棧指針(ESP)发框;
(3)系統(tǒng)級上下文: 進程控制塊task_struct躺彬、內(nèi)存管理信息(mm_struct、vm_area_struct梅惯、pgd宪拥、pte)、內(nèi)核棧铣减。

當發(fā)生進程調(diào)度時她君,進行進程切換就是上下文切換(context switch).操作系統(tǒng)必須對上面提到的全部信息進行切換,新調(diào)度的進程才能運行葫哗。而系統(tǒng)調(diào)用進行的模式切換(mode switch)缔刹。模式切換與進程切換比較起來球涛,容易很多,而且節(jié)省時間校镐,因為模式切換最主要的任務只是切換進程寄存器上下文的切換亿扁。

中斷上下文

硬件通過觸發(fā)信號,導致內(nèi)核調(diào)用中斷處理程序鸟廓,進入內(nèi)核空間从祝。這個過程中,硬件的 一些變量和參數(shù)也要傳遞給內(nèi)核引谜,內(nèi)核通過這些參數(shù)進行中斷處理哄褒。所謂的“ 中斷上下文”,其實也可以看作就是硬件傳遞過來的這些參數(shù)和內(nèi)核需要保存的一些其他環(huán)境(主要是當前被打斷執(zhí)行的進程環(huán)境)煌张。中斷時呐赡,內(nèi)核不代表任何進程運行,它一般只訪問系統(tǒng)空間骏融,而不會訪問進程空間链嘀,內(nèi)核在中斷上下文中執(zhí)行時一般不會阻塞。

參考文章

用戶空間與內(nèi)核空間档玻,進程上下文與中斷上下文[總結(jié)]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末怀泊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子误趴,更是在濱河造成了極大的恐慌霹琼,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凉当,死亡現(xiàn)場離奇詭異枣申,居然都是意外死亡,警方通過查閱死者的電腦和手機看杭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門忠藤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人楼雹,你說我怎么就攤上這事模孩。” “怎么了贮缅?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵榨咐,是天一觀的道長。 經(jīng)常有香客問我谴供,道長块茁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任憔鬼,我火速辦了婚禮龟劲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘轴或。我一直安慰自己昌跌,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布照雁。 她就那樣靜靜地躺著蚕愤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪饺蚊。 梳的紋絲不亂的頭發(fā)上萍诱,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音污呼,去河邊找鬼裕坊。 笑死,一個胖子當著我的面吹牛燕酷,可吹牛的內(nèi)容都是我干的籍凝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼苗缩,長吁一口氣:“原來是場噩夢啊……” “哼饵蒂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起酱讶,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤退盯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后泻肯,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體渊迁,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年灶挟,在試婚紗的時候發(fā)現(xiàn)自己被綠了宫纬。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡膏萧,死狀恐怖漓骚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情榛泛,我是刑警寧澤蝌蹂,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站曹锨,受9級特大地震影響孤个,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沛简,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一齐鲤、第九天 我趴在偏房一處隱蔽的房頂上張望斥废。 院中可真熱鬧,春花似錦给郊、人聲如沸牡肉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽统锤。三九已至,卻和暖如春炭庙,著一層夾襖步出監(jiān)牢的瞬間饲窿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工焕蹄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留逾雄,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓腻脏,卻偏偏與公主長得像嘲驾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子迹卢,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

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

  • word直接復制來了辽故,格式就不改了。至于這門課怎么復習腐碱,只要平時實驗都認真完成誊垢、報告認真寫,平時分都很高症见;考試的話...
    Jozhn閱讀 4,551評論 0 8
  • 又來到了一個老生常談的問題喂走,應用層軟件開發(fā)的程序員要不要了解和深入學習操作系統(tǒng)呢? 今天就這個問題開始谋作,來談談操...
    tangsl閱讀 4,125評論 0 23
  • 他瞥了一眼淺色茶幾上零零散散放置著的幾個核桃芋肠,不禁蹙眉。 它仿佛被裹著一層鋼筋鐵骨遵蚜,裂了幾道小口子帖池,褐色外套,包裹...
    愚怵閱讀 589評論 6 6
  • 開始慢慢覺得吭净,人生中遇到一些人和事都是緣分睡汹, 我想象不到如果我不學這個專業(yè),不在這個寢室會是怎么樣的寂殉, 所以開始變...
    小琳仔呀閱讀 107評論 0 0
  • 序 夜幕,漸漸垂掛下來兼呵,一切,變得朦朧恍惚腊敲,我關(guān)閉房門击喂,拉上厚重窗簾,頓時碰辅,這個空間懂昂,似與世隔絕般,打開淺紫...
    戀溪閱讀 210評論 0 0