2013-10-24 21 views
-1

在一個類中,prof稱「一個[彙編]指令知道它是以特權模式還是用戶模式運行,因爲如果產生了陷阱,那麼它就是用戶模式」。指令如何知道它是以特權模式還是用戶模式運行?

首先,我假設它不能是任何陷阱,而是一個特定的陷阱,說該命令不能在用戶模式下運行。其次,這似乎非常低效:運行整個命令並檢查是否有陷阱。爲什麼沒有設置標誌或什麼?這難道不是說如果它不起作用,那麼我們知道有問題嗎?所以真的沒有辦法檢查?

回答

0

這取決於您的平臺(即ARM,x86等)。我主要使用ARM工作,所以我的答案可能是ARM特定的,但我已儘可能通用。

通常,CPU會跟蹤它所處理的處理器模式,並檢查每條指令在執行時的狀態。這是用硬件完成的,而不是用軟件完成的,所以你不用擔心它是否有效(把它留給硬件開發者)。

如果指令被硬件困住,因爲沒有足夠的權限,CPU通常會在特權模式下的設置位置開始執行。這個設置的位置是一個通常在內核中的陷阱處理程序。陷阱處理程序然後收集一些有關造成陷阱的信息並適當處理它。

+0

你是什麼意思,它在硬件上完成,所以效率並不重要?陷阱是軟件,不是嗎?即使沒有,我也沒有看到你的理由「不要擔心」 – Celeritas

+0

陷阱處理程序是用軟件實現的,但其底層機制仍然是硬件。我說你不必擔心它是如何在硬件中實現的,因爲它通常不受軟件開發人員的控制 – tangrs

相關問題