偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Linux為什么區(qū)分內(nèi)核空間和用戶(hù)空間?

系統(tǒng) Linux
程序如果要被CPU執(zhí)行,就得編譯成CPU可以執(zhí)行的指令,一大堆的程序就變成了一堆的指令。

一個(gè)操作系統(tǒng)它也是一堆程序組成的,可以想象CPU的指令是很多的,但是這么多的指令中,有些指令涉及到系統(tǒng)底層的東西,如果有些指令錯(cuò)用或者使用不當(dāng)是非常危險(xiǎn)的,比如清內(nèi)存、設(shè)置時(shí)鐘、修改用戶(hù)訪問(wèn)權(quán)限、分配系統(tǒng)資源等等,可能導(dǎo)致系統(tǒng)崩潰。

CPU將這些指令進(jìn)行了分類(lèi),分為特權(quán)指令和非特權(quán)指令,不讓所有程序都能使用所有指令,如果所有程序都能使用,那系統(tǒng)崩潰就會(huì)變得非常常見(jiàn)了。

操作系統(tǒng)的核心是內(nèi)核,它是獨(dú)立于普通的應(yīng)用程序,負(fù)責(zé)管理系統(tǒng)的進(jìn)程、內(nèi)存、設(shè)備驅(qū)動(dòng)程序、文件和網(wǎng)絡(luò)系統(tǒng),決定著系統(tǒng)的性能和穩(wěn)定性,所以一定要保證內(nèi)核的安全。

為了保護(hù)內(nèi)核的安全,操作系統(tǒng)一般都限制用戶(hù)進(jìn)程不能直接操作內(nèi)核,在32位操作系統(tǒng)總的地址空間4G(2^32 = 4GB),實(shí)現(xiàn)這個(gè)限制的方式就是操作系統(tǒng)將總的地址空間分為兩個(gè)部分,對(duì)于Linux操作系統(tǒng):

1. 高位的1G空間(0xC000 0000 - 0xFFFF FFFF)分配給內(nèi)核,稱(chēng)為內(nèi)核空間,內(nèi)核程序運(yùn)行在內(nèi)核空間,對(duì)應(yīng)的進(jìn)程就處于內(nèi)核態(tài)(管態(tài))。

2. 另外3G空間(0x0000 0000 - 0xBFFF FFFF)分配給用戶(hù)使用,稱(chēng)為用戶(hù)空間,用戶(hù)程序運(yùn)行在用戶(hù)空間,對(duì)應(yīng)的進(jìn)程處于用戶(hù)態(tài)(目態(tài))。

引用之前寫(xiě)的一篇文章(你該知道你寫(xiě)的程序的內(nèi)存布局)的圖

總之,有1G的內(nèi)核空間是每個(gè)進(jìn)程共享的,剩下的3G是進(jìn)程自己使用的。

在內(nèi)核態(tài)下,CPU可以執(zhí)行指令系統(tǒng)的全集,也就是說(shuō)內(nèi)核態(tài)進(jìn)程可以調(diào)用系統(tǒng)的一切資源,但是特權(quán)指令只能在內(nèi)核態(tài)下執(zhí)行,它不直接提供給用戶(hù)使用,用戶(hù)態(tài)下只能使用非特權(quán)指令,也就是說(shuō)用戶(hù)態(tài)進(jìn)程只能執(zhí)行簡(jiǎn)單運(yùn)算,不能直接調(diào)用系統(tǒng)資源。

那么CPU如何知道當(dāng)前是否可以使用特權(quán)指令?

有一個(gè)標(biāo)志寄存器,又稱(chēng)程序狀態(tài)字寄存器PSW(Program Status Word),有一個(gè)標(biāo)志位來(lái)標(biāo)識(shí)處理器當(dāng)前處于哪一個(gè)狀態(tài),比如0是處于用戶(hù)態(tài),1是處于內(nèi)核態(tài),有了這個(gè)狀態(tài)就能判斷該使用什么指令。

Linux操作系統(tǒng)通過(guò)區(qū)分內(nèi)核空間和用戶(hù)空間的這種設(shè)計(jì),將操作系統(tǒng)代碼和用戶(hù)程序代碼分開(kāi),這樣即使在某一個(gè)應(yīng)用程序出錯(cuò),也不會(huì)影響到操作系統(tǒng),再說(shuō),Linux操作系統(tǒng)是多任務(wù)系統(tǒng),其它應(yīng)用程序不也還能運(yùn)行。

現(xiàn)代操作系統(tǒng)基本上都是分內(nèi)核空間和用戶(hù)空間的做法,來(lái)保護(hù)操作系統(tǒng)自身的安全性和穩(wěn)定性,這也是區(qū)分內(nèi)核空間和用戶(hù)空間的本質(zhì)。


責(zé)任編輯:華軒 來(lái)源: 今日頭條
相關(guān)推薦

2021-01-14 09:37:20

內(nèi)核空間用戶(hù)

2021-01-08 05:59:39

Linux應(yīng)用程序Linux系統(tǒng)

2017-08-24 11:00:56

Linux用戶(hù)空間內(nèi)核空間

2021-03-22 11:43:07

Linux運(yùn)維Linux系統(tǒng)

2016-08-10 12:52:31

2012-05-21 17:02:19

Linux審計(jì)

2009-09-07 09:20:34

2010-05-13 09:45:26

Linux地址空間

2009-12-17 15:18:47

2009-10-22 13:06:00

Linux磁盤(pán)管理

2018-05-18 08:43:27

Linux內(nèi)存空間

2009-12-07 09:31:23

Linux系統(tǒng)調(diào)用表地址

2019-08-26 19:24:55

Podman容器Linux

2023-02-13 15:03:33

JDKJavaHotSpot

2019-01-29 10:10:09

Linux內(nèi)存進(jìn)程堆

2022-03-03 18:39:01

Harmonyioremap鴻蒙

2019-07-10 12:40:29

Linux虛擬地址空間物理地址空間

2023-09-28 07:34:23

JDK廢棄永久代元空間

2023-04-13 08:09:35

操作系統(tǒng)虛擬地址內(nèi)存

2009-11-24 17:20:48

Oracle查看用戶(hù)表
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)