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

來源:互聯網
上載者:User
 

上轉載的一篇文章, 字字珠璣、句句精華。

之所以出現這個定義是因為系統要安全:核心要和使用者程式分開,核心一定要安全. 不能被使用者程式幹涉.
但是有時候使用者程式也需要讀取核心的某些資料,怎麼辦呢?

於是os將核心程式開闢一些可以供用使用者程式訪問的段.但是不允許使用者程式寫入資料.

1.核心不用知道使用者程式的資料.核心不用調用使用者程式的資料.核心不用轉移到使用者程式中來.
2.使用者程式只能訪問到核心的某些共用的段.我們稱這些段為一致程式碼片段
3.使用者程式不能訪問核心不共用的段.

1.在x86中的資料和代碼是按段來存放的:[section]
2.程式是通過選擇子/門調用等等來在段之間來回走動的.
3.每一個選擇子/門調用選擇子是有分等級的:這個是在選擇符的結構中:RPL(最後2位) 
4:每一個程式碼片段/資料區段也是有分等級的.:這個是在gdt描述符中.

調用的選擇符和被調用的段都分了等級.哪麼這些等級在哪裡使用呢?在一致程式碼片段.也就是共用段中使用,既然是共用所以就有規則了:

對於一致程式碼片段:也就是共用的段.
1.特權級高的程式不允許存取權限級低的資料:核心態不允許調用使用者態的資料.(下文有解釋)
2.特權級低的程式可以訪問到特權級高的資料(如訪問核心某些共用的資料區段).但是特權級不會改變:使用者態還是使用者態.

對於普通程式碼片段.也就是非一致程式碼片段:
1.只允許同級間訪問.
2.絕對禁止不同級訪問:核心態不用使用者態.使用者態也不使用核心態.

總結:似乎這些東西跟我們初學者預想的那樣不同.核心態是老大.想用訪問誰都可以.其實錯了.結果恰恰相反.
這是因為防止使用者篡改核心態的資料.導致核心態執行使用者代碼.而造成核心崩潰.
核心壞了.什麼事都可能發生.

 

源地址:http://hi.baidu.com/walkingman520/blog/item/4463e21133a42513b9127b91.html

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.