分段选择器与逻辑位址转换.PPT

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分段选择器与逻辑位址转换

作業系統 第十章 記憶體管理實作 記憶體管理實作 硬體上的支援不可或缺 Linux 使用 Intel 的分頁式分段功能來轉換邏輯位址與實體位址 跨平台:讓 Linux 能在其他非 Intel 平台上執行,記憶體管理模型須不受處理器差異影響 主記憶體分配: 核心:用來儲存核心程式碼與靜態核心資料結構 動態記憶體:其他的部分稱之。可動態給使用者行程或核心使用 動態記憶體的管理影響系統效能甚巨 第十章 記憶體管理實作 記憶體定址 硬體分段支援 Linux上的分段 硬體分頁支援 Linux上的分頁 頁框管理 記憶體區域管理 摘要 記憶體定址(1) Intel 80x86 提供分頁式分段的功能 3 種記憶體定址的方式: 實體位址:記憶體中實際的位址 線性位址:一塊 4 GB 大小的虛擬空間;系統利用此空間作分段與分頁 透過邏輯位址:可選擇到線性位址空間中一個分段裡的任一個位元組 透過分段單元的硬體電路: 把邏輯位址轉換成線性位址 若轉換成功,再透過分頁單元把線性位址轉換成實體位址 邏輯位址轉換 記憶體定址(2) Intel 架構下,記憶體架構分為 2 部分 分段:將程式分割成程式碼、資料與堆疊等模組,使多個工作互不干擾,在同一個處理器上執行 分頁:需求分頁,虛擬記憶體 分段的做法:將程式的分段劃分在線性位址空間裡 分段描述器:記錄此分段起始線性位址及分段的大小 可以找到分段的線性位址;避免存取超出此分段以外的空間 記憶體定址(3) 邏輯位址由分段選擇器和段偏移組成 透過分段選擇器,可從描述器表(如 GDT)中找到此分段的分段描述器?得到分段的起始線性位址 配合邏輯位址中的段偏移,就能定址到此分段在線性位址空間的位址 分頁的做法:將線性位址空間中的分段再細分成許多分頁 這些分頁可存放在記憶體或磁碟內 作業系統透過分頁目錄和分頁表格,可得分頁在實體記憶體或磁碟中的實際位址 硬體分段支援(1) Intel 微處理器以真實模式與保護模式進行位址轉換 保護模式下,Intel 架構提供 4G 位元組的實體位址空間(因處理器的位址匯流排為 32 位元) 真實模式下的硬體分段沒有作用 保護模式下的硬體分段支援 分段暫存器 分段描述器 分段選擇器 硬體分段支援(2) 分段暫存器: 儲存分段選擇器的內容,計有 6 個,分別為 cs、ss、ds、es、fs 與 gs cs 暫存器:指向一個包含程式碼的分段 ss 暫存器:指向目前的程式堆疊分段 ds 暫存器:指向靜態或是外部資料分段 其他 3 分段暫存器可指向任何分段 cs 暫存器另一重要功能:包含 2 個CPL位元(定義 CPU 目前權限等級) 若 CPL 數值為 0,表示最高等級 若 CPL 數值為 3,表示最低等級 以 Linux 系統為例,利用 CPL 的數值為 0 或 3 來表示目前是處於核心模式或使用者模式 硬體分段支援(3) 分段描述器: 每個分段都用一個 8 位元組的分段描述器來描述該分段的特徵,如分段大小、分段所在位置、存取控制權及狀態等資訊 儲存在 GDT(全域描述器表)或 LDT(區域描述器表)中 作業系統通常只定義一個 GDT,但每個行程都有各自的 LDT 主記憶體中,GDT 的位址會存放在 gdtr 暫存器;目前正在使用的 LDT 的位址存在 ldtr 暫存器 分段描述器格式 硬體分段支援(4) 分段描述器中的各項欄位: G 旗標:設定分段的單位大小 當 G 旗標設定為 1 ,分段單位為 4K 位元組;否則分段單位為 1 位元組 LIMIT欄位:描述分段的長度 CPU 把分段描述器中第 0 到 15 位元與第 48 到 51 位元合併成 20 個位元的分段界限,且依據 G 旗標的設定形成不同的分段界限範圍 如果 G 旗標設定為 0,分段大小會介於 1B(位元組)到 1MB;否則分段大小會介於 4KB 到 4GB BASE欄位:描述分段的基底位址 CPU 把分段描述器中的第 16 到 39 位元與第 56 到 63 位元共計 32 位元合併成分段開始的線性位址 S 旗標: 若此旗標是 0,表示此分段用來儲存核心資料結構的系統分段;否則代表它是一般的程式碼或資料分段 硬體分段支援(5) TYPE欄位:表示分段的型態與存取權限 DPL(描述器權限)欄位:設定存取該分段的權限 範圍由 0 到 3,數值為 0 時表示權限最大 D/B 旗標:表示分段包含程式碼或資料 兩者定義上不同,設定為 1 時表示段偏移的位址為 32 位元,否則只有 16 位元 P 旗標:設定為 1 時表示該分段在主記憶體中 第 53 個位元:是一個保留位元,通常被設定為 0 AVL欄位:可由作業系統自行定義使用; Linux 沒有使用此欄位 硬體分段支援(6) 分段選擇器:加速邏輯位址與線性位址

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档