2012-01-14 108 views
2

如鍵盤輸入作爲掃描碼可以從調用獲得中斷09 IRQ1或類似的人或通過在段直接訪問BIOS鍵盤緩衝區0040H爲什麼鍵盤驅動程序需要作爲鍵盤輸入可以從中斷或通過訪問鍵盤緩衝區?

爲什麼出現一個單獨的鍵盤驅動程序的要求?還是鍵盤驅動程序本身爲OS執行上述操作之一?

我的意思是當我們可以在BIOS鍵盤緩衝區或某些中斷例程時進行鍵盤輸入爲什麼需要寫一個「鍵盤驅動程序」,因爲在像minix這樣的一些操作系統中,有一個單獨的鍵盤河該OS的驅動程序?

回答

0

對驅動程序有要求,因爲驅動程序是操作系統用來與設備進行交互的抽象機制,既是真實的也是想象的。

考慮/ dev/random,這是一個隨機數發生器。操作系統知道它可以從該設備「讀取」並獲得一個隨機數。隨機數是如何產生的?操作系統不關心。該過程被駕駛員隔離並提取出去。它可能是一個僞隨機算法。它可能是主板上的一種特殊設備。它可能是一臺觀看高峯時間流量的攝像機。誰知道。關鍵在於操作系統並不關心它是如何完成的,它只知道通過使用各種驅動程序,它可以與大多數任何硬件(真實的或合成的)進行通信。

就像您正在編寫操作系統一樣,您不會簡單地從鍵盤緩衝區加載內存,但是您只需編寫一次代碼並調用子例程,驅動程序是更高級別的抽象機制,執行類似任務。

+0

謝謝您的建議先生。現在我的操作系統處於原始階段。當它長大一點時,我會做那個先生。 – geek1000 2012-01-14 04:39:02

1

一般來說現代操作系統在內核模式和用戶模式之間有所區別。內核擁有更高的權限,只有專用的代碼才能在該模式下運行。訪問硬件資源通常是內核模式的領域。另一方面,CPU阻止用戶模式代碼訪問這些資源。

我不知道你在說哪個操作系統,但實質上你所說的驅動程序就是這個專門的代碼。您的用戶模式代碼被禁止直接訪問資源,並且必須與驅動程序通信。

如果你考慮一個比較簡單的或者更舊的操作系統,例如沒有區別的MS-DOS,那麼所有的代碼都可以訪問硬件資源。但我不知道任何允許這個的現代通用操作系統。

這是一個非常好的維基百科文章來解釋Kernel Model Programming的想法。

在Windows(和大多數現代操作系統),也就是在「用戶模式」運行的代碼和代碼之間的區別 是在「內核模式」運行 。本章將指出一些 的差異。首先,英特爾CPU具有稱爲環 的操作模式,其指定可用於運行代碼的指令類型和存儲器。有四個環:

  • 環0(也稱爲內核 模式)可以完全訪問每個資源。這是運行Windows內核的模式。
  • 環網1和環網2可以定製,其級別爲 ,但通常未使用,除非有虛擬機 正在運行。
  • 環3(也稱爲用戶模式)限制訪問 資源。

這樣做的原因是因爲如果所有節目在 內核模式下運行,它們將能夠覆蓋每個人的記憶和 可能導致整個系統時,他們崩潰。

+0

謝謝先生。我知道內核和用戶模式previlages之間的區別。所以鍵盤驅動程序不會做任何特別的事情,除了我所說的以上之外。我對嗎? – geek1000 2012-01-14 04:25:26

+0

這取決於。駕駛員的主要工作是管理重建。所以是的,在這種情況下,它可能會這樣做。然而,現代鍵盤可能具有許多其他功能,因此驅動程序可能具有更多的功能。 – 2012-01-14 04:28:14

+0

謝謝先生。 – geek1000 2012-01-14 04:43:27