日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

      歡迎訪問 生活随笔!

      生活随笔

      當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

      编程问答

      5.3.6 虚拟地址、线性地址和物理地址之间的关系

      發(fā)布時間:2025/6/17 编程问答 35 豆豆
      生活随笔 收集整理的這篇文章主要介紹了 5.3.6 虚拟地址、线性地址和物理地址之间的关系 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

      內核代碼和數(shù)據的地址

        對于linux 0.11內核代碼和數(shù)據來說,在head.s程序的初始化操作中已經把內核代碼段和數(shù)據段都設置成長度為16M的段。在線性地址空間中這兩個段的范圍重疊,都是從線性地址0開始到地址0XFFFFFF共16M地址范圍。在該范圍中含有內核所有的代碼、內核段表(GDT,IDT,TSS)、頁目錄表和內核的二級頁表、內核局部數(shù)據和內核臨時堆棧(將被用作第一個任務即任務0的用戶堆棧)。其頁目錄表和二級頁表已設置成把0-16M的線性地址空間一一對應到物理地址上,占用了4個目錄項即4個二級頁表。因此對于內核代碼和數(shù)據來說,我們可以直接把它看作是物理內存中的地址。如下圖:

        因此,默認情況下Linux 0.11內核最多可管理16MB的物理內存,共有4096個物理頁面,每個頁面4KB。通過上述分析可以看出:

      1.內核代碼段和數(shù)據段區(qū)域在線性地址空間和物理地址空間中是一樣的,這樣設置可以大大簡化內核的初始化操作

      2.GDT和IDT在內核數(shù)據段中,因此他們的線性地址也同樣等同于他們的物理地址。在實模式下setup.s程序初始化操作中,我們曾經設置過臨時的GDT和IDT,這是進入保護模式之前必須設置的。由于這兩個表當時處于物理內存大約0x90200處,而進入保護模式之后內核系統(tǒng)模塊處于物理內存0開始位置,并且0x90200處的空間也被挪作他用(用于高速緩沖),因此在進入保護模式后,在運行的第一個程序head.s中要重新設置這兩個表。即設置GDTR和IDTR指向新的GDT和IDT,描述符也需要重新加載。由于開啟分頁機制時這兩個表的位置沒有變動,因此無需再重新建立或移動表位置。

      3.除任務0以外,所有其他任務所需要的物理頁面與線性地址中不同或部分不同,因此內核需要動態(tài)的在主內存區(qū)中為他們作映射操作,動態(tài)的建立頁目錄項和頁表項。雖然任務的代碼和數(shù)據也在內核中,但由于它需要另行分配獲得內存,因此也需要自己的映射表項。

      任務0的地址對應關系

        任務0是系統(tǒng)中第一個人工啟動的任務。他的代碼段和數(shù)據段長度被設置為640kb。該任務的代碼和數(shù)據直接包含在內核代碼和數(shù)據中,是從地址0開始的640KB的內容,因此它可以直接使用內核代碼已經設置好的頁目錄和頁表進行分頁地址變換,同樣,它的代碼和數(shù)據在線性地址空間也是重疊的,對應的任務狀態(tài)段TSS0也是手工預設值好的,并且位于任務0數(shù)據結構中,參見sched.h第113行開始的內容。TSS0段位于內核sched.c程序的代碼中,長度為104字節(jié),具體位置參加圖5-23中"任務0結構信息"所示。三個位置的對應關系如圖5-15所示:

      ?

        由于任務0直接包含在內核中,不再需要為其重新分配內存頁,它運行時需要的內核態(tài)堆棧和用戶態(tài)堆棧空間也都在內核代碼區(qū)中,并且由于在內核初始化時(head.s)這些內核頁面在頁表項中的屬性都已經被設置成了0b111,即對應頁面用戶可讀寫且存在,因此用戶堆棧user_stack[]空間雖然在內核空間中,但任務0仍能對其進行讀寫操作。

      任務1的地址對應關系

        與任務0類似,任務1也是一個特殊任務。它的代碼也在內核代碼區(qū)域中。與任務0不同的是在線性地址空間中系統(tǒng)在使用fork()創(chuàng)建任務1(init進程)時為存放任務1的二級頁表而在內存中申請了一頁內存區(qū)域來存放,并復制了父進程的頁目錄和二級頁表項。因此任務1擁有自己的頁目錄和頁表表項,它把任務1占用的線性空間范圍64M-128M(實際上是64M-64M+640KB)也同樣映射到物理地址0-640KB處。此時任務1的長度也是640KB,并且其代碼段和數(shù)據段相重疊,只占用一個頁目錄項和一個二級頁表。另外,系統(tǒng)還會為任務1在主內存區(qū)域中申請一頁內存來存放它的任務數(shù)據結構和用作任務1的內核堆棧空間。任務數(shù)據結構中包括任務1的TSS段結構信息,如下圖:


        任務1的用戶態(tài)堆棧空間將直接共享使用處于內核代碼和數(shù)據區(qū)域(線性地址0-640KB)中任務0的用戶態(tài)堆棧空間user_stack[](參見kernek/sched.c,第67-72行),因此這個堆棧需要在任務1實際使用時保持“干凈”,以確保被復制用于任務1的堆棧不含有無用數(shù)據,在剛開始創(chuàng)建任務1時,任務0的用戶態(tài)堆棧user_stack[]與任務1共享使用,但當任務1 開始運行時,由于任務1映射到user_stack[]處的頁表被設置成只讀,使得任務1在執(zhí)行堆棧操作時將會引起寫頁面異常,從而由內核另行分配主內存區(qū)頁面作為堆棧空間使用。

        其他任務的地址對應關系

        對于被創(chuàng)建的從任務2開始的其他任務,它們的父進程都是init(任務1)進程,我們已經知道,在linux 0.11系統(tǒng)中共可以有64個進程同時存在,下面以任務2為例來說明其他任何任務隊地址空間的使用情況。

        從任務2開始如果任務號以nr表示,那么任務nr在線性地址空間中的起始位置被設定在nr*64M處,例如任務2的開始位置=nr*64M=2*64M=128M。任務代碼段和數(shù)據段的最大長度被設置為64M,因此任務2占有的線性地址空間范圍是128M-192M,共占用64M/4M=16個頁目錄項,虛擬空間中任務代碼段和數(shù)據段都被映射到線性地址空間中相同的范圍,因此它們也會完全重疊。圖5-17顯示出了任務2的代碼段和數(shù)據段在三種地址空間中的對應關系。


        在任務2被創(chuàng)建出來之后,將在其中運行execve()函數(shù)來執(zhí)行shell程序,當內核通過復制任務1剛創(chuàng)建任務2時,除了占用線性地址空間范圍不同以外(128M-128M+640K),此時任務2的代碼和數(shù)據在三種地址空間中的對應關系和任務1的類似。當任務2的代碼(init())調用execve()系統(tǒng)調用開始加載并執(zhí)行shell()程序時,該系統(tǒng)調用會釋放掉從任務1復制的頁目錄和頁表表項及相應的內存頁面,然后為新的執(zhí)行程序shell重新設置頁目錄和頁表表項。在執(zhí)行execve()函數(shù)時,系統(tǒng)雖然為任務2分配了64M的空間范圍,但是內核并不會立刻為其分配和映射物理頁面,只有當任務2開始執(zhí)行時由于發(fā)生缺頁而引起異常時才會由內存管理程序為其在主內存區(qū)中分配并映射一頁物理內存到其線性地址空間中,這種分配和映射物理內存的方法稱為需求加載(load on demand).

      ?

      ?

      ?

      轉載于:https://www.cnblogs.com/coderCaoyu/p/3618854.html

      總結

      以上是生活随笔為你收集整理的5.3.6 虚拟地址、线性地址和物理地址之间的关系的全部內容,希望文章能夠幫你解決所遇到的問題。

      如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

      主站蜘蛛池模板: 精品亚洲永久免费精品 | 色一情一乱一乱一区91av | 久久久久亚洲av成人片 | 狠狠躁夜夜 | 日韩一级网站 | 日韩少妇中文字幕 | 性欧美ⅴideo另类hd | 日韩精品v| 好吊视频一区 | 爱爱一级 | 狠狠人妻久久久久久综合蜜桃 | 色哟哟免费 | 朴银狐电影中文在线看 | 快射视频网 | 久久国产高清 | 日韩精品一区二区三区视频在线观看 | eeuss鲁丝片一区二区三区 | www.欧美.com| 久久网av | 男生插女生的网站 | 亚洲生活片 | 精品无码久久久久久久久成人 | 9999免费视频 | 女同一区二区三区 | 香港一级淫片免费放 | 久久97精品久久久久久久不卡 | 欧美日韩一二三 | 精品久久香蕉国产线看观看亚洲 | aaaaa黄色片 天堂网在线观看 | 欧美99久久精品乱码影视 | 久久久久久久久久久电影 | 日韩欧美国产三级 | 国产精品久久久久久亚洲调教 | 免费黄色av网站 | 国产性精品| 精品二区视频 | 色综合天天综合网天天看片 | 骚色综合 | 欧美自拍在线 | 强开小受嫩苞第一次免费视频 | 日韩aaaaa| 亚洲高清一区二区三区 | 日韩在线观看网址 | 婷婷一区二区三区 | 人人揉人人 | 黄色激情av | 亚洲一区二区不卡在线观看 | 国产xxxx | 丰满女人又爽又紧又丰满 | 亚洲艹| 国产91色| 亚洲欧美精品一区二区 | 久久黄色片视频 | 欧美少妇视频 | 国产最新av | 香蕉视频污视频 | 日韩精品视频中文字幕 | 欧美日韩91 | 另类视频在线观看 | 性感美女一区二区三区 | 精品99999 | 国产精品福利电影 | 韩国一级淫片免费看 | 在线黄色网页 | 九色91丨porny丨丝袜 | 爱情岛论坛成人av | www.99爱| 日韩精品一区二区在线 | 亚洲中文一区二区三区 | 欧美日韩成人在线视频 | 国产无码精品在线播放 | 18一20岁毛毛片| 国产午夜精品视频 | 农民人伦一区二区三区 | 丁香啪啪| 亚洲中文字幕在线一区 | 我色综合 | 无码黑人精品一区二区 | 中国女人高潮hd | 黄污视频网站 | 性久久久久久久久 | 激情爱爱网 | 黄色片18 | 精品久久久久一区二区 | 在线观看色 | 久草国产在线视频 | 爱蜜臀av | 夜夜夜夜爽 | 欧美日韩一区二区在线观看视频 | 在线观看福利视频 | 2021中文字幕 | 求av网站 | 性猛交ⅹxxx富婆视频 | 精品丰满少妇一区二区三区 | 九九午夜视频 | 神马电影久久 | 四虎影视永久地址 | 男人的天堂色偷偷 | 天堂av成人 |