• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            大城小魔

            天下難事,必作于易;天下大事,必作于細(xì)

              C++博客 ::  :: 聯(lián)系 :: 聚合  :: 管理

            公告


            最新評(píng)論

            第一章:內(nèi)存管理機(jī)制

             

            第一節(jié):機(jī)制與策略


            內(nèi)存的訪問(wèn)和操作涉及了大量分門別類的內(nèi)容。必須施以措施保證訪問(wèn)有效內(nèi)存,并對(duì)應(yīng)正確的實(shí)際物理存儲(chǔ)器。如果在內(nèi)存保護(hù)模式下,處理器還應(yīng)當(dāng)負(fù)責(zé)確保執(zhí)行中的任務(wù)不去訪問(wèn)禁止訪問(wèn)的內(nèi)存。多任務(wù)操作系統(tǒng)就是基于內(nèi)存保護(hù)服務(wù)構(gòu)建的系統(tǒng)。如果使用了虛擬內(nèi)存,系統(tǒng)會(huì)維護(hù)一個(gè)重要的內(nèi)存信息記錄,用以追蹤記錄任務(wù)所屬的硬盤扇區(qū)(譯注:即是虛擬內(nèi)存)它比你想象的要復(fù)雜得多,并且每個(gè)環(huán)節(jié)都要求萬(wàn)無(wú)一失。

                注解在 Intel平臺(tái)上,如果內(nèi)存子系統(tǒng)設(shè)置了錯(cuò)誤的數(shù)據(jù)結(jié)構(gòu),處理器將其作為所謂的(triple fault)三次錯(cuò)誤來(lái)處理。所謂Intel平臺(tái)上的(double fault)二次錯(cuò)誤是指當(dāng)處理器去處理已發(fā)生的異常錯(cuò)誤時(shí)再次發(fā)生了異常錯(cuò)誤。當(dāng)(double fault)二級(jí)錯(cuò)誤處理失敗,三級(jí)錯(cuò)誤產(chǎn)生,系統(tǒng)置入停機(jī)過(guò)程狀態(tài)。一般說(shuō)來(lái),Intel系統(tǒng)如果發(fā)生這種類型的錯(cuò)誤,會(huì)重啟系統(tǒng)。

                為了保證執(zhí)行速度,處理器廠商在芯片內(nèi)部賦予了高級(jí)內(nèi)存管理的能力。這使操作系統(tǒng)商得以將大量,單調(diào)乏味,冗余的內(nèi)存管理工作交由處理器去完成,處理器內(nèi)部可以以更快的速度處理各種錯(cuò)誤校驗(yàn)。但是這同樣也產(chǎn)生了操作系統(tǒng)商在一定程度上限定于特定的硬件平臺(tái)的副作用。

                為提升了性能,盡管失去了移植性,但是仍然是很值得的。如果操作系統(tǒng)完全去擔(dān)當(dāng)實(shí)現(xiàn)了比如分頁(yè),分段處理功能的責(zé)任,很明顯那會(huì)比得益于從處理器內(nèi)建(內(nèi)存管理)功能的那種方案要慢得多。想象如果真要在那種有操作系統(tǒng)實(shí)現(xiàn)的內(nèi)存保護(hù)模式的操作系統(tǒng)上,玩類似Quake3那樣密集圖形的實(shí)時(shí)游戲,游戲根本沒(méi)法玩。

                 注解:你或許會(huì)問(wèn),我是否能提供一個(gè)測(cè)定的數(shù)值說(shuō)明操作系統(tǒng)到底會(huì)變得多慢。我承認(rèn)我給出了一些揮舞胳膊(arm-waving)的結(jié)論。根據(jù)1993年Wahbe.Lucoo.et al(請(qǐng)參見(jiàn)“引用”章節(jié))的一篇論文指出。他們使用了一種稱為“沙盒”(sandboxing)的技術(shù),將應(yīng)用程序中的代碼模塊分離隔離起來(lái)。使用該技術(shù)以后,帶來(lái)了4%的執(zhí)行速度的提升。你能夠想象要添加虛擬內(nèi)存技術(shù)以及權(quán)限訪問(wèn)方案的這樣一個(gè)龐大的結(jié)構(gòu),將會(huì)給你帶來(lái)什么。


            題外話

            揮舞胳膊(arm-waving)的結(jié)論,是一種沒(méi)有經(jīng)過(guò)嚴(yán)謹(jǐn)數(shù)學(xué)表達(dá)方式求證過(guò)的一般建議。數(shù)學(xué)表達(dá)方式的好處是可以對(duì)完全含糊不清的事物做出定論:結(jié)論只有是或者否。對(duì)于揮舞胳膊(arm-waving)的結(jié)論來(lái)說(shuō)趨向于避開十分嚴(yán)格的邏輯推理更偏向于借助直覺(jué)作為判別依據(jù)。這樣推理是最值得懷疑的,不僅因?yàn)橹庇X(jué)常常是錯(cuò)誤的,同樣也因?yàn)橐罁?jù)直覺(jué)的判別是模棱兩可的。例如,爭(zhēng)論世界是否是平的人趨向于依賴揮舞胳膊(arm-waving)方式的結(jié)論。



                  
            注解:當(dāng)初Dave Cutle在創(chuàng)造Windows NT時(shí),大部分的注意力都集中在操作系統(tǒng)的硬件抽象層(HAL)上。該想法指操作系統(tǒng)盡可能的和硬件分離,該獨(dú)立的代碼層位于底層硬件。通過(guò)這樣的設(shè)計(jì)有助于解決我在幾分鐘前提到的硬件依賴的問(wèn)題。NT平臺(tái)真的可以運(yùn)行在兩類面向UNIX的硬件平臺(tái)之上了,Dave也因此功成名就。這其中包括 Digital的 Alpha處理器和MPS RISC的處理器。問(wèn)題是微軟公司無(wú)法在硬件平臺(tái)上施展他們的一些高層的技術(shù),如DCOM技術(shù)不能在Intel以外的硬件平臺(tái)上運(yùn)行,對(duì)于基于二進(jìn)制標(biāo)準(zhǔn)的對(duì)象技術(shù)來(lái)說(shuō)這樣的情況更加頻繁出現(xiàn)。

             

             勝利總是屬于偏好運(yùn)行速度的解決方案。一位前任Control Data工程師告訴我,當(dāng)Seymour Cray 在研發(fā)6600時(shí),他碰巧得到一塊比他當(dāng)時(shí)使用的更快的一種芯片。可是該芯片總是出現(xiàn)意想不到的運(yùn)算錯(cuò)誤。Seymour 為該芯片搭建了一系列精巧的運(yùn)行環(huán)境。公司執(zhí)行高管們沒(méi)有反對(duì)Seymour的做法,不想打擾這位作為大概是數(shù)據(jù)控制中心最有價(jià)值的技術(shù)非凡的工程師。不幸的是,他們的倉(cāng)庫(kù)里堆積了滿滿的最初的那種老芯片。不能夠丟棄掉那些老芯片,必須設(shè)法都用上他們,于是誕生了CDC300,一個(gè)比6600運(yùn)行速度慢并且廉價(jià)的產(chǎn)品。
            我的觀點(diǎn):Seymour 眷顧更快的芯片,即使它們不是那么穩(wěn)定。
            速度原則:
                追求速度的趨勢(shì)結(jié)果使得現(xiàn)有的商業(yè)操作系統(tǒng)都具備自己的內(nèi)存管理服務(wù)并深深植根于硬件所規(guī)定的數(shù)據(jù)結(jié)構(gòu)和協(xié)議標(biāo)準(zhǔn)。處理器提供基本的內(nèi)存管理功能集。這些功能保證功能機(jī)制設(shè)置的平衡。它取決于操作系統(tǒng)是否決定使用處理的內(nèi)存管理機(jī)制。如果是,則使用處理器的內(nèi)存管理。操作系統(tǒng)創(chuàng)建這樣的策略來(lái)權(quán)衡和控制內(nèi)存管理機(jī)制。

            下一章節(jié),我會(huì)從硬件的角度來(lái)解釋,硬件如何提供內(nèi)存訪問(wèn)和控制的機(jī)制。


             




            Memory Management:Alogorithms and Implementation in C/C++
            by Bill Blunden

            Wordware Publishing © 2003 (360 pages)

            This book presents several concrete implementations of garbage collection and explicit memory management algorithms.

            原書下載 地址

            posted on 2008-11-27 14:03 momor 閱讀(1575) 評(píng)論(1)  編輯 收藏 引用 所屬分類: 翻譯

            Feedback

            # re: C/C++ 內(nèi)存管理算法與實(shí)現(xiàn)--第一章:內(nèi)存管理機(jī)制 (翻譯連載) 2008-11-28 01:16 陳梓瀚(vczh)
            這本書我也讀了,后來(lái)在我自己的腳本引擎里面實(shí)現(xiàn)了一次mark-compact。  回復(fù)  更多評(píng)論
              

            欧美日韩久久中文字幕| 久久国产成人亚洲精品影院| 无码人妻少妇久久中文字幕 | 亚洲精品国产综合久久一线| 国产精品成人久久久久三级午夜电影| 久久se精品一区二区影院| 亚洲国产精品无码久久久久久曰 | 国产精品99久久99久久久| 久久香蕉国产线看观看99| 久久国产成人午夜AV影院| 久久精品中文字幕无码绿巨人| 国内精品久久久久久中文字幕| 2020久久精品亚洲热综合一本| 国产精品九九九久久九九| 欧美一区二区久久精品| 一级做a爰片久久毛片人呢| 国产免费久久精品99re丫y| 99久久精品国产高清一区二区| 久久人人爽人人精品视频| 精品久久久久久亚洲| 亚洲精品乱码久久久久久蜜桃图片| 99久久精品费精品国产| A狠狠久久蜜臀婷色中文网| 久久人人爽人人爽人人av东京热| 久久久久国产精品| 久久婷婷激情综合色综合俺也去| 无夜精品久久久久久| 精品久久久无码中文字幕天天 | 久久久久九九精品影院| 久久中文娱乐网| 久久精品国产91久久综合麻豆自制| 亚洲欧美日韩中文久久| 一级A毛片免费观看久久精品| 精品视频久久久久| 国产精品热久久无码av| 一本久久a久久精品综合夜夜 | 青青草国产精品久久| 俺来也俺去啦久久综合网| 91精品国产综合久久久久久| 国产aⅴ激情无码久久| 2021国产精品午夜久久|