久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

微內(nèi)核與單內(nèi)核

 guitarhua 2012-10-26
微內(nèi)核與單內(nèi)核
2010年06月20日 欄目:測試者 作者:火志溟 瀏覽(924) 評論(0)

    在之前的一篇內(nèi)容里,,我提到了關(guān)于內(nèi)核(kernel)的問題,,也就是宏內(nèi)核與微內(nèi)核的問題。我也提到Minix和Linux的兩位大神曾經(jīng)對這個(gè)問題進(jìn)行過爭論,。我在這里簡單說一下我對宏內(nèi)核與微內(nèi)核的自己的認(rèn)識,。

    首先,微內(nèi)核在英文中大概是Microkernel,,而宏內(nèi)核大概是Monolithic kernel或簡寫位Monokernel,。所以宏內(nèi)核應(yīng)該更準(zhǔn)確的翻譯為“單內(nèi)核”,不過因?yàn)槠鋫€(gè)頭很大,,所以稱為“宏(大)內(nèi)核”或“巨(大)內(nèi)核” 也是形象的,,并且這種叫法大家也都在叫。

    微內(nèi)核估計(jì)是大部分現(xiàn)代操作系統(tǒng)都在采用的結(jié)構(gòu),,包括各種Unix(含Minix,、BSD等),含GNU一直想開發(fā)出來的Hurd,,BSD中含Mac OS X,,微軟也說Windows同樣是微內(nèi)核(但好像有些研究內(nèi)核的人不信微軟的這個(gè)說法)。而單內(nèi)核,,目前估計(jì)就Linux比較有名了,。

    兩種內(nèi)核的結(jié)構(gòu)決定了它們之間噸位的巨大差別。據(jù)說這種噸位的差別真的很大,。

    對于一個(gè)操作系統(tǒng),,怎么看哪些東西是屬于內(nèi)核的,哪些不是屬于內(nèi)核的,。只要看哪些是運(yùn)行在內(nèi)核空間(Kernel Space),,哪些是運(yùn)行在用戶空間(User Space),。這兩個(gè)空間可以簡單解釋為內(nèi)存上的兩個(gè)不同的區(qū)域。內(nèi)核空間中代碼有更大的權(quán)限去訪問硬件,,但可使用的內(nèi)存有限,,并且為了保證安全(畢竟是 直接與硬件往來)還有其他的諸多限制。用戶空間中的代碼,,通常就是一個(gè)個(gè)我們看到的線程或進(jìn)程的東西,,各個(gè)進(jìn)程、線程通過內(nèi)核空間中的代碼進(jìn)行調(diào)度或傳遞 數(shù)據(jù),,它們基本無法直接訪問硬件,,但是可以無限制使用內(nèi)存,其他限制也很小,。

    微內(nèi)核的設(shè)計(jì)思路就是,,除了是必須放在內(nèi)核空間中運(yùn)行的東西,否則就讓它去用戶空間,。內(nèi)核只做最最簡單的工作:訪問硬件,,進(jìn)行個(gè)進(jìn)程間通訊。所以,,一個(gè) 微內(nèi)核的操作系統(tǒng),,其實(shí)是一個(gè)很小功能的內(nèi)核,加上一堆程序,,比如文件系統(tǒng),、顯卡驅(qū)動、網(wǎng)卡驅(qū)動,、聲卡驅(qū)動……這些程序都是普通的進(jìn)程,。

    單內(nèi)核的設(shè)計(jì)思路就是,既然都是和硬件有關(guān)的東西,,那么我就要讓它少點(diǎn)進(jìn)程間通信的額外開銷,,于是把它們都放在內(nèi)核空間中。于是一個(gè)單內(nèi)核里就有無數(shù)的東西,,比如文件系統(tǒng),、顯卡驅(qū)動、網(wǎng)卡驅(qū)動,、聲卡驅(qū)動……這些程序全都是內(nèi)核的一部分,。

    從簡單的思路描述上來看,單內(nèi)核的開銷會少一些,,所以運(yùn)行效率會高一些,。而微內(nèi)核看起來應(yīng)該更靈活一些,而恰當(dāng)?shù)姆峙涫裁礀|西在內(nèi)核空間中,也可以減少開支提高其運(yùn)行的效率(混合內(nèi)核),。

    微內(nèi)核的確是靈活,,這點(diǎn)非常肯定,。內(nèi)核只需要確定出一套標(biāo)準(zhǔn)(類似API),,你隨便改周圍的一切都可以,都不會相互影響,。哪怕改內(nèi)核,,只要不改標(biāo)準(zhǔn),周 圍的一切都可以不改變,。內(nèi)核看起來穩(wěn)定性也高,,畢竟周圍的一切都在進(jìn)程中,,哪一部分崩潰,,也只是會影響到和這個(gè)進(jìn)程有關(guān)的東西。

    那么單內(nèi)核的確就不怎么靈活了,,改一點(diǎn)點(diǎn)東西,,整個(gè)內(nèi)核就要重新編譯。而穩(wěn)定性呢,,不管哪個(gè)地方出問題,,整個(gè)內(nèi)核就全崩,而內(nèi)核全崩,,電腦也就全崩了,。

    上面兩段,就是微內(nèi)核支持者的論據(jù),。也就是塔能鮑姆·教授與李納斯·托瓦茲所爭論的焦點(diǎn),。

    但是,GNU自己的內(nèi)核Hurd為什么這么難開發(fā)呢,?單內(nèi)核作為一個(gè)整體,,某一部分不正常很容易發(fā)現(xiàn)并調(diào)試。而微內(nèi)核在這方面就比較難一些,,Hurd進(jìn)展緩慢據(jù)說就是這么回事,。

    Linux的內(nèi)核是什么樣子的呢?顯然它是單內(nèi)核,。不過它估計(jì)是前所未有最為先進(jìn)的一種單內(nèi)核,。微內(nèi)核為了達(dá)到減少開銷而向單內(nèi)核傾斜讓內(nèi)核管理較多的東西。而Linux作為單內(nèi)核也在靈活性方面向微內(nèi)核傾斜,。

    Linux里建立了一個(gè)通用文件系統(tǒng)接口,,保證它能很容易的使用多種文件系統(tǒng)(Linux支持的文件系統(tǒng)大概有幾十種)。Linux把內(nèi)核的各個(gè)部分進(jìn) 行了模塊化,它們可以靜態(tài)編譯進(jìn)內(nèi)核中去,,也可以不編譯進(jìn)內(nèi)核中,。當(dāng)需要這個(gè)模塊的時(shí)候,Linux可以動態(tài)的載入這些模塊來使用,。當(dāng)這些模塊不被需要的 時(shí)候,,Linux又可以動態(tài)卸載它們。這很像微內(nèi)核,,不過Linux的這些模塊都是運(yùn)行在內(nèi)核空間的而不是用戶空間,。不過其實(shí)也挺麻煩的。

    從什么地方能看出Linux的這種模塊化設(shè)計(jì)呢,?Fedora 13升級的時(shí)候(其他Linux發(fā)行版也應(yīng)該差不多),,當(dāng)執(zhí)行yum update的時(shí)候,如果恰好需要升級內(nèi)核的時(shí)候,。一個(gè)kernel需要升級,,然后你會發(fā)現(xiàn)跟著有kmod開頭的幾個(gè)文件跟著升級,版本號和kernel 的一樣,。這些kmod就是模塊,。或者你用nVidia的顯卡,,在nVidia網(wǎng)站上下載驅(qū)動(那個(gè)run擴(kuò)展名的),,你會發(fā)現(xiàn),只要換kernel,,你的 驅(qū)動就在重新安裝一遍,,nVidia驅(qū)動的內(nèi)核部分要重新編譯。雖然模塊可以動態(tài)裝載卸載,,但是可以看出,,只要內(nèi)核一變,所有的東西都要重新編譯,。

    嗯,,現(xiàn)在好像也沒有誰再爭兩種內(nèi)核的優(yōu)缺點(diǎn)了。畢竟微內(nèi)核中有執(zhí)行效率非常高的內(nèi)核(L4),,單內(nèi)核中也有靈活性很高的內(nèi)核(Linux),。

    OK,很和諧的結(jié)尾,。

 

    推薦一本書:《Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)(第二版)》(Linux Kernel Development),,Robert Love著,機(jī)械工業(yè)出版社出版中文版,。這本書基于kernel 2.6.x,。簡單翻翻都很有意思,。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多