精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

梳理Linux內存尋址之分段機制

系統 Linux 系統運維
最近在學習Linux內核,讀到《深入理解Linux內核》的內存尋址一章。原本以為自己對分段分頁機制已經理解了,結果發現其實是一知半解。于是,查找了很多資料,最終理順了內存尋址的知識。現在把我的理解記錄下來,希望對內核學習者有一定幫助,也希望大家指出錯誤之處。

  [[151258]]

【引自ShareHub的博客】一、前言

  最近在學習Linux內核,讀到《深入理解Linux內核》的內存尋址一章。原本以為自己對分段分頁機制已經理解了,結果發現其實是一知半解。于是,查找了很多資料,最終理順了內存尋址的知識。現在把我的理解記錄下來,希望對內核學習者有一定幫助,也希望大家指出錯誤之處。

  二、分段到底是怎么回事

  相信學過操作系統課程的人都知道分段分頁,但是奇怪的是書上基本沒提分段分頁是怎么產生的,這就導致我們知其然不知其所以然。下面我們先扒一下分段機制產生的歷史。

  實模式的誕生(16位處理器及尋址)

  在8086處理器誕生之前,內存尋址方式就是直接訪問物理地址。8086處理器為了尋址1M的內存空間,把地址總線擴展到了20位。但是,一個 尷尬的問題出現了,ALU的寬度只有16位,也就是說,ALU不能計算20位的地址。為了解決這個問題,分段機制被引入,登上了歷史舞臺。

  為了支持分段,8086處理器設置了四個段寄存器:CS,DS,SS, ES。每個段寄存器都是16位的,同時訪問內存的指令中的地址也是16位的。但是,在送入地址總線之前,CPU先把它與某個段寄存器內的值相加。這里要注 意:段寄存器的值對應于20位地址總線中的高16位,所以相加時實際上是內存總線中的高12位與段寄存器中的16位相加,而低4位保留不變,這樣就形成一 個20位的實際地址,也就實現了從16位內存地址到20位實際地址的轉換,或者叫“映射”。

  保護模式的誕生(32位處理器及尋址)

  ◆80286處理器的地址總線為24位,尋址空間達16M,同時引入了保護模式(內存段的訪問受到限制)

  ◆80386處理器是一個32位處理器,ALU和地址總線都是32位的,尋址空間達 4G。也就是說它可以不通過分段機制,直接訪問4G的內存空間。雖然它是新時代的小王子,超越它的無數前輩,然而,它需要背負家族的使命—兼容前代的處理 器。也就是說,它必須支持實模式和保護模式。所以,80386在段寄存器的基礎上構筑保護模式,并且保留16位的段寄存器。

  ◆從80386之后的處理器,架構基本相似,統稱為IA32(32 Bit Intel Architecture)。

  三、IA32的內存尋址機制

  尋址硬件

  在 8086 的實模式下,把某一段寄存器左移4位,然后與地址ADDR相加后被直接送到內存總線上,這個相加后的地址就是內存單元的物理地址,而程序中的這個地址就叫 邏輯地址(或叫虛地址)。在IA32的保護模式下,這個邏輯地址不是被直接送到內存總線而是被送到內存管理單元(MMU)。MMU由一個或一組芯片組成, 其功能是把邏輯地址映射為物理地址,即進行地址轉換,如圖所示。  

MMU

  IA32的三種地址

  ◆邏輯地址:機器語言指令仍用這種地址指定一個操作數的地址或一條指令的地址。 這種尋址方式在Intel的分段結構中表現得尤為具體,它使得MS-DOS或Windows程序員把程序分為若干段。每個邏輯地址都由一個段和偏移量組成。

  ◆線性地址:線性地址是一個32位的無符號整數,可以表達高達232(4GB)的地址。通常用16進制表示線性地址,其取值范圍為0x00000000~0xffffffff。

  ◆物理地址:也就是內存單元的實際地址,用于芯片級內存單元尋址。 物理地址也由32位無符號整數表示。

  MMU地址轉化過程

  MMU是一種硬件電路,它包含兩個部件,一個是分段部件,一個是分頁部件,在此,我們把它們分別叫做分段機制和分頁機制,以利于從邏輯的角度來理解硬件的實現機制。分段機制把一個邏輯地址轉換為線性地址;接著,分頁機制把一個線性地址轉換為物理地址。  


MMU_translate

 

  IA32的段寄存器

  IA32中有六個16位段寄存器:CS,DS,SS,ES,FS,GS。跟8086的段寄存器不同的是,這些寄存器存放的不再是某個段的基地址,而是某個段的選擇符(Selector)。

#p#

  四、分段機制的實現

  段是虛擬地址空間的基本單位,分段機制必須把虛擬地址空間的一個地址轉換為線性地址空間的一個線性地址。

  為了實現這種映射,僅僅用段寄存器來確定一個基地址是不夠的,至少還得描述段的長度,并且還需要段的一些其他信息,比如訪問權之類。所以,這里需要的是一個數據結構,這個結構包括三個方面的內容:

  1.段的基地址(Base Address):在線性地址空間中段的起始地址。

  2.段的界限(Limit):在虛擬地址空間中,段內可以使用的***偏移量。

  3.段的保護屬性(Attribute):表示段的特性。例如,該段是否可被讀出或寫入,或者該段是否作為一個程序來執行,以及段的特權級等等。

  上面的數據結構我們稱為段描述符,多個段描述符組成的表稱為段描述符表

  段描述符

  所謂描述符(Descriptor),就是描述段的屬性的一個8字節存儲單元。在實模式下,段的屬性不外乎是代碼段、堆棧段、數據段、段的起始地址、段的長度等等,而在保護模式下則復雜一些。IA32將它們結合在一起用一個8字節的數表示,稱為描述符 。  

IA32的一個通用的段描述符的結構

  從圖可以看出,一個段描述符指出了段的32位基地址和20位段界限(即段長)。這里我們只關注基地址和段界限,其他的屬性略過。

  1.段描述符表

  各種各樣的用戶描述符和系統描述符,都放在對應的全局描述符表、局部描述符表和中斷描述符表中。描述符表(即段表)定義了IA32系統的所有段 的情況。所有的描述符表本身都占據一個字節為8的倍數的存儲器空間,空間大小在8個字節(至少含一個描述符)到64K字節(至多含8K)個描述符之間。

  2.全局描述符表(GDT)

  全局描述符表GDT(Global Descriptor Table),除了任務門,中斷門和陷阱門描述符外,包含著系統中所有任務都共用的那些段的描述符。 它的***個8字節位置沒有使用。

  3.中斷描述符表IDT(Interrupt Descriptor Table)

  中斷描述符表IDT(Interrupt Descriptor Table),包含256個門描述符。IDT中只能包含任務門、中斷門和陷阱門描述符,雖然IDT表最長也可以為64K字節,但只能存取2K字節以內的描述符,即256個描述符,這個數字是為了和8086保持兼容。

  局部描述符表(LDT)

  局部描述符表LDT(local Descriptor Table),包含了與一個給定任務有關的描述符,每個任務各自有一個的LDT。 有了LDT,就可以使給定任務的代碼、 數據與別的任務相隔離。每一個任務的局部描述符表LDT本身也用一個描述符來表示,稱為LDT描述符,它包含了有關局部描述符表的信息,被放在全局描述符表GDT中。

  總結

  IA32的內存尋址機制完成從邏輯地址—線性地址—物理地址的轉換。其中,邏輯地址的段寄存器中的值提供段描述符,然后從段描述符中得到段基址和段界限,然后加上邏輯地址的偏移量,就得到了線性地址,線性地址通過分頁機制得到物理地址。

  首先,我們要明確,分段機制是IA32提供的尋址方式,這是硬件層面的。就是說,不管你是windows還是linux,只要使用IA32的CPU訪問內存,都要經過MMU的轉換流程才能得到物理地址,也就是說必須經過邏輯地址—線性地址—物理地址的轉換。

  五、Linux中分段的實現

  前面說了那么多關于分段機制的實現,其實,對于Linux來說,并沒有什么卵用。因為,Linux基本不使用分段的機制,或者說,Linux中的分段機制只是為了兼容IA32的硬件而設計的。

  Intel微處理器的段機制是從8086開始提出的, 那時引入的段機制解決了從CPU內部16位地址到20位實地址的轉換。為了保持這種兼容性,386仍然使用段機制,但比以前復雜得多。因此,Linux內 核的設計并沒有全部采用Intel所提供的段方案,僅僅有限度地使用了一下分段機制。這不僅簡化了Linux內核的設計,而且為把Linux移植到其他平 臺創造了條件,因為很多RISC處理器并不支持段機制。但是,對段機制相關知識的了解是進入Linux內核的必經之路。

  從2.2版開始,Linux讓所有的進程(或叫任務)都使用相同的邏輯地址空間,因此就沒有必要使用局部描述符表LDT。但內核中也用到LDT,那只是在VM86模式中運行Wine,因為就是說在Linux上模擬運行Winodws軟件或DOS軟件的程序時才使用。

  在 IA32 上任意給出的地址都是一個虛擬地址,即任意一個地址都是通過“選擇符:偏移量”的方式給出的,這是段機制存訪問模式的基本特點。所以在IA32上設計操作 系統時無法回避使用段機制。一個虛擬地址最終會通過“段基地址+偏移量”的方式轉化為一個線性地址。 但是,由于絕大多數硬件平臺都不支持段機制,只支持分頁機制,所以為了讓 Linux 具有更好的可移植性,我們需要去掉段機制而只使用分頁機制。但不幸的是,IA32規定段機制是不可禁止的,因此不可能繞過它直接給出線性地址空間的地址。 萬般無奈之下,Linux的設計人員干脆讓段的基地址為0,而段的界限為4GB,這時任意給出一個偏移量,則等式為“0+偏移量=線性地址”,也就是說 “偏移量=線性地址”。另外由于段機制規定“偏移量<4GB”,所以偏移量的范圍為0H~FFFFFFFFH,這恰好是線性地址空間范圍,也就是說 虛擬地址直接映射到了線性地址,我們以后所提到的虛擬地址和線性地址指的也就是同一地址。看來,Linux在沒有回避段機制的情況下巧妙地把段機制給繞過 去了。

  另外,由于IA32段機制還規定,必須為代碼段和數據段創建不同的段,所以Linux必須為代碼段和數據段分別創建一個基地址為0,段界限為4GB 的段描述符。不僅如此,由于Linux內核運行在特權級0,而用戶程序運行在特權級別3,根據IA32段保護機制規定,特權級3的程序是無法訪問特權級為 0的段的,所以Linux必須為內核用戶程序分別創建其代碼段和數據段。這就意味著Linux必須創建4個段描述符——特權級0的代碼段和數據段,特權級3的代碼段和數據段。

  六、總結

  分段機制是IA32架構CPU的特色,并不是操作系統尋址方式的必然選擇。Linux為了跨平臺,巧妙的繞開段機制,主要使用分頁機制來尋址。

  參考資料

  《深入分析Linux內核源碼》

責任編輯:火鳳凰 來源: ShareHub博客
相關推薦

2015-10-09 10:22:47

分頁內存尋址Linux

2009-12-17 11:00:47

Linux內存管理

2020-09-30 06:50:35

Linux內存尋址

2010-06-10 10:59:33

Internet協議

2013-09-29 15:11:46

Linux運維內存管理

2018-10-10 05:12:35

2025-04-15 06:00:00

2015-06-04 09:38:39

Java垃圾回收機

2021-07-07 11:35:17

Linux內存段尋址

2010-06-02 11:33:26

Linux 內存監控

2025-09-18 09:17:46

2011-01-18 09:51:59

Linux磁盤分區

2021-10-08 07:53:01

Go 尋址元素

2020-06-22 08:30:42

Linux內存手動釋放

2011-01-18 10:25:19

Linux磁盤分區

2025-04-09 05:22:00

2013-04-01 10:07:19

Java內存回收機制

2010-09-26 13:23:13

JVM內存管理機制

2022-06-01 16:01:58

MySQL內存管理系統

2009-08-26 14:52:19

.NET Framew
點贊
收藏

51CTO技術棧公眾號

在线天堂www在线国语对白| 久久久性生活视频| 国产丝袜视频在线观看 | 麻豆一区区三区四区产品精品蜜桃| 日本中文字幕在线| 99久久影视| 精品国产乱码久久久久久影片| 妺妺窝人体色www在线小说| www亚洲人| 99视频有精品| 成人激情视频小说免费下载| 中文字幕在线观看免费视频| 日韩免费视频| 亚洲国产精品久久久久久| 男人搞女人网站| 尤物视频在线观看国产| 精品日韩欧美一区| 精品国精品自拍自在线| 国产又粗又长又大的视频| 青春草视频在线观看| 欧美激情自拍偷拍| 国产成人亚洲综合青青| 日本天堂中文字幕| 国产亚洲高清一区| 欧美性猛交xxxx乱大交蜜桃| www国产免费| av在线第一页| 91小视频免费观看| 99视频在线| 国产日韩欧美视频在线观看| 天堂资源在线中文精品| 久久久久国产精品免费| 日本午夜在线观看| 日本激情一区| 亚洲欧美国产精品va在线观看| 农村末发育av片一区二区| xxxxx.日韩| 91国内精品野花午夜精品| 人妻久久久一区二区三区| 日本在线观看高清完整版| 综合婷婷亚洲小说| 亚洲国产精品久久久久久女王| 免费理论片在线观看播放老| 99精品国产99久久久久久白柏| 91九色偷拍| 国产精品久久久久久久免费| 麻豆精品视频在线观看视频| 日韩视频免费在线观看| 欧美人与性囗牲恔配| 偷窥自拍亚洲色图精选| 亚洲国产精品成人精品| 搡老熟女老女人一区二区| a级日韩大片| 精品久久久久一区二区国产| 美女伦理水蜜桃4| 风间由美性色一区二区三区四区| 日韩欧美国产综合| 中文字幕人妻一区| 欧美日韩麻豆| 欧美羞羞免费网站| 美女网站免费观看视频| 亚洲插插视频| 日本韩国精品在线| 冲田杏梨av在线| 成人国产精品入口免费视频| 欧美午夜性色大片在线观看| 国产97色在线 | 日韩| 韩国成人在线| 制服丝袜亚洲网站| 免费高清视频在线观看| av成人综合| 亚洲精品久久久久| 色哟哟精品观看| 欧美日韩亚洲在线观看| 久久精品视频在线播放| 在线观看成人毛片| 国产精品夜夜夜| 国产成人aa精品一区在线播放| 国产又粗又猛又爽又| 久久超碰97人人做人人爱| 午夜欧美大片免费观看| 欧美日韩国产黄色| 久久国产亚洲精品| 欧美人与物videos| 国产精品久久久久久久妇| 日本欧美韩国一区三区| 91精品国产九九九久久久亚洲| 日韩 欧美 综合| 日韩激情视频网站| 91在线高清视频| 午夜视频在线播放| 国产精品丝袜黑色高跟| 欧美aaaaa喷水| 免费a级人成a大片在线观看| 亚洲乱码中文字幕| 日日摸日日碰夜夜爽av| 色综合一区二区日本韩国亚洲 | 日本精品一区二区三区在线播放视频| 中文字幕av第一页| 国产成人综合在线播放| 蜜桃传媒视频麻豆第一区免费观看 | 老司机免费视频一区二区| 99久re热视频这里只有精品6| 青青青草网站免费视频在线观看| 国产精品家庭影院| 欧美二区在线视频| 电影中文字幕一区二区| 亚洲美腿欧美激情另类| 欧美激情一区二区视频| 天堂蜜桃91精品| 春色成人在线视频| 午夜不卡视频| 日本一区二区三级电影在线观看 | 在线看的片片片免费| 亚洲一区国产| 成人自拍偷拍| 国产高清一区二区三区视频| 在线一区二区三区四区| 免费黄色三级网站| 欧美1级日本1级| 国产免费观看久久黄| 青青草免费在线| 亚洲第一狼人社区| 三级网站免费看| 国产精品二区不卡| 国产精品夫妻激情| 欧美成熟毛茸茸| 精品国产999| 国产高潮失禁喷水爽到抽搐| 一区二区三区午夜探花| 久久综合久久美利坚合众国| 四虎成人在线观看| 日韩精品电影一区亚洲| 国产主播一区二区三区四区| 97影院秋霞午夜在线观看| 欧美日韩国产a| youjizz亚洲女人| 秋霞电影一区二区| 日韩理论片在线观看| 在线观看涩涩| 日韩经典第一页| 天堂中文在线网| 99re成人在线| 北条麻妃在线视频观看| 日韩av不卡一区| 国产91精品黑色丝袜高跟鞋| 最近中文字幕在线免费观看| 国产一区二区三区黄视频| 亚洲国产精品久久久久久女王| 视频在线日韩| 中文字幕av一区| 中文字幕+乱码+中文| 中文字幕不卡在线观看| 国产精品一区二区小说| 色综合天天爱| 亚洲一区二区三区四区在线播放 | 亚洲一区二区三区在线播放| 97免费公开视频| 欧美亚韩一区| 精品视频一区二区| 亚洲天堂一区二区| 91麻豆精品国产91久久久资源速度 | 欧美视频成人| 国内精品视频免费| 亚洲人体视频| 中文字幕欧美精品在线| 国产一区二区三区三州| 亚洲精品日日夜夜| 精品人妻一区二区三区日产| 午夜宅男久久久| 神马影院一区二区| 国产情侣一区在线| 久久久久久久一区二区三区| 台湾av在线二三区观看| 综合久久综合久久| 中文字幕一二三区| 亚洲精品女人| 日本不卡免费新一二三区| 欧美成人免费全部网站| 欧美疯狂xxxx大交乱88av| 五月天婷婷社区| 欧美三级日韩三级| 欧美久久久久久久久久久久| 91一区一区三区| 三级a三级三级三级a十八发禁止| 91精品国产乱码久久久久久久| 国产精品日韩欧美一区二区三区 | 国产精品一区二区三区免费| 成人福利视频| 美女精品久久久| 桃花色综合影院| 欧美一区二区三区四区在线观看| 亚洲一区 视频| 国产精品国产精品国产专区不片 | av免费观看网址| 中文字幕精品综合| 日本少妇xxx| 首页综合国产亚洲丝袜| www.激情网| 精品美女久久| 国产精选在线观看91| 日本一道高清亚洲日美韩| 欧美精品18videosex性欧美| 啊v视频在线| 精品sm捆绑视频| 中文字幕在线观看你懂的| 精品久久久一区二区| 欧美大片xxxx| 中文字幕不卡在线播放| 美国黄色a级片| 国模少妇一区二区三区| 成人在线看视频| 精品盗摄女厕tp美女嘘嘘| 97中文在线| 国产精品麻豆成人av电影艾秋| 国内免费久久久久久久久久久| 免费av不卡| 亚洲一级一级97网| 中文字幕永久在线观看| 精品久久久视频| 久久久夜色精品| 一区在线观看视频| 免费网站在线高清观看| 99久久er热在这里只有精品66| 国内av一区二区| 日韩国产欧美在线视频| 丁香色欲久久久久久综合网| 国产成人福利av| 91久久久久久久久久| 国产亚洲一区二区手机在线观看| 国内揄拍国内精品少妇国语| 日日夜夜天天综合入口| 久久精品中文字幕电影| 成人免费黄色网页| 亚洲性av在线| 92国产在线视频| 亚洲天堂视频在线观看| 青春有你2免费观看完整版在线播放高清| 欧美v国产在线一区二区三区| 国产精品久久久久久无人区| 精品视频全国免费看| 欧美男人亚洲天堂| 色琪琪一区二区三区亚洲区| 久久久久久不卡| 一本到三区不卡视频| 日韩一级在线视频| 在线观看区一区二| 波多野结衣高清视频| 欧美伊人久久大香线蕉综合69 | 久久久精品五月天| 国产亚洲精品网站| 亚洲欧美激情诱惑| 日本在线观看a| 视频一区欧美精品| 日本特黄a级片| 激情综合五月婷婷| 伊人免费视频二| 国产宾馆实践打屁股91| 91成人在线观看喷潮蘑菇| 97se亚洲国产综合自在线不卡| 国产熟妇搡bbbb搡bbbb| 国产亚洲午夜高清国产拍精品 | 国产无套粉嫩白浆在线2022年| 亚洲日本成人女熟在线观看| 国产乱码久久久久| 日韩亚洲电影在线| 亚洲GV成人无码久久精品| 精品久久久久久中文字幕大豆网| 久久亚洲精品石原莉奈 | 4p变态网欧美系列| 日韩av中字| 成人激情春色网| 国产精品宾馆| 午夜免费电影一区在线观看| 国产精品99久久精品| 隔壁人妻偷人bd中字| 久久激情中文| 涩涩网站在线看| 成人av午夜电影| 天美一区二区三区| 成人精品高清在线| 国产中年熟女高潮大集合| 国产精品五月天| 国产在线免费视频| 欧美伊人久久大香线蕉综合69 | 米奇精品一区二区三区在线观看| 丁香花在线影院| 国产精品久久久久久av福利| 欧美电影在线观看一区| 欧美日韩一区综合| 欧美+亚洲+精品+三区| 国产精品天天av精麻传媒| 国产精品亚洲第一区在线暖暖韩国 | 国产精品久久久久婷婷| 国产在线视频99| 欧美日韩在线播放一区| 天堂成人在线视频| 久久久精品影院| 成人线上视频| 成人欧美一区二区三区视频 | 国产在线视频综合| 日韩电影在线观看电影| 挪威xxxx性hd极品| 高清av一区二区| 欧美 日韩 国产 成人 在线观看| 一区二区三区免费在线观看| 欧美在线视频第一页| 日韩欧美一区二区三区| 不卡的日韩av| 色偷偷av一区二区三区乱| 午夜影院一区| 国产精品三区四区| 亚洲久久久久| 男人插女人下面免费视频| 99久久精品国产精品久久| 久久香蕉精品视频| 91精品免费在线观看| av网站在线免费播放| 日韩免费黄色av| 日韩精品免费一区二区夜夜嗨| 轻点好疼好大好爽视频| 久久99国产精品尤物| 亚洲欧美va天堂人熟伦| 色视频一区二区| 日韩黄色影片| 5278欧美一区二区三区| 综合欧美亚洲| 欧美乱做爰xxxⅹ久久久| 国产呦萝稀缺另类资源| 免费91在线观看| 欧美三级日韩在线| 成年人在线观看| 国产精品成人播放| 精品视频黄色| 天堂社区在线视频| 久久久www免费人成精品| 中文字幕视频网| 日韩精品一区二区视频| 99久久精品免费看国产小宝寻花| 懂色中文一区二区三区在线视频| 欧美在线首页| 欧美熟妇另类久久久久久多毛| 亚洲视频一区二区在线观看| 国产波霸爆乳一区二区| 欧美一级片在线看| 调教一区二区| 国产精品久久久对白| 日韩天堂av| 制服丝袜中文字幕第一页| 国产精品国产三级国产普通话蜜臀 | 在线观看黄网址| 在线不卡a资源高清| 看黄网站在线| av色综合网| 日韩亚洲国产精品| 国产精品无码久久久久一区二区| 日韩欧美亚洲范冰冰与中字| 国产精品一区二区三区四区色| 国产精品入口日韩视频大尺度| 2020国产精品小视频| 韩国黄色一级大片| 国产高清不卡二三区| xxxxxx国产| 亚洲少妇激情视频| 亚洲伦理网站| 亚洲精品无码国产| 91色综合久久久久婷婷| 亚洲精品91天天久久人人| 色噜噜狠狠狠综合曰曰曰| 国产高清亚洲| 尤物av无码色av无码| 中文在线资源观看网站视频免费不卡| 日日av拍夜夜添久久免费| 久久久www成人免费精品张筱雨 | 欧美羞羞免费网站| 老司机99精品99| 国内精品二区| 蜜臀av性久久久久蜜臀av麻豆| 欧美性猛交xxxxx少妇| 亚洲第一视频网站| 成人黄色免费观看| 成人一区二区av| 久久久噜噜噜久久中文字幕色伊伊 | 久久免费精彩视频| 亚洲欧美激情另类校园| www.久久久.com| www.玖玖玖| 亚洲蜜臀av乱码久久精品蜜桃| 免费看日韩av| 国产日韩av在线| 国产日韩欧美一区| 91香蕉一区二区三区在线观看| 亚洲第一精品久久忘忧草社区| 日本美女久久| 国产深夜男女无套内射| 国产精品久久久久久亚洲伦| 无码国产精品高潮久久99| 国产一区二区丝袜| 午夜在线视频一区二区区别| www.av视频|