2011-01-31 119 views
3

我在閱讀「Linux設備驅動程序第三版」,並遇到了一些我不太瞭解的內核項目。在這個論壇上的希望大師將幫助我。關於Linux內核內部問題

1)Linux內核是否在內部使用虛擬或物理地址進行操作?特別讓我困惑的是,有幾種類型的地址(邏輯,虛擬,總線和物理),它們都是有效的,可由內核操作。

2)這是正確的,CPU指令不能直接尋址存儲在外圍設備中的數據,因此使用可尋址的存儲器,即緩衝區來達到這些目的?

4)請求信號量(值爲0)時進程是否可以休眠並等待它?

4)原子操作 - 是否由特定的CPU指令保證?

+0

您可能要問這對unix.stackexchange.com爲好。或者你有任何更具體的問題。只要你能提出正確的問題,你就會得到非常深入的答案。 – Falmarri 2011-01-31 05:47:09

+0

Falmarri,感謝您的鏈接。也會在那裏嘗試我的運氣。 – Mark 2011-01-31 06:23:03

回答

5
  1. 一些特殊比特(例如初始自舉)在物理地址實模式操作,但大多數內核代碼(所有用C語言編寫的部分)在一個虛擬地址空間中運行。您會看到帶有註釋的指向其他地址空間的指針,以提醒您不要直接解引用它們。
  2. 在各種其他地址空間(例如PCI設備的配置空間)和內核內存之間執行拷貝有特殊功能。取決於體系結構,某些部分可以直接映射。
  3. 是的。
  4. 不一定。對於缺乏原子操作的體系結構,可以通過停止所有其他處理器(單核簡單)和禁止中斷來保證原子性。