Linux下如何處理DMA與Cache的問題

2021-06-28 01:46:39 字數 471 閱讀 3781

linux下如何處理dma與cache的問題

當一塊記憶體同時開始dma和cache時,會出現記憶體一致性問題:

1).在dma操作前,假如cpu對記憶體進行了操作但是結果只是保持在cache中,沒有被更新到記憶體,dma操作的記憶體資料就會是錯誤的。

2).dma操作後,記憶體資料已經更新,假如cache中仍然保持的舊資料,cpu操作會出錯。

對於情況(1)呼叫cache的flush操作:

dma_sync_single_for_device(port->dev,

pdc->dma_addr,

pdc->dma_size,

dma_to_device);

對於情況(2)呼叫cache的invalidate操作:

dma_sync_single_for_cpu(port->dev, pdc->dma_addr,

pdc->dma_size, dma_from_device);

Linux如何處理訊號

其實這個操作就是向前臺程序傳送sigint訊號。以下是linux支援的訊號列表 使用kill n pid或在 中使用int kill pid t pid,int sig 可以向乙個程序傳送訊號。如果 中沒有顯式的用signal去註冊訊號對應的控制代碼,那就會採用預設的處理方式,例如接收到sigint...

Linux如何處理共享中斷

linux可以讓多個裝置共享乙個中斷號,而且共享同一中斷的中斷處理程式形成乙個鍊錶,核心對每個中斷處理程式都要執行,那麼,沒有產生中斷的裝置本 該靠邊站的,它的中斷處理程式也被執行了?到底是怎麼會事?實際上 共享的處理程式與非共享的處理程式在註冊和執行方式上比較相似,但差異主要有以下三處 reque...

linux 硬碟滿了如何處理

事件源於在伺服器執行乙個指令碼程式 好好的指令碼突然報錯,還以為指令碼出現問題了。細看報錯原因 具體報錯資訊已經忘記了 是沒有可用空間。從沒遇見過這個情況,怎麼辦呢?一 確定是不是真的是磁碟空間不足 輸入命令 df lh 檢視磁碟資訊 很明顯 filesystem下的掛載點 dev xvda1 下的...