一致程式碼片段和非一致程式碼片段

來源:互聯網
上載者:User

轉自:http://hi.baidu.com/formerdays/blog/item/5ddaad4e06564e0eb3de05c1.html

在儲存段描述符中,屬性地區的TYPE由位0-3組成。位3稱為E位,E=1,表示此描述符用於描述程式碼片段。位2稱為C位,位C=1,表示對應的程式碼片段是一致程式碼片段;位C=0,表示對應的程式碼片段不是一致程式碼片段.

所謂的“一致程式碼片段”,目的是為了共用,比如該一致程式碼片段的特權級是2,那麼即使是特權級是3的代碼,也可以訪問該一致代碼。也就是允許低許可權的代碼訪問 高許可權的代碼,而成功訪問之後,當前的特權級並不是目標代碼的特權級,而是原來代碼的特權級,也就是說,跳轉之後,CPL不變。要注意的是,一致程式碼片段的 DPL的定義,它定義的是允許訪問改一致程式碼片段的最高許可權,也就是說,如果一個許可權比一致程式碼片段中DPL的許可權還要高的話,是不允許訪問該一致程式碼片段的。
總結:一致程式碼片段的DPL規定了成功訪問它的最高許可權,高於這個許可權的代碼不能成功訪問它。成功訪問一致程式碼片段後,CPL並不會改變,還是保持為原來的許可權。這樣的設定主要是為了共用,比如一些函數庫之類的,而不用受到許可權的限制.對於非一致程式碼片段,要求CPL=DPL,RPL<=DPL.對於非一致程式碼片段,只允許同特權級的轉移
原因:
1.低特權級下不能調用高特權級的代碼,即保護高特權級的代碼.
2.高特權級下不能調用低特權級的代碼,為了避免低特權級代碼獲得高特權級從而能執行某些系統指令.1.
一致程式碼片段的轉移,轉移後的CPL不變
對於非一致程式碼片段的轉移與通過調用門轉移,轉移後的CPL就是段的DPL.
2.
而給其他段寄存器賦值(除CS以外)時,賦值後該寄存器的RPL就是選擇子的RPL.DPL是儲存段的允許存取權限級,CPL是CPU的當前特權級,代表當前程式的特權級。RPL是選擇子的請求存取權限級。對非一致程式碼片段,要求代表當前程 序特權級的當前程式特權級CPL必須等於儲存段的允許存取權限級DPL,也就是說,對於非一致程式碼片段,程式只能訪問相同特權級的儲存段。選擇子的請求訪問 特權級RPL必須高於儲存段的允許存取權限級DPL。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.