新聞中心
linux內(nèi)核態(tài)和用戶態(tài)的區(qū)別?
主要區(qū)別:是代碼執(zhí)行的層級(jí);性能損失來(lái)源于緩沖區(qū)的復(fù)制。

成都創(chuàng)新互聯(lián)公司專注于企業(yè)網(wǎng)絡(luò)營(yíng)銷推廣、網(wǎng)站重做改版、濟(jì)陽(yáng)網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為濟(jì)陽(yáng)等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
首先內(nèi)核態(tài)和用戶態(tài)的堆和棧是不一樣的,所以必然會(huì)發(fā)生寄存器狀態(tài)的切換,其實(shí)單純切換寄存器影響倒不是特別大,大概就是會(huì)影響 CPU 方面的一些比如指令流水,分支預(yù)測(cè)等
最大的問(wèn)題是用戶態(tài)程序發(fā)生系統(tǒng)調(diào)用相當(dāng)于把控制權(quán)交給內(nèi)核,內(nèi)核甚至?xí)儕Z當(dāng)前進(jìn)程的執(zhí)行,去執(zhí)行另一個(gè)進(jìn)程,那這個(gè)時(shí)候要發(fā)生 TLB flush,這個(gè)對(duì)性能影響非常大不說(shuō),整個(gè)進(jìn)程的執(zhí)行都會(huì)停止
用戶態(tài)如何訪問(wèn)寄存器空間?
一般而言,訪問(wèn)寄存器需要在內(nèi)核態(tài)完成。兩種方式:一種是IO端口,一種是內(nèi)存映射。如果內(nèi)核把寄存器空間映射的到了內(nèi)核地址空間,進(jìn)而又把內(nèi)核地址空間映射到了進(jìn)程地址空間的話,應(yīng)用程序就可以在用戶態(tài)通過(guò)訪問(wèn)自己進(jìn)程空間的映射來(lái)訪問(wèn)寄存器了。要做到這一點(diǎn),一般需要驅(qū)動(dòng)程序和內(nèi)核的配合。
用戶級(jí)線程和內(nèi)核支持線程有何區(qū)別?
用戶級(jí)線程和內(nèi)核級(jí)線程的區(qū)別: (1)內(nèi)核支持線程是OS內(nèi)核可感知的,而用戶級(jí)線程是OS內(nèi)核不可感知的。 (2)用戶級(jí)線程的創(chuàng)建、撤消和調(diào)度不需要OS內(nèi)核的支持,是在語(yǔ)言(如Java)這一級(jí)處理的;而內(nèi)核支持線程的創(chuàng)建、撤消和調(diào)度都需OS內(nèi)核提供支持,而且與進(jìn)程的創(chuàng)建、撤消和調(diào)度大體是相同的。 (3)用戶級(jí)線程執(zhí)行系統(tǒng)調(diào)用指令時(shí)將導(dǎo)致其所屬進(jìn)程被中斷,而內(nèi)核支持線程執(zhí)行系統(tǒng)調(diào)用指令時(shí),只導(dǎo)致該線程被中斷。 (4)在只有用戶級(jí)線程的系統(tǒng)內(nèi),CPU調(diào)度還是以進(jìn)程為單位,處于運(yùn)行狀態(tài)的進(jìn)程中的多個(gè)線程,由用戶程序控制線程的輪換運(yùn)行;在有內(nèi)核支持線程的系統(tǒng)內(nèi),CPU調(diào)度則以線程為單位,由OS的線程調(diào)度程序負(fù)責(zé)線程的調(diào)度。 (5)用戶級(jí)線程的程序?qū)嶓w是運(yùn)行在用戶態(tài)下的程序,而內(nèi)核支持線程的程序?qū)嶓w則是可以運(yùn)行在任何狀態(tài)下的程序。
操作系統(tǒng)內(nèi)核的內(nèi)核分類?
單內(nèi)核(Monolithic kernel),是個(gè)很大的進(jìn)程。它的內(nèi)部又能夠被分為若干模塊(或是層次或其他)。但是在運(yùn)行的時(shí)候,它是個(gè)單獨(dú)的二進(jìn)制大映象。其模塊間的通訊是通過(guò)直接調(diào)用其他模塊中的函數(shù)實(shí)現(xiàn)的,而不是消息傳遞。
單內(nèi)核結(jié)構(gòu)在硬件之上定義了一個(gè)高階的抽象界面,應(yīng)用一組原語(yǔ)(或者叫系統(tǒng)調(diào)用)來(lái)實(shí)現(xiàn)操作系統(tǒng)的功能,例如進(jìn)程管理,文件系統(tǒng),和存儲(chǔ)管理等等,這些功能由多個(gè)運(yùn)行在核心態(tài)的模塊來(lái)完成。
盡管每一個(gè)模塊都是單獨(dú)地服務(wù)這些操作,內(nèi)核代碼是高度集成的,而且難以編寫正確。因?yàn)樗械哪K都在同一個(gè)內(nèi)核空間上運(yùn)行,一個(gè)很小的bug都會(huì)使整個(gè)系統(tǒng)崩潰。然而,如果開(kāi)發(fā)順利,單內(nèi)核結(jié)構(gòu)就可以從運(yùn)行效率上得到好處。
很多現(xiàn)代的單內(nèi)核結(jié)構(gòu)內(nèi)核,如Linux和FreeBSD內(nèi)核,能夠在運(yùn)行時(shí)將模塊調(diào)入執(zhí)行,這就可以使擴(kuò)充內(nèi)核的功能變得更簡(jiǎn)單,也可以使內(nèi)核的核心部分變得更簡(jiǎn)潔。
單內(nèi)核結(jié)構(gòu)是非常有吸引力的一種設(shè)計(jì),由于在同一個(gè)地址空間上實(shí)現(xiàn)所有低級(jí)操作的系統(tǒng)控制代碼的復(fù)雜性的效率會(huì)比在不同地址空間上實(shí)現(xiàn)更高些。 單核結(jié)構(gòu)正趨向于容易被正確設(shè)計(jì),所以它的發(fā)展會(huì)比微內(nèi)核結(jié)構(gòu)更迅速些。
單內(nèi)核結(jié)構(gòu)的例子:傳統(tǒng)的UNIX內(nèi)核----例如伯克利大學(xué)發(fā)行的版本,Linux內(nèi)核。 微內(nèi)核(Microkernelkernel)結(jié)構(gòu)由一個(gè)非常簡(jiǎn)單的硬件抽象層和一組比較關(guān)鍵的原語(yǔ)或系統(tǒng)調(diào)用組成,這些原語(yǔ)僅僅包括了建立一個(gè)系統(tǒng)必需的幾個(gè)部分,如線程管理,地址空間和進(jìn)程間通信等。
到此,以上就是小編對(duì)于的問(wèn)題就介紹到這了,希望這4點(diǎn)解答對(duì)大家有用。
新聞標(biāo)題:linux內(nèi)核態(tài)和用戶態(tài)的區(qū)別?windows內(nèi)核態(tài)用戶態(tài)
網(wǎng)站URL:http://www.fisionsoft.com.cn/article/djgdosc.html


咨詢
建站咨詢
