2017-02-26 56 views
1

,我讀了「現代操作系統的Tanenbaum」這一段用戶模式和內核模式在可用機器指令總數方面有什麼區別?

大多數計算機都具有兩種工作模式:內核 模式和用戶模式。操作系統是最基本的軟件,以內核模式運行(也稱爲管理模式)。在這種模式下,它可以完全訪問所有的硬件,並且可以執行機器能夠執行的任何指令。其餘的軟件以用戶模式運行,其中只有一部分機器指令可用。

我不明白他們如何根據機器指令描述這兩種模式的差異,在用戶端任何軟件都有能力在硬件級別進行任何更改,就像我們的軟件可能會影響CPU的功能可以和註冊表的細節一起玩,所以我們怎麼說在用戶模式下,我們只有機器指令的子集可用?

+0

隨時爲任何疑問。 –

回答

0

那麼,在user-mode,肯定有一個可用的指令子集。這就是我們擁有System Calls的原因。

例子:

用戶希望創建C.他一個新的進程不能做,沒有進入kernel-mode,因爲某些指令集只提供給kernel-mode,所以他使用system callfork,即執行創建新流程的指令(user-mode中不提供)。所以System call是請求OSkernel的服務爲用戶做些事的機制,他/她無法爲其編寫代碼。

在從上面的鏈接以最好的方式概括起來摘錄:

程序通常僅限於它自己的地址空間,使得其 不能訪問或修改其他正在運行的程序或操作系統 本身並且通常被阻止直接操縱硬件設備(例如,幀緩衝器或網絡設備)。但是,很多正常的應用程序顯然需要訪問這些組件,因此操作系統 可以使用系統調用來爲這些操作提供明確的安全實現。 操作系統在最高級別的特權下執行,並且 允許應用程序通過系統調用請求服務,這些服務通常是通過中斷啓動的 。一箇中斷會自動將 CPU置於某個提升的特權級別,然後將控制權交給 內核,該內核確定是否應將所請求的服務授予調用程序 。如果該服務被授予,則內核執行一個特定的指令集,在該指令集上調用程序沒有 直接控制,將特權級別返回到調用的 程序的特權級別,然後將控制權返回給調用程序。

2

僅在內核模式下可用的指令往往很少。這些說明僅用於管理系統。

例如,大多數處理器都有一個HALT指令,用於停止用於系統關閉的CPU。顯然你不希望任何用戶能夠執行HALT並停止所有人的計算機。然後這些指令只能在內核模式下訪問。

處理器使用處理程序表來處理中斷和異常。操作系統創建一個列出這些事件處理程序的表格。然後它加載寄存器給出表格的位置(和大小)。加載這個寄存器的指令只是內核模式。否則,任何應用程序都可能對系統造成嚴重破壞。

這些性質的指令將在用戶模式下執行時觸發異常。

這樣的說明往往數量不多。

相關問題