青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

大城小魔

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

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

公告


最新評(píng)論

C/C++ 內(nèi)存管理算法與實(shí)現(xiàn)--第一章:地址線和總線 (翻譯連載)

第四節(jié):Intel奔騰CPU構(gòu)架   

你已經(jīng)了解處理器如何從內(nèi)存讀入和寫(xiě)入數(shù)據(jù)。然而,大多數(shù)的處理器同樣支持兩種高級(jí)內(nèi)存管理機(jī)制:分段和分頁(yè)。所謂分段是指將計(jì)算機(jī)的地址空間劃分為特定的區(qū)域。使用分段技術(shù)可以將內(nèi)存劃分為獨(dú)立的區(qū)域,這樣應(yīng)用程序之間彼此獨(dú)立不會(huì)產(chǎn)生沖突。分段提供了內(nèi)存保護(hù)的機(jī)能。可以創(chuàng)建不帶內(nèi)存保護(hù)的內(nèi)存段,但是這樣做并不會(huì)帶來(lái)什么好處。

分段結(jié)構(gòu)帶來(lái)的內(nèi)存保護(hù)使得每個(gè)應(yīng)用程序都至少分配到一個(gè)內(nèi)存段。大型的應(yīng)用程序通常具有好幾個(gè)內(nèi)存段。此外操作系統(tǒng)同樣具有一系列屬于自己的特定內(nèi)存 段。這些系統(tǒng)的內(nèi)存段設(shè)置了讀寫(xiě)的權(quán)限明細(xì),以便創(chuàng)建關(guān)于誰(shuí)可以獲得讀寫(xiě)權(quán)限的策略。一般說(shuō)來(lái),操作系統(tǒng)的代碼段以最高權(quán)限執(zhí)行,應(yīng)用程序裝載到較低權(quán)限 的內(nèi)存段中。


圖1.5

分頁(yè)是實(shí)現(xiàn)虛擬內(nèi)存的方法之一。由DRAM提供的物理內(nèi)存和從硬盤(pán)分配用于模擬DRAM的內(nèi)存一起合并為一個(gè)更大的集合內(nèi)存空間。如果啟動(dòng)了分頁(yè)機(jī)制,處理器的可尋址的最大字節(jié)數(shù)稱之為虛擬內(nèi)存地址空間。要弄明白這一切的關(guān)鍵是:虛擬內(nèi)存地址空間中的字節(jié)的地址不再跟之前處理器放置在地址總線上的地址一樣了。這意味著,必須創(chuàng)建轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)和轉(zhuǎn)換代碼,以便將虛擬地址空間里的字節(jié)映射到物理內(nèi)存的一個(gè)字節(jié)上。(不必關(guān)心數(shù)據(jù)是保存在DRAM還是硬盤(pán)上)
當(dāng)必須的分頁(yè)構(gòu)造完畢,虛擬內(nèi)存空間便劃分為了稱為頁(yè)面(pages)的小區(qū)域。操作系統(tǒng)會(huì)判定物理內(nèi)存中運(yùn)行使用機(jī)率低的數(shù)據(jù),將這些物理內(nèi)存中的數(shù)據(jù) 以分頁(yè)的形式寫(xiě)入到硬盤(pán)中。如果分段機(jī)制被啟用,薄記(bookkeeping)還要執(zhí)行給定內(nèi)存頁(yè)與該內(nèi)存頁(yè)所屬的分段的關(guān)聯(lián)記錄工作。所有的計(jì)算 工作都緊密與處理器相關(guān),所以性能損耗跟硬盤(pán)的I/O有直接聯(lián)系,可能會(huì)持續(xù)甚至1分鐘。
圖1.6

    注釋:當(dāng)內(nèi)存頁(yè)保存在物理內(nèi)存(例如,DRAM)中時(shí),這些內(nèi)存頁(yè)放置在被稱為頁(yè)幀(Page frame)用于記錄頁(yè)面大小的結(jié)構(gòu)中。除了對(duì)所有內(nèi)存頁(yè)的使用情況進(jìn)行監(jiān)控外,大多數(shù)操作系統(tǒng)同樣也對(duì)頁(yè)幀的使用情況進(jìn)行監(jiān)控。通常頁(yè)幀的數(shù)量大大少于內(nèi)存頁(yè)的數(shù)量,所以操作系統(tǒng)非常看重小心的對(duì)這些寶貴的資源進(jìn)行管理。
    注釋:可以使用不用硬盤(pán)的分頁(yè)機(jī)制。但是在這種情況下,分頁(yè)被轉(zhuǎn)變?yōu)?KB內(nèi)存大小的分段。

因?yàn)楹苋菀椎玫絀ntel Pentium的處理器所以我決定以Pentium處理器來(lái)講解分段和分頁(yè)機(jī)制我 喜歡用MIPS64處理器來(lái)闡述理論,但是我買不起SGI的服務(wù)器(唉)。廉價(jià)是Intel系列產(chǎn)品常勝不衰的主要原因之一。像我這樣的在1980年時(shí)候 買不起Apple IIe電腦的計(jì)算機(jī)癡迷者,都轉(zhuǎn)而去尋覓二手的Intel機(jī)箱。成千上萬(wàn)的人不得不因?yàn)橘Y金的考慮做出這樣的選擇。所以某種意義上來(lái)說(shuō),Intel產(chǎn)品廣 泛使用跟基層使用者的推動(dòng)不無(wú)關(guān)系。

Pentium系列處理器一直以來(lái)都是流行處理器

CPU             發(fā)布日期          物理地址空間

8086                1978                  1MB
8088                1979                  1MB
80286              1982                  16MB
80386              1985                  4GB
80486              1989                  4GB
Pentium           1993                  4GB
Pentium Pro     1995                  64GB
Pentium II       1997                  64GB
Pentium III      1999                  64GB
Pentium 4        2000                  64GB

    注釋:
當(dāng) 1981年IBM PC誕生的時(shí)候,搭載了一顆主頻為4.77MHz的8088CPU。毫無(wú)疑問(wèn),大型機(jī)上開(kāi)發(fā)人員們欣喜若狂。因?yàn)镻C給了他們一個(gè)屬于自己的施展空間了。 在那個(gè)時(shí)候,標(biāo)準(zhǔn)的啞終端除了向大型機(jī)來(lái)回傳輸緩沖區(qū)里的數(shù)據(jù)什么也干不了。不僅如此,工程師也無(wú)法對(duì)他們的代碼的運(yùn)行時(shí)間和運(yùn)行方式有絲毫的控制能力。 只能痛苦的等待。Tom Petty說(shuō)得沒(méi)錯(cuò),偶爾用PIZZA賄賂下系統(tǒng)管理員,可以讓程序運(yùn)行得快一些,但是這種奉承很快讓人感覺(jué)疲憊。有了IBM PC以后工程師終于用于了屬于自己的機(jī)器,擁有一切權(quán)利,不再需要任何等待。

題外話
    我認(rèn)識(shí)一個(gè)CDC的工程師,也正是因?yàn)镻C帶給程序員的諸多好處,他在1982年將FORTRAN '77移植到PC。他的頭走到他身邊問(wèn)道:“你為什么想在小三輪車一樣的機(jī)器上運(yùn)行代碼,而不是功能強(qiáng)大的大型機(jī)上”,他回答:“因?yàn)樗俏业淖约旱?span style="color: #073763;">”這段話或許概括了個(gè)人電腦(PC)大獲成功的原因所在。

為了留住老客戶,Intel為此跨域了重重困難使他們32位處理器能夠向后兼容16位的處理器構(gòu)架。Intel成功的做到了這一點(diǎn),我能夠在我的電腦上
使用啟動(dòng)盤(pán)啟動(dòng)DOS 6.22系統(tǒng),并且運(yùn)行大多數(shù)老的DOS應(yīng)用程序(包括Doom和Duke Nukem)。
Pentium處理器是一種
運(yùn)行在幾種不同的工作模式下實(shí)現(xiàn)后兼容需求的產(chǎn)品。各個(gè)運(yùn)行模式指定各自不同的處理器如何解釋運(yùn)行機(jī)器指令如何訪問(wèn)內(nèi)存的方式。Pentium具有四種運(yùn)行模式。
  • Real mode           實(shí)模式
  • Protected mode      保護(hù)模式
  • System management mode(SMM) 系統(tǒng)管理模式
  • Virtual 8086 mode           虛擬8086模式


系統(tǒng)管理模式和虛擬8086模式都是特定目的運(yùn)行模式,只在特定的環(huán)境下使用。我的焦點(diǎn)將主要集中在兩個(gè)運(yùn)行模式上:實(shí)模式和保護(hù)模式。此外,我會(huì)對(duì)它們?nèi)绾沃С址侄魏头猪?yè)機(jī)制的部分進(jìn)行深入。

具備不同的運(yùn)行模式的特性的這種技術(shù)并不僅僅限于 Intel平臺(tái)。例如,MIPS64處理器同樣可以工作在四種運(yùn)行模式下。
  • Kernel mode        內(nèi)核模式
  • User mode           用戶模式
  • Debug mode        調(diào)試模式
  • Supervisor mode 管理員模式

實(shí)模式

第一臺(tái)IBM PC完全運(yùn)行在實(shí)模式下。而且所有的32位Intel計(jì)算機(jī)同樣在啟動(dòng)的時(shí)候運(yùn)行于實(shí)模式下。這是實(shí)現(xiàn)向后兼容的必須要具備的最基本的特性。
運(yùn)行在實(shí)模式下的操作系統(tǒng)都非常小(小于128KB)。因?yàn)樗鼈兌家揽緽IOS提供的硬件接口。使得它們可以輕易的適應(yīng)1.44MB的軟盤(pán)。病毒保護(hù)的修復(fù)盤(pán)依據(jù)這個(gè)事實(shí),系統(tǒng)修復(fù)盤(pán)也是同樣道理。我也買過(guò)可運(yùn)行在啟動(dòng)盤(pán)中那種分區(qū)軟件。

在實(shí)模式中,我們?cè)趫D1.2中所見(jiàn)到過(guò)的通用寄存器被截取為16位的寄存器,錯(cuò)誤標(biāo)志寄存器和指令指針寄存器也被截取為16位。實(shí)模式寄存器結(jié)構(gòu)如圖1.7所示。



圖1.7

正 如你看到的,寄存器名字前面的'E'前綴被拿掉了。此外,每一個(gè)16位的通用寄存器,AX,CX,DX,和EX,可以作為兩個(gè)8位寄存器來(lái)使用。例 如,AX寄存器可以可做是由AH和AL寄存組合而成的。AH寄存器是AX寄存器的高字節(jié)部分,AL寄存器是AX的低字節(jié)部分。

    注釋:
在圖1.2中的內(nèi)存和模式寄存器在實(shí)模式中還是可見(jiàn)的。32位CPU在實(shí)模式中依然是32位的,但是它們對(duì)于實(shí)模式來(lái)說(shuō)沒(méi)有任何意義和用處。除非你切換到保護(hù)模式當(dāng)中。


實(shí)模式中計(jì)算機(jī)可尋址1M的DRAM。這暗示實(shí)模式中只使用了20條地址線。對(duì)于運(yùn)行在實(shí)模式中的處理器來(lái)說(shuō),內(nèi)存中字節(jié)的地址由段地址加上一個(gè)偏移量地 址組成。其結(jié)果總是一個(gè)20位地址值(記住這個(gè)事實(shí):這點(diǎn)非常重要)這就打消了是否真的使用20條地址線的疑問(wèn)。由段地址和偏移地址的和組成的地址值,便 符合了處理器的地址線上的值。現(xiàn)在你可以得到了為什么叫它為“實(shí)模式”的更好解釋。實(shí)模式中字節(jié)的地址直接映射到物理內(nèi)存中一個(gè)“真實(shí)”的字節(jié)。

在Intel匯編語(yǔ)言中,地址由一個(gè)"段地址:偏移地址(segment:offset)" 的值對(duì)來(lái)表示。例如,如果一個(gè)字節(jié)位于段地址為0x8200,偏移地址為0x0100,該字節(jié)的地址值就表示為:

0x8200:0x0100

有時(shí)候,由于某些原因(一會(huì)給出解釋),也可以寫(xiě)為:

0x8200[0]:0x100


實(shí)模式中內(nèi)存地址解析過(guò)程如圖1.8:

圖1.8

段地址表示一個(gè)特定的內(nèi)存段,并且總是保存在一個(gè)16位的段寄存器中。特別的,段地址指基地址,內(nèi)存段的最低地址。各個(gè)段寄存器都各自具有特定用途:

寄存器    作用
CS         當(dāng)前執(zhí)行代碼的段地址
SS         堆棧段地址
DS         數(shù)據(jù)段地址
ES          額外段地址(通常作為數(shù)據(jù)段地址)
FS          額外段地址(通常作為數(shù)據(jù)段地址)
GS         額外段地址(通常作為數(shù)據(jù)段地址)

     注釋:
實(shí)際當(dāng)中的具有6個(gè)寄存器的意思是:在任何時(shí)候,只能控制6個(gè)寄存一個(gè)程序可以獲得大于6個(gè)以上的寄存器,但是在任何一刻只有6個(gè)寄存器可以訪問(wèn)。

偏移地址可以保存在16位的通用寄存器中。提供一個(gè)16位的偏移地址,這將每個(gè)內(nèi)存段限制在64KB的大小以內(nèi)。

    問(wèn)題:1.如果段地址和偏移地址都存儲(chǔ)在16位的寄存器中,為什么兩個(gè)16位值的和卻得到的是20位的值

    答案:原因是段地址的末尾被添加了一個(gè)隱含的0,處理器將段地址0x0c00被處理為0x0c000。這表示,在實(shí)際書(shū)寫(xiě)中,要將這個(gè)隱含0放置到方括號(hào)中。(例如,0x0c00[0])這就是為什么處理器得到20位的地址值。

    正如你所見(jiàn),實(shí)模式的 段地址/偏移地址 提供了一種簡(jiǎn)單的分段機(jī)制。但是,它沒(méi)有提供我說(shuō)提到過(guò)的內(nèi)存段邊界保護(hù)的機(jī)制。糟糕的事實(shí)是在實(shí)模式中沒(méi)有提供任何內(nèi)存保護(hù)。
當(dāng)你的程序運(yùn)行在實(shí)模式中,它擁有了一切,甚至可以破壞一切。

    在實(shí)模式中運(yùn)行應(yīng)用程序就好象讓一群童子軍到你家,他們精力充沛,活力十足,隨著你手中的糖果蹦上竄下。如果你不小心,他們會(huì)把房子毀掉。將一臺(tái)運(yùn)行在實(shí)模式中的機(jī)器崩潰非常容易,而且你沒(méi)有太多辦法防止它發(fā)生。(除了不斷的備份你的工作)


如果你對(duì)上述內(nèi)容疑惑,我肯定有一些人一定存在同樣的疑惑,這里有個(gè)C程序代碼的例子可以使運(yùn)行在實(shí)模式下的機(jī)器崩潰:


/* --crashdos.c-- */


void main()
{
     unsigned char *ptr;
     int i;

     ptr = (unsigned char *)0x0;
     for(i=0;i<1024;i++)
     {
         ptr[i]=0x0;
     }
     return;
}


看是不是不費(fèi)吹灰之力?這段攻擊代碼沒(méi)有任何特別和秘密之處。我只是覆蓋了位于內(nèi)存底端的中斷向量表而已。如果你想將這類代碼隱藏在一個(gè)大的可執(zhí)行程序中,你或許可以將這個(gè)代碼簡(jiǎn)化不到五行的匯編。如果你真的想做壞事,你能讓鍵盤(pán)無(wú)法響應(yīng)然后開(kāi)始格式化硬盤(pán)。這個(gè)時(shí)候能做的就是拔掉電源,不過(guò)即使那樣,當(dāng)明白過(guò)來(lái)發(fā)生什么的時(shí)候,或許已經(jīng)太晚了。然而,我想要說(shuō)明的并不是要告訴你如何去攻擊DOS系統(tǒng)。沒(méi)有人再去使用它,總之,我是證明是模式是一個(gè)不安全的運(yùn)行環(huán)境。
更糟的是,實(shí)模式不支持分頁(yè)機(jī)制。你只能使用1MB的DRAM內(nèi)存。在實(shí)際情況下呢,竟然還不到1MB,因?yàn)锽IOS和視頻硬件消耗了相當(dāng)大一部分的內(nèi)存。還記得比爾蓋茨的那番話嗎?

注釋:沒(méi)有內(nèi)存保護(hù)機(jī)制?沒(méi)有分頁(yè)機(jī)制?你現(xiàn)在明白第一個(gè)版本的PC-DOS系統(tǒng)是怎樣少于5,000行匯編代碼的了。或許“實(shí)”模式的稱呼,正是因?yàn)樗娴暮苄?/font>。

Intel處理器如果僅僅依靠這種米老鼠玩具一樣的內(nèi)存管理,將毫無(wú)作為。為了力圖支持更加健壯的操作系統(tǒng)和更大的內(nèi)存地址空間,Intel推出了80386CPU,80386具備4GB的物理地址空間并且支持一個(gè)全新的運(yùn)行模式:保護(hù)模式。


posted on 2008-12-06 00:07 momor 閱讀(1312) 評(píng)論(1)  編輯 收藏 引用 所屬分類: 翻譯

Feedback

# re: C/C++ 內(nèi)存管理算法與實(shí)現(xiàn)--第一章:Intel奔騰CPU構(gòu)架--實(shí)模式 (翻譯連載) 2008-12-09 23:43 region
不錯(cuò),很受益。  回復(fù)  更多評(píng)論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            伊人婷婷欧美激情| 亚洲国产精品久久久久秋霞蜜臀 | 国产精品欧美日韩久久| 美女视频黄 久久| 国产裸体写真av一区二区| 亚洲欧洲日产国产网站| 在线播放中文字幕一区| 性欧美videos另类喷潮| 亚洲女性裸体视频| 欧美视频1区| 亚洲乱码国产乱码精品精可以看| 在线播放日韩专区| 久久久91精品国产| 久久视频一区| 国内精品久久久久久久影视蜜臀| 亚洲淫性视频| 午夜精品久久久久久久久久久久| 欧美日韩国产va另类| 欧美国产欧美综合| 亚洲福利电影| 美女网站久久| 欧美电影美腿模特1979在线看| 国产综合婷婷| 久久久天天操| 欧美成人国产va精品日本一级| 亚洲第一精品夜夜躁人人躁| 久久久久久成人| 欧美电影电视剧在线观看| 亚洲国产精品va在线看黑人 | 亚洲欧美一区二区三区久久| 亚洲女ⅴideoshd黑人| 国产精品美女久久久免费 | 免费观看在线综合| 亚洲第一在线| 亚洲天堂av在线免费| 国产精品久久久久一区二区| 亚洲无吗在线| 久久阴道视频| 亚洲国产精品黑人久久久| 欧美国产丝袜视频| 一本久久青青| 久久精品国产免费看久久精品| 国产一区999| 农村妇女精品| 亚洲一区二区三区激情| 久久久久久亚洲综合影院红桃 | 久久夜色精品国产亚洲aⅴ| 欧美激情欧美狂野欧美精品| 夜久久久久久| 国产伦精品一区二区三区视频黑人| 欧美亚洲免费电影| 亚洲丁香婷深爱综合| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产精品视频你懂的| 久久精品一区二区国产| 亚洲精品小视频| 欧美一区2区三区4区公司二百| 激情另类综合| 欧美午夜一区| 久久久久免费| 一区二区三区久久网| 久久午夜av| 亚洲丝袜av一区| 精品91免费| 国产精品国产三级国产专播品爱网| 欧美一区久久| 日韩一区二区久久| 久久视频国产精品免费视频在线 | 亚洲特色特黄| 亚洲国产欧美一区二区三区同亚洲| 欧美精品久久久久久久免费观看 | 亚洲国产欧美一区| 国产欧美日韩在线| 欧美精品情趣视频| 久久精品视频免费| 中文无字幕一区二区三区| 男女精品视频| 欧美影视一区| 亚洲一区二区三区乱码aⅴ| 亚洲大胆女人| 国产日韩在线不卡| 欧美日韩一区二区视频在线观看| 久久女同精品一区二区| 亚洲综合另类| 一本一本久久a久久精品牛牛影视| 欧美成人免费在线观看| 久久超碰97中文字幕| 亚洲一区二区在线看| 亚洲免费观看在线视频| 亚洲第一久久影院| 精品51国产黑色丝袜高跟鞋| 国产日韩综合| 国产欧美日韩综合一区在线观看 | 亚洲狠狠丁香婷婷综合久久久| 国产麻豆日韩| 国产精品毛片在线看| 欧美日韩中文字幕在线视频| 欧美成年人视频网站| 美女脱光内衣内裤视频久久影院| 欧美在线一二三区| 欧美在线视频全部完| 欧美亚洲三区| 久久er99精品| 午夜精品久久久久久久久久久 | 亚洲理伦电影| 日韩视频一区| 国产精品99久久久久久白浆小说| 亚洲精品网址在线观看| 亚洲免费观看高清完整版在线观看熊 | 欧美一二三区在线观看| 午夜久久电影网| 欧美一区国产一区| 久久gogo国模裸体人体| 久久久精品动漫| 久久青草福利网站| 女人天堂亚洲aⅴ在线观看| 另类图片综合电影| 欧美成人精品在线播放| 欧美日韩国产成人在线| 欧美性猛交xxxx乱大交退制版 | 国产一区二区三区四区三区四| 国产小视频国产精品| 黄页网站一区| 亚洲精品中文字幕在线| 中文国产成人精品久久一| 亚洲免费在线视频| 久久久久国产免费免费| 欧美mv日韩mv国产网站app| 亚洲福利一区| 中国av一区| 久久久999精品免费| 欧美**字幕| 国产精品成人av性教育| 国产亚洲二区| 亚洲人成7777| 亚洲欧美综合精品久久成人| 久久久视频精品| 亚洲国产专区| 亚洲欧美日韩国产成人| 久久综合九色综合欧美就去吻| 欧美日韩成人精品| 国产一区二区在线观看免费| 亚洲精品之草原avav久久| 亚洲欧美日韩视频一区| 男人天堂欧美日韩| 在线视频欧美日韩| 麻豆成人在线| 国产精品视频免费观看| 亚洲人成网站影音先锋播放| 亚洲欧美制服另类日韩| 欧美电影在线观看完整版| 一本大道久久a久久综合婷婷| 欧美在线首页| 国产精品久久久亚洲一区 | 日韩亚洲欧美一区| 久久精品成人| 国产精品久久7| 亚洲人成网站精品片在线观看 | 欧美亚洲视频在线看网址| 欧美激情亚洲国产| 欧美亚洲系列| 国产精品久久91| 99精品视频一区二区三区| 久久亚洲捆绑美女| 亚洲欧美另类久久久精品2019| 欧美精品一区二区久久婷婷| 国产在线乱码一区二区三区| 亚洲一级一区| 亚洲国产天堂久久国产91| 久久久精品性| 国产日韩欧美一区| 新狼窝色av性久久久久久| 日韩系列在线| 欧美国产91| 亚洲欧洲一区二区在线播放| 久久阴道视频| 欧美影院一区| 国产一区二区三区免费观看| 亚洲小说区图片区| 亚洲精品日韩综合观看成人91| 久久一区二区三区av| 国产一区二区三区久久精品| 欧美亚洲综合久久| 亚洲一区在线播放| 国产精品视频在线观看| 亚洲男女毛片无遮挡| 中日韩视频在线观看| 欧美日韩在线不卡| 在线视频免费在线观看一区二区| 亚洲国产精品悠悠久久琪琪| 久久亚洲精品网站| 怡红院av一区二区三区| 久久综合激情| 久久人人爽人人爽爽久久| 国产欧美三级| 另类亚洲自拍| 蜜桃av一区| 99re6这里只有精品| 亚洲精品一区二区三区99| 欧美日本一区二区高清播放视频|