1. 程式人生 > >操作系統學習(十一) 、一致代碼段和非一致代碼段

操作系統學習(十一) 、一致代碼段和非一致代碼段

操作 使用 異常 不知道 .html 代碼段 tails 用戶 logs

一、概述

操作系統保護模式下把代碼段分為一致代碼段和非一致代碼段的原因是:內核程序和用戶程序要分開,內核程序不能被用戶程序幹擾。但是有時候用戶程序也需要讀取內核的某些數據,於是操作系統就從內核程序中分配一些可以供用戶程序訪問的段,但是不允許用戶程序寫入數據,用戶程序訪問這些段時遵循以下規則:

  1. 內核程序不知道用戶程序的數據,不調用用戶程序的數據,也不轉移到用戶程序中來
  2. 用戶程序只能訪問到內核的某些共享段,這些段稱為一致代碼段
  3. 用戶程序不能訪問內核不共享的段

二、一致代碼段

一致代碼段:簡單理解就是操作系統拿出來被共享的代碼段,可以被低特權級的用戶程序直接調用訪問的代碼段,這些代碼段,通常是不去訪問受保護的資源和某些類型異常處理。

一致代碼段訪問限制:

  1. 特權級高的程序不允許訪問特權級第的數據:即內核態不允許調用用戶態的數據。
  2. 特權級低的程序可以訪問到特權級高的程序,但是特權級不會改變,即不會從用戶態切換到內核態。

三、非一致代碼段

非一致代碼段:為了避免低特權級的訪問而被操作系統保護起來的系統代碼

非一致代碼段訪問限制:

  1. 只允許同特權級訪問。

  2. 絕對禁止不同特權級直接訪問:內核態不去用戶態,用戶態也不使用內核態。

  3. 通常低特權級代碼必須通過門調用來實現對高特權級代碼段的訪問和調用。

有關不同特權級代碼段之間的轉移控制請看 代碼段之間轉移控制時的特權級檢查

*參考文章: https://blog.csdn.net/feijj2002_/article/details/4597174*

操作系統學習(十一) 、一致代碼段和非一致代碼段